Введение
Если вы используете Linux в качестве основной операционной системы или управляете серверами Linux, может возникнуть ситуация, когда вы попытаетесь создать или изменить файл и получите сообщение об ошибке «Отказ в доступе». Как правило, ошибки, связанные с недостатком разрешений, можно устранить, установив правильные разрешения или права собственности на файл.
Linux является многопользовательской системой, и доступ к файлам контролируется с помощью прав доступа к файлам, атрибутов и владельца. Это гарантирует, что только авторизованные пользователи и процессы могут получить доступ к файлам и каталогам.
Дополнительные сведения о правах доступа к файлам см. в разделе Команда Umask в Linux.
В этой статье мы объясним, как рекурсивно изменить права доступа к файлам и каталогам.
Рекурсивная команда Chmod
Команда chmod
позволяет изменять права доступа к файлам в символьном или числовом режиме.
Чтобы рекурсивно работать со всеми файлами и каталогами в данном каталоге, используйте команду chmod
с параметром -R
( --recursive
). Общий синтаксис для рекурсивного изменения прав доступа к файлам следующий:
chmod -R MODE DIRECTORY
Например, чтобы изменить права всех файлов и подкаталогов каталога /var/www/html
на 755
, используйте:
chmod -R 755 /var/www/html
Режим также можно указать с помощью символьного метода:
chmod -R u=rwx,go=rx /var/www/html
Только root, владелец файла или пользователь с привилегиями sudo
могут изменять права доступа к файлу. Будьте особенно осторожны при рекурсивном изменении прав доступа к файлам.
Найти команду
Как правило, файлы и каталоги не должны иметь одинаковых разрешений. Большинству файлов не требуется разрешение на выполнение, но разрешения на выполнение должны быть установлены для каталогов, чтобы иметь возможность изменять их.
Наиболее распространенным сценарием является рекурсивное изменение прав доступа к файлам веб-сайта на 644
и прав доступа к папкам на 755
.
Используя численный метод:
find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;
Используя символический метод:
find /var/www/html -type d -exec chmod u=rwx,go=rx {} \;
find /var/www/html -type f -exec chmod u=rw,go=r {} \;
Команда find
ищет файлы или каталоги в /var/www/html
и передает каждый найденный файл или каталог команде chmod
для установки разрешений.
При использовании find
с -exec
команда chmod
выполняется для каждого найденного элемента. Используйте команду xargs
для ускорения операции путем одновременной передачи нескольких записей:
find /var/www/html -type d -print0 | xargs -0 chmod 755
find /var/www/html -type f -print0 | xargs -0 chmod 644
Вывод
Команда chmod
с параметром -R
позволяет рекурсивно изменять права доступа к файлу.
Чтобы рекурсивно установить права доступа к файлам в зависимости от их типа, используйте chmod
в сочетании с командой find
.