Найти в Дзене

Linux | Доступ на чтение файла без просмотра директории

Приветствую тебя $USER! Часто нам приходится предоставлять доступ к файлам на чтение. Это может быть пользователь в роли разработчика, которому необходимо посмотреть и изменить конфигурацию сервиса на продакшн-сервере или техническому пользователю, от имени которого запускается агент, считывающий лог-файлы для последующей отправки в систему мониторинга. Если требуется скрыть структуру каталогов и предоставить доступ лишь к конкретным файлам, можно установить права на чтение конкретного файла, но запретить чтение содержимого каталогов по пути его расположения. Для этого нужно выполнить команду chmod 711 <путь к каталогу>. Эта команда установит для группы и остальных пользователей только право execute (исполнение). Разберём, как работают биты read и execute применительно к каталогам: - Право read (r) позволяет просмотреть содержимое каталога - например, командой ls. Пользователь увидит список файлов и подкаталогов. - Право execute (x) позволяет:
- сменить рабочую директорию на целевую

Приветствую тебя $USER! Часто нам приходится предоставлять доступ к файлам на чтение. Это может быть пользователь в роли разработчика, которому необходимо посмотреть и изменить конфигурацию сервиса на продакшн-сервере или техническому пользователю, от имени которого запускается агент, считывающий лог-файлы для последующей отправки в систему мониторинга.

Если требуется скрыть структуру каталогов и предоставить доступ лишь к конкретным файлам, можно установить права на чтение конкретного файла, но запретить чтение содержимого каталогов по пути его расположения. Для этого нужно выполнить команду chmod 711 <путь к каталогу>. Эта команда установит для группы и остальных пользователей только право execute (исполнение).

Разберём, как работают биты read и execute применительно к каталогам:

- Право read (r) позволяет просмотреть содержимое каталога - например, командой ls. Пользователь увидит список файлов и подкаталогов.

- Право execute (x) позволяет:
- сменить рабочую директорию на целевую или следующую по структуре (команда cd).
- получить дополнительную информацию о содержимом (команды du, ls -l и т. д.), если есть доступ к конкретным файлам.

Таким образом, запретив право read, мы не даём вывести список файлов и директорий по пути к файлу. Но, оставив право execute, разрешаем «проходить» через каталоги к целевому файлу — при условии, что пользователь знает полный путь к нему.

-2

Важно: для доступа к такому файлу необходимо точно знать его полный путь — без права read обнаружить его путём просмотра каталогов невозможно.

Кроме того, некоторые команды командной оболочки могут не работать без доступа на чтение каталога. Это связано с различиями в реализации команд — например, поведение cd в оболочке fish-shell может отличаться от классического bash.

Описанная ситуация — пример того, как можно предоставить доступ для работы с каталогом на определённом уровне вложенности. Для более точечного управления доступом можно использовать ACL (Access Control List); об этом мы поговорим в следующих статьях.