Правильное понимание прав для cp

Я пытаюсь понять использование разрешений для команды cp в unix.

  1. Каковы разрешения, необходимые для копирования файла в каталог
  2. Каковы разрешения, необходимые для копирования из каталога?

Я предполагаю, что для моего первого вопроса директория потребует разрешения на выполнение для выполнения операции, и файлу потребуются права чтения для чтения двоичного файла, а затем выходному файлу потребуются права на запись.

Для второго самому каталогу потребуются разрешения на выполнение для выполнения операции копирования, и для файла потребуется разрешение на чтение для извлечения данных из файла.

Может ли кто-нибудь сказать мне, ошибочна ли моя логика?

3 Solutions collect form web for “Правильное понимание прав для cp”

  1. тебе нужно:

    исходный каталог: исходный файл запуска и чтения: разрешение на чтение.
    целевой каталог: разрешение на выполнение и запись.
    целевой файл: вам не нужно какое-либо разрешение, так как оно не выходит, прежде чем вы его скопируете. или разрешение записи, если файл существует.

  2. тебе нужно:

    исходный каталог: разрешение на выполнение и чтение.
    исходный файл: разрешение на чтение. целевой каталог: разрешение на выполнение и запись. целевой файл: вам не нужно какое-либо разрешение, так как оно не выходит, прежде чем вы его скопируете. или разрешение записи, если файл существует.

Как вы видите, эти два вопроса на самом деле одинаковы. Если вы хотите убедиться, вы можете просто проверить его самостоятельно всего за несколько минут.

  1. Ваш пользователь должен иметь хотя бы права на запись и выполнение в целевом каталоге любым средним значением (т. Е. Если ваш пользователь является владельцем, по крайней мере, разрешениями 300 , если ваш пользователь не является владельцем, но входит в группу как минимум с разрешениями 030 и если ваш пользователь не является владельцем и не входит в группу, по крайней мере разрешения 003 )

  2. Ваш пользователь должен иметь хотя бы права на чтение и выполнение в исходном каталоге любым средним значением (т. Е. Если ваш пользователь является владельцем, по крайней мере, разрешениями 500 , если ваш пользователь не является владельцем, но входит в группу как минимум с разрешениями 050 и если ваш пользователь не является владельцем и не входит в группу, по крайней мере разрешения 005 )

Причина, по которой требуется разрешение на запись (в первом случае) и разрешение на чтение (во втором случае), довольно понятно; причина, по которой необходимо иметь разрешения на выполнение в обоих случаях, заключается в том, что для записи / чтения файлов обязательно иметь доступ к каталогу, что разрешено только в том случае, если у пользователя есть разрешение на выполнение в целевой / исходной директории.

Во-первых, вы должны понимать, что каталог без разрешения на выполнение бесполезен. Вы можете перечислить содержимое, если у вас есть разрешения на чтение, но даже это приведет к ошибке без разрешения на выполнение, и ВСЕ, что вы получите, это имена файлов внутри, никакой другой информации о них.

Затем поймите, что разрешения на выполнение в каталоге позволяют вам получать доступ к содержимому независимо от прав на чтение -BUT, только если вы уже знаете точное имя файла в каталоге. Без разрешений на чтение вы не сможете указать содержимое каталога, но выполнение позволяет получить файлы в каталоге, если вы знаете имя файла, и если у вас есть правильные разрешения для самого файла.

Затем поймите, что права на запись в каталоге позволяют добавлять файлы и файлы DELETE , независимо от разрешений на файлы. Это означает, что можно удалить файлы, которые у вас даже нет разрешения на чтение.

Аналог, который может быть полезен, – это телефонная книга. Каталог – это только каталог. Это НЕ папка. Это как телефонная книга, и все, что она говорит вам, – это имя файла и связанный «номер телефона» (называемый номером inode). Разрешения на чтение в каталоге позволяют читать телефонную книгу. Выполнение разрешений позволяет набирать номера в телефонной книге. Разрешения на запись позволяют записывать имена файлов и номера в телефонной книге, а также удалять имена и номера файлов, которые уже присутствуют. Обратите внимание: если у вас есть разрешения на выполнение (возможность набора номера), но не разрешение на чтение (возможность чтения телефонной книги), вы все равно можете позвонить по телефону, если вы знаете имя файла. (Аналогия немного расходится, потому что в этом случае вам не нужен номер inode, просто имя файла.)

