27

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

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

И для папок:

chmod 774 myFolder // rwxrwxr--

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

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

5 ответов5

39

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

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

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

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

11

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

$ 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).

1

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

1

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

0

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

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

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