4

Правильно ли я понимаю разрешение на каталоги в Linux/Unix?

  1. Если ваш каталог имеет только права доступа r (чтение), вам разрешено просматривать содержимое каталога (какие файлы там находятся), но вы не можете этого сделать, потому что вы не можете перейти (cd) в этот каталог (из-за отсутствия разрешений x). Вы также не можете видеть содержимое каталога (какие файлы там находятся) снаружи каталога (например, с помощью ls directoryname/*). Вы также не сможете читать (видеть) содержимое файлов, расположенных в таком каталоге, с помощью команды cat и more команд (даже если у вас есть права на чтение этих файлов). Вы также не сможете изменять (записывать) файлы (даже если у вас есть права на запись для них), если эти файлы расположены в таком каталоге (независимо от того, что вы используете cat >> , echo >> , cp или какой-либо текстовый редактор) , Таким образом, с моей точки зрения, иметь только r разрешений для каталога равносильно отсутствию абсолютно никаких разрешений для каталога.

  2. Если у вашего каталога есть только разрешения x (выполнить), вы можете перейти (cd) в каталог, но вам не разрешено просматривать (ls) содержимое каталога (поскольку у вас нет прав на чтение каталога). Если каталог имеет только разрешение x и содержит файл, для которого у вас есть права r (чтение) и w (запись), вы все равно не сможете открыть этот файл (хотя бы в некоторых) текстовых редакторах (например, mcedit). Но вы сможете прочитать контекст файла, используя такие команды, как cat или more . Вы все сможете изменить содержимое файла, используя echo >> или cat >> . Так, мне кажется, что это x , что позволяет пользователям "читать" и "писать" существующие файлы в каталоге (если файлы имеют соответствующие разрешения тоже).

  3. Если каталог имеет разрешения r и x но не имеет разрешения w (запись), вы не можете изменить содержимое каталога (набор файлов, которые там находятся). Например, вы не можете создать новый файл или удалить существующий в каталоге. Но вы все еще можете изменять содержимое существующих файлов. Итак, вам нужно w разрешений для создания или удаления файлов в каталоге.

    Добавлено:

  4. Также интересно упомянуть, что w разрешение на каталог необходимо, но недостаточно для создания и удаления файлов в каталоге. Если каталог имеет только разрешение w вы не сможете добавлять / удалять файлы из / в каталог. Для этого вам нужно иметь разрешение x для каталога (дополнительно к разрешению w).

3 ответа3

5

С этой страницы в Дартмутском колледже:

Помните, что для чтения файла необходим доступ к каталогу, в котором он находится, и доступ для чтения к самому файлу. Чтобы записать файл, вам нужно выполнить доступ к каталогу И записать доступ к файлу. Чтобы создавать новые файлы или удалять файлы, вам нужен доступ для записи в каталог. Вам также необходимо выполнить доступ ко всем родительским каталогам обратно в корень. Групповой доступ прервется, если родительский каталог станет полностью закрытым.

Так что из моего прочтения вашего вопроса и этой страницы, похоже, вы поняли это.

3

Разрешение r дает доступ к СПИСКУ имен файлов (но не метаданных).

Разрешение x дает доступ к метаданным файла (индекс, размер, владелец, группа, привилегии и т. д.) (но не имеет доступа к СПИСКУ имен файлов).


Сначала ls перечисляет LIST имен файлов, а затем обращается к метаданным файла для каждого файла. Метаданные доступны через stat .

Вот примеры, представьте себе каталог "example", содержащий файл "data".

С разрешениями r :

  • cat /example/data потерпит неудачу (нет доступа к метаданным файла)

  • ls -lA example будет частично успешным (предоставлен доступ к LIST имен файлов, но не метаданных)

  • cd example потерпит неудачу (текущий каталог подразумевает доступ к метаданным, которые недоступны)

С x разрешениями:

  • cat /example/data будет успешным (доступ к метаданным файла предоставлен) (доступ к LIST не требуется)

  • ls -lA example завершится неудачно (нет доступа к LIST имен файлов)

  • cd example будет успешным

  • ls потерпит неудачу (нет доступа к LIST имен файлов)

  • ls -l data будут успешными (доступ к метаданным предоставлен)

2

Вопрос говорит:

Если ваш каталог имеет только разрешение "r" (чтение), вам разрешено просматривать содержимое каталога (какие файлы там находятся), но вы не можете этого сделать, потому что вы не можете перейти ("cd") в этот каталог (из-за отсутствие разрешений "х").

Да, вы можете сделать это, вы можете увидеть список файлов, которые содержатся в каталоге:

$ mkdir mydir
$ echo text > mydir/myfile
$ chmod a-wx mydir
$ ls -lA
total 4
dr--r--r-- 2 hcs hcs 4096 2010-02-28 22:12 mydir
$ ls -lA mydir
ls: cannot access mydir/myfile: Permission denied
total 0
-????????? ? ? ? ?                ? myfile

Но вы не получите доступ к какой-либо другой информации из файла, кроме его имени, как показывает список.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .