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

Если вы используете 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 .

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Оставьте комментарий