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

Используя рекурсию (параметр –R команды chmod) можно «уйти в глубь» каталога и изменить владельца/права во всех подкаталогах.

chmod — это команда для изменения прав доступа к файлам и каталогам. В Linux всё рассматривается как файл. Папка также называется файлом каталога, обозначенным в разделе разрешений «d».

Приведённая ниже команда установит владельца www-data, а группу владельца — nginx для всех файлов, каталогов и подкаталогов каталога /var/www.

linux # chown -R www-data:nginx /var/www

Чтобы изменить права доступа для всех файлов, каталогов и подкаталогов используйте следующую команду chmod:

linux # chmod -R 755 /var/www

Или с помощью символьного метода:

linux # chmod -R u=rwx,go=rx /var/www

Примечание

Разрешение 755 нужно установить для каталогов, но не для файлов. Бит выполнения (x) на каталоге означает, что по нему можно «скользить», т. е. пользователь может получит доступ к его «компонентам». Только при наличии этого бита, система разрешит войти в этот каталог и выполнить действия над файлом.

Установить права на все файлы:

linux # find /var/www/html -type f -exec chmod 644 {} \;

Установить разрешения для всех каталогов:

linux # find /var/www/html -type d -exec chmod 755 {} \;

Процесс в Linux запускается от имени текущего пользователя. Но есть ситуация, когда происходит косвенная установка новых эффективных идентификаторов процесса. Дело в том, что существуют два специальных бита: SUID (Set User ID — бит смены идентификатора пользователя) и SGID (Set Group ID — бит смены идентификатора группы). Когда пользователь или процесс запускает исполняемый файл с установленным одним из этих битов, то Linux автоматически меняет владельца на того пользователя, который является владельцем этого файла. То есть, независимо от того — кто запускает эту программу, она при выполнении имеет права хозяина этого файла (т.е. запускается от имени хозяина файла). Таким образом, пользователь может даже запускать файлы от имени суперпользователя.

Возьмите на заметку! Если установить SGID (или SUID) для каталога, то все файлы, находящиеся в нём, будут запускаться от имени владельца (группы) каталога, а не от имени текущего пользователя в системе.

Восьмеричные значения для SUID и SGID — 4000 и 2000. Символьные: u+s и g+s.