Разрешение для файлов:
chmod 664 myFile // rw-rw-r--
И для папок:
chmod 774 myFolder // rwxrwxr--
Если я использую только разрешение "чтение и запись", папки не будут отображать свое содержимое.
В чем причина этого?
Каталоги (обычно они не называются папками в * nix) имеют другое значение для битов разрешений, чем обычные файлы.
Для каталогов, запись позволяет создавать новые файлы внутри него.
Чтение позволяет вам перечислить файлы внутри него.
Выполнить позволяет вам ввести его и получить доступ к файлам (или другим каталогам) внутри.
Поскольку вы не можете «выполнить» каталог, бит выполнения был использован для лучшего использования. Бит выполнения в каталоге позволяет получить доступ к элементам, которые находятся внутри каталога, даже если вы не можете отобразить содержимое каталога.
$ 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).
Бит "execute" фактически означает "поиск" применительно к каталогам (от man chmod
). Это кажется разумным, так как выполнение не имеет значения для каталога.
Разрешения на выполнение для каталога позволяют вам просматривать его, используя ресурсы, содержащиеся в нем.
Бит x
в папке относится к индексации / поиску в каталоге / перечислению; ничего из этого невозможно, если вы держите этот бит на низком уровне.
Вот пример его использования: если вы хотите иметь пользователя с ограниченными правами на чтение для каждого каталога, кроме его дома, скажем, /home/dummy
, то вам нужно сделать, чтобы /
и /home
установили бит x
, иначе он может ' даже не попал в его домашний каталог.