Если вы используете Linux в качестве основной операционной системы или управляете серверами Linux, вы столкнетесь с ситуацией, когда попытаетесь создать или отредактировать файл и получите ошибку «Permission deny». Как правило, ошибки, связанные с недостаточными разрешениями, можно решить, установив правильные права доступа или владельца .
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
могут изменять права доступа к файлу. Будьте особенно осторожны при рекурсивном изменении разрешений файлов.
Использование команды find
Как правило, файлы и каталоги не должны иметь одинаковые разрешения. Большинству файлов не требуется разрешение на выполнение, тогда как вы должны установить разрешения на выполнение для каталогов, чтобы изменить их.
Наиболее распространенный сценарий — рекурсивное изменение разрешений файла веб-сайта на 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
.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
find /var/www/html -type d -exec chmod u=rwx,go=rx {} \;
вместо
find /var/www/html -type d -exec chmod u=rwx,go=rx {} ;