
Если вы работаете в системах Linux, вы, вероятно, столкнётесь с ошибкой «Отказ в доступе» при попытке создать или отредактировать файл. Обычно ошибки, связанные с недостаточными правами доступа, можно устранить, настроив правильные права доступа или владельца файла.
Linux — многопользовательская система, и доступ к файлам контролируется правами доступа, атрибутами и владельцами. Это гарантирует, что доступ к файлам и каталогам имеют только авторизованные пользователи и процессы.
Дополнительные сведения о правах доступа к файлам см. в разделах «Команда Umask в Linux» и «Общие сведения о правах доступа к файлам в 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 755find /var/www/html -type f -print0 | xargs -0 chmod 644
Просмотр файла разрешения
Чтобы просмотреть права доступа к файлу, используйте команду ls :
ls -l file_name
-rw-r--r-- 12 leia users 12.0K Dec 11 10:10 file_name |[-][-][-]- [---] [---] | | | | | | | | | | | | | +---------------> 7. Group | | | | | +---------------------> 6. Owner | | | | +--------------------------> 5. Alternate Access Method | | | +----------------------------> 4. Others Permissions | | +-------------------------------> 3. Group Permissions | +----------------------------------> 2. Owner Permissions +------------------------------------> 1. File Type
В приведенном выше примере ( rw-r--r-- ) означает, что владелец файла имеет разрешения на чтение и запись ( rw- ), а группа и другие имеют только разрешения на чтение ( r-- ).
Заключение
Команда chmod с опцией -R позволяет рекурсивно изменять права доступа к файлу.
Чтобы рекурсивно установить разрешения файлов в зависимости от их типа, используйте chmod в сочетании с командой find .
Если у вас есть вопросы или пожелания, не стесняйтесь оставлять комментарии.
Связанные руководства