Как в Linux рекурсивно изменить права доступа для файлов и папок

2 мин чтения

Задаём разные права файлам и каталогам Linux через find и chmod, сохраняя необходимые исключения.

Как в Linux рекурсивно изменить права доступа для файлов и папок

Каталогам сайта нужно право прохода, а обычным файлам — чтение без исполнения. Один chmod -R не всегда выражает такую задачу. Покажем отдельную обработку через find на примере режимов 755 и 644. Перед применением важно проверить путь, файлы с секретами и скрипты, которым требуется исполнение.

Проверка каталога перед chmod

find /srv/example-site -type d -print
find /srv/example-site -type f -print

Укажите точный проверенный путь. Не используйте корень системы или переменную с неизвестным значением. По умолчанию find не следует по символическим ссылкам как по каталогам; изменение режима обхода меняет область действия и требует отдельной оценки.

Обрабатываем объекты пакетами

find /srv/example-site -type d -exec chmod 755 {} +
find /srv/example-site -type f -exec chmod 644 {} +

Форма с плюсом передаёт несколько найденных путей одному запуску chmod, уменьшая число процессов. Имена с пробелами остаются отдельными аргументами. Это удобнее, чем строить строку путей и повторно передавать её оболочке.

Не снимаем проход со всех каталогов

Предварительный chmod -R 644 может убрать право прохода с каталогов и помешать последующему обходу обычному пользователю. Массовое применение также лишит исполнения скрипты, которым оно необходимо. Разделение по типам объектов сохраняет понятную последовательность изменения.

Режим 644 открывает чтение другим пользователям системы, поэтому не применяйте его к файлам с паролями. ACL, дополнительные атрибуты и SELinux могут влиять на доступ независимо от этих чисел. Не пытайтесь исправлять любую ошибку разрешений режимом 777.

Проверьте чтение и нужную запись от имени приложения, затем журналы и несколько характерных файлов. Для важных исключений сохраните прежние режимы. Права должны соответствовать работе каждого объекта — делать одинаковыми все цифры в каталоге не требуется.

Источники и дальнейшее чтение