Правильное понимание прав для 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 -a» на Solaris, у которого его нет?
  • Являются ли cp -r и cp -R одинаковыми?
  • Rsync, cp или любая утилита добавляют специальные отфильтрованные данные из исходного файла в анализируемый файл
  • `cp` разрешено при копировании файла, принадлежащего` root`
  • Могу ли я запретить создание файлов с определенными разрешениями?
  • Почему «find / -name» * .txt '| cp / junk "не работает?
  • найти файлы с определенными атрибутами, переименовать их в их имя каталога, скопировать их в другое место
  • Зачем использовать diff / patch, когда проще просто использовать cp
  • Копирование большого файла вызывает чрезмерный обмен
  • Interesting Posts

    Есть ли команда для отображения всех открытых дисплеев на машине?

    Использование «find» для отправки мне по электронной почте тех файлов, которые были изменены недавно

    Инвертировать цвета при настройке двухэкранных / двух мониторов?

    Как сделать несколько подстрок сразу заменить в bash?

    мой Wi-Fi Wireless-N 2230 не может подключаться случайно

    если инструкция не работает должным образом

    Эффект $ LANG на терминале

    Каков параметр «i» команды set в оболочке bash?

    Загрузитесь в терминал по умолчанию, но по-прежнему загружаете графический интерфейс в Debian?

    получить первый аргумент CLI после опций в shell scipt

    С чем связаны термины CC, LD и SHIPPED во время процесса компиляции ядра ядра?

    Удалите определенное расширение из всех файлов в каталоге

    Espeak показывает некоторые предупреждения и ошибку ввода-вывода

    crontab дает только 2045 строк вывода вместо 6000 строк

    SSH странное поведение входа – возможно, человек в средней атаке

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