Почему нам нужно разрешение выполнения изменить каталог в Unix?

Вот полномочия, данные на машине:

drwxrwxrwx   4 root     root         512 May 16 09:32 STC_10
drwxrw-rw-   4 root     root         512 May  5 11:22 STC_11

Теперь вот проблема:

cd STC_11
-bash: cd: STC_11: Permission denied

Но эти работы:

-bash-4.0$ cd STC_10
-bash-4.0$ ls
Codemgr_wsdata  src

Почему нам нужно разрешение выполнения сделать досягаемость тот каталог STC_11? Полномочия чтения-записи привычки достаточны?

ls команда на STC_11 работал бы.

5
задан 03.08.2017, 20:03

0 ответов

Для следующей демонстрации я создал несколько каталогов:

$ mkdir read_only
$ mkdir exec_only
$ mkdir r_e
$ touch read_only/cant_open
$ echo foo > read_only/cant_open 
$ echo bar > exec_only/cant_find
$ echo baz > r_e/normal
$ chmod 400 read_only/
$ chmod 100 exec_only/
$ chmod 500 r_e/

Читайте полномочия достаточны для списка содержания каталога: ls(1) не может найти детали о файле, но он может сказать Вам название файла.

$ ls read_only/
ls: cannot access read_only/cant_open: Permission denied
cant_open

Но доступ только для чтения не позволяет Вам пересечь каталог:

$ cat read_only/cant_open 
cat: read_only/cant_open: Permission denied

Выполнитесь полномочия достаточны для пересечения каталога (включая cd), но Вы не можете перечислить содержание:

$ ls exec_only/
ls: cannot open directory exec_only/: Permission denied

Даже при том, что Вы не можете получить список файлов в каталоге, можно все еще пересечь каталог:

$ cat exec_only/cant_find
bar

Оба чтения и выполняют работу полномочий, как Вы ожидаете:

$ ls r_e
normal
$ cat r_e/normal 
baz

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

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

12
ответ дан 07.12.2019, 16:51

По определению 'x' разрешение для каталогов имеет особое значение - это означает, что у Вас есть разрешение к 'CD' в него.

3
ответ дан 07.12.2019, 16:51

x разрешение не просто означает, "Выполняются". Это зависит от того, где это применяется. На файле это дает разрешение выполнить файл. На каталоге это дает разрешение измениться на каталог. Я не думаю, что это имеет непосредственное отношение к структуре файловой системы.

1
ответ дан 07.12.2019, 16:51

Теги

Похожие вопросы