Если вы используете Linux в качестве основной операционной системы или управляете серверами Linux, вы столкнетесь с ситуацией, когда вы попытаетесь создать или отредактировать файл и получите ошибку «Permission deny». Как правило, ошибки, связанные с недостаточными разрешениями, можно устранить, установив правильные права доступа к файлу или владельца.
Linux является многопользовательской системой, и доступ к файлам контролируется через права доступа к файлам, атрибуты и права собственности. Это обеспечивает доступ к файлам и каталогам только авторизованным пользователям и процессам.
Для получения дополнительной информации о правах доступа к файлам см. «Команда Umask в Linux».
В этой статье мы расскажем, как рекурсивно изменять права доступа к файлам и каталогам.
Команда chmod позволяет изменять права доступа к файлам, используя символьный или числовой режим.
Чтобы рекурсивно работать со всеми файлами и каталогами в данном каталоге, используйте команду chmod с параметром -R, ( —recursive). Общий синтаксис для рекурсивного изменения прав доступа к файлу следующий:
chmod -R MODE DIRECTORY
Например, чтобы изменить права доступа ко всем файлам и подкаталогам 755 в каталоге /var/www/html, вы должны использовать:
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.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.