Для чего в Linux нужно право на исполнение (execute) для директории?

«Для чего в Linux нужно право на исполнение (execute) для директории?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Право на исполнение (x) для директории в Linux — это право на доступ к её содержимому (traverse). Без этого бита вы не можете выполнить ни одну операцию с файлами и поддиректориями внутри, даже если у вас есть права на чтение (r) или запись (w) для них.

Конкретные действия, которые разрешает x для директории:

  • Перейти в директорию командой cd.
  • Получить доступ к метаданным (inode) файлов внутри (через ls -l, stat).
  • Прочитать или изменить файл, если есть соответствующие права на сам файл.

Практический пример из администрирования серверов: Допустим, у пользователя deploy должен быть доступ только к лог-файлу конкретного приложения.

# Без права 'x' на директорию /var/log/app доступ к файлу невозможен
$ ls -ld /var/log/app/
drw-r--r-- 2 root root 4096 Mar 15 10:00 /var/log/app/
# У пользователя 'deploy' есть 'r' на файл лога
$ ls -l /var/log/app/error.log
-rw-r----- 1 root deploy 1024 Mar 15 10:05 error.log

$ sudo -u deploy cat /var/log/app/error.log
cat: /var/log/app/error.log: Permission denied

# Даем право на исполнение для группы 'deploy' на директорию
$ sudo chmod g+x /var/log/app/
$ ls -ld /var/log/app/
drw-r--xr-- 2 root root 4096 Mar 15 10:00 /var/log/app/

# Теперь доступ к файлу работает
$ sudo -u deploy cat /var/log/app/error.log
[Логи приложения...]

Важно: Право x на директорию не дает права исполнять файлы внутри него. Для запуска скрипта нужен отдельный бит x на самом файле.