Почему папка должна быть исполняемой?

29

Разрешение для файлов:

chmod 664 myFile // rw-rw-r--

И для папок:

chmod 774 myFolder // rwxrwxr--

Если я использую только разрешение «чтение и запись», папки не будут отображать свое содержимое.

В чем причина этого?

Кайо
источник

Ответы:

14

Поскольку вы не можете «выполнить» каталог, бит выполнения был использован для лучшего использования. Бит выполнения в каталоге позволяет получить доступ к элементам, которые находятся внутри каталога, даже если вы не можете отобразить содержимое каталога.

$ mkdir -p dir/
$ echo 'Hello World!' > dir/file
$ chmod 000 dir/
$ ls -al dir/
ls: cannot open directory dir: Permission denied
$ cat dir/file
cat: dir/file: Permission denied
$ chmod +x dir/
$ ls -al dir/
ls: cannot open directory dir: Permission denied
$ cat dir/file
Hello World!

Из chmodсправочной страницы:

Буквы rwxXst выбирают биты режима файла для затронутых пользователей: чтение (r), запись (w), выполнение (или поиск каталогов) (x) , выполнение / поиск, только если файл является каталогом или уже имеет разрешение на выполнение для некоторых пользователь (X), установка идентификатора пользователя или группы при выполнении (ях), ограниченный флаг удаления или фиксированный бит (t).

Zaz
источник
42

Каталоги (обычно они не называются папками в * nix) имеют другое значение для битов разрешений, чем обычные файлы.

Для каталогов, запись позволяет создавать новые файлы внутри него.

Чтение позволяет вам перечислить файлы внутри него.

Выполнить позволяет вам ввести его и получить доступ к файлам (или другим каталогам) внутри.

Daenyth
источник
2
Самый простой способ запомнить - представить, как выполняется двойной щелчок по чему-либо. Когда вы дважды щелкаете по каталогу (или cd), вы вводите (выполняете) его.
Джон Т
Имейте в виду, что простой доступ для записи в каталог не позволит вам создавать новые файлы. Для этого вам также необходимо разрешение на выполнение в каталоге.
Матиас Браун
Означает ли «доступ к файлам (или другим каталогам)», что я могу видеть файлы, то есть перечислять их, но не могу их просматривать, или я могу видеть файлы, то есть перечислять их и читать их?
Вадасамбар
2

Разрешения на выполнение каталога позволяют вам просматривать его, используя ресурсы, содержащиеся в нем.

Игнасио Васкес-Абрамс
источник
1

Бит «выполнить» фактически означает «поиск» применительно к каталогам (из man chmod). Это кажется разумным, так как выполнение не имеет значения для каталога.


источник
0

xБит на папке ссылается на поиск индексации / каталог / список; ничего из этого невозможно, если вы держите этот бит на низком уровне.

Вот пример его использования: если вы хотите иметь пользователя с ограниченными разрешениями на чтение для каждого каталога, кроме его домашнего, скажем /home/dummy, вам нужно создать /и /homeустановить xбит, иначе он не сможет даже добраться до своего домашнего каталога.

Платиновая Лазурь
источник