5

Вот разрешения, предоставленные на машине:

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 будет работать.

3 ответа3

12

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

$ 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 о простых механизмах, используемых для умных вещей: только эти два элемента позволяют легко реализовать безопасность на основе возможностей. Если бы я поместил несколько тысяч файлов в каталог, но хотел, чтобы только некоторые люди читали предназначенные для них файлы, я мог бы легко выбрать неосуществимые имена файлов и выдавать имена файлов, когда люди дают мне деньги на чтение файлов. :)

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

3

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

1

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

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