И, что очень важно, обратите внимание, что это ничего не говорит о том, насколько успешным будет ваш телефонный звонок, только чтобы вы могли позвонить. Именно тогда мы получаем разрешения на доступ к файлам. Если вы вообще можете позвонить, т. Е. У вас есть разрешения на выполнение в каталоге (и либо знаете имя файла уже, либо имеете разрешения на чтение в каталоге), тогда права на файлы начинают иметь значение.

Если у вас есть разрешения на чтение файла, человек на телефоне ответит на ваши вопросы (укажите информацию, которую они имеют, то есть сообщит вам содержимое файла). Если у вас есть права на запись, вы можете изменить их ответы (изменить содержимое файла). Если у вас есть разрешения на выполнение, вы можете запустить файл как программу … У меня нет аналогии для этого.

Обратите внимание, что вы можете изменить содержимое файла без разрешения на запись в каталоге, потому что вы не меняете каталог (телефонную книгу), а только файл, для которого в каталоге есть номер. Но вы не можете создать новый файл в каталоге без разрешения на запись в каталоге, потому что он включает в себя запись нового имени и номера в «телефонную книгу». Точно так же, если у вас есть права на запись в каталоге и вы получите какой-то рывок на телефоне, который не ответит на ваши вопросы и не примет ваши инструкции (никаких разрешений на запись, никаких прав на чтение для файла), вы все равно можете помять свое имя из телефонная книга.

Я тоже подумал об этой аналогии; это очень точно во многих отношениях, и почему каталог называется «каталогом». Надеюсь, это помогает понять связь между разрешениями каталога и разрешениями на файлы. (Существует важная функция, которую я не рассматривал, называемый «липким битом» в каталоге, но вы можете посмотреть, что один по своему усмотрению.)

  • Как скопировать список файлов и настроить имена файлов назначения на лету?
  • Разница между cp -r и cp -a
  • как cp -f отличается от cp -remove-destination?
  • Как скопировать папку, в которой владельцы и разрешения не сохранены?
  • ошибка: cp: невозможно проверить 'release \\ - 1.0.0 \ r.jar': такого файла или каталога нет
  • Как «cp» обрабатывает открытые файлы?
  • Понимание команды копирования
  • cp, запущенный из результатов кода, не может stat '/ tmp / somedir' работает в оболочке
  • Как мне скопировать папку, а не только содержимое папки?
  • копирование параллельных каталогов Почему cp -r работает таким образом?
  • Что произойдет, если скрипт cron попытается скопировать каталог одновременно с записью другого процесса?
  • Interesting Posts

    Аппаратное ускорение перекодирования h.264 на i.MX6

    Как устройства добавляют записи DNS в локальной сети?

    fstrim cronjob не работает на Linux Mint 17.2

    Каков верный способ пожара найти все файлы и / или путь, содержащий 2 ключевых слова?

    Postfix; Почтовый адрес электронной почты для URL-адреса

    Драйвер для беспроводной сетевой карты Intel 2200BG

    CrashPlan переносит резервное копирование из Windows в Linux?

    Как ограничить имена файлов ext4 только теми именами файлов, которые указаны в FAT?

    Копирование данных csv при одновременном заполнении последовательной колонки

    Как заставить дисплей заснуть, когда экран заблокирован?

    Как добавить строки из файла списка имен в другой файл?

    Рисование на экране

    Как grep «блокировать» строки из странного файла

    Предотвращение запуска таймера systemd при запуске

    Используйте sed и sed самостоятельно, чтобы выполнить подстановку в строке, начинающейся с определенной строки, только если!

    Linux и Unix - лучшая ОС в мире.