Поскольку Linux — многопользовательская операционная система, в ней имеется механизм, который устанавливает и управляет разрешениями для файлов, гарантируя, что только авторизованные процессы и пользователи смогут получить доступ к различным каталогам и файлам. Когда вы используете Linux, вы можете столкнуться с различными случаями, когда вы не можете редактировать файлы или каталоги из-за ошибки «Отказано в разрешении», указывающей на то, что у вас нет необходимых привилегий. Из этого туториала вы узнаете, как рекурсивно изменить права доступа к файлам в Linux, чтобы настройки разрешений применялись к подпапкам и файлам.
Как проверить права доступа к файлам в Linux
При возникновении ошибки «отказано в доступе» к файлу или операции с каталогом начните с проверки выделенных разрешений для пользователя, группы и других пользователей.
Для этого вы можете использовать команду ls -l
. Например, ниже приведены разрешения для различных файлов и каталогов в каталоге «/var».
Вывод выше содержит
Contents
Как проверить права доступа к файлам в Linux
толбец представляет права доступа к файлам и каталогам. Первая буква в этом столбце указывает тип:d
означает каталог, l
обозначает символическую ссылку и -
— обычный файл.
u
пользователь, g
группа и o
владелец обозначают права доступа к файлу или каталогу. r
указывает разрешения на «чтение», w
указывает разрешения на «запись» и X
указывает разрешения на «выполнение».Как только вы узнаете права доступа к вашему рабочему каталогу или файлу, вы сможете легко их изменить.
Как использовать chmod для изменения прав доступа к файлу
Команда chmod
— это самый простой способ изменить права доступа к файлам в Linux. Общий синтаксис команды:
chmod {permission}{operator}{mode}
- Разрешения: представляют собой разрешения, предоставленные пользователю, группе, владельцу или всем.
- Оператор: указывает разрешения, предоставленные правопреемнику:
+
предоставляет разрешение,-
запрещает разрешения, а=
указывает, какие разрешения установить.. - Режим: определяет, какие разрешения установить:
r
на чтение,w
на запись илиx
на выполнение.
Для получения дополнительной информации о chmod
и о том, как он работает, ознакомьтесь с этой статьей .
Например, чтобы запретить всем доступ на запись в каталог резервных копий в каталоге «/var», вы можете использовать команду:
sudo chmod -w /var/backups
Хотя изменение разрешений файла с помощью команды chmod
эффективно, оно изменяет разрешен
Как использовать chmod для изменения прав доступа к файлу
можете рекурсивно изменять права доступа к каталогу или файлу, а также его подкаталогам и файлам. Для этого используйте рекурсивную опцию-r
команды chmod.
Например, давайте рекурсивно удалим разрешения read
для каталога «/var/backup» и всех его файлов и подкаталогов. Текущие разрешения:
drwxrwxrwx 2 root root 4096 Jul 15 06:25 backups
Теперь давайте рекурсивно запустим chmod
, чтобы изменить разрешения:
sudo chmod -r -r /var/backups
Теперь вы можете видеть, что права доступа к файлу изменились.
Разрешение на рекурсивное изменение с помощью find
Обычно вы не устанавливаете файлы и каталоги с одинаковыми разрешениями. Это связано с тем, что вам нужно разрешение на выполнение, чтобы cd
войти в определенный каталог. Однако большинству файлов это разрешение на выполнение не требуется.
Чтобы решить эту проблему, вы можете использовать утилиту find
в Linux. Это позволяет вам находить только определенные файлы или каталоги и устанавливать для них разрешения.
Дополнительную информацию об использовании Find в Linux см. в ознакомьтесь с этой статьей .
Возьмем каталог «/var/log». Каталог содержит как файлы, так и каталоги.
Чтобы установить определенные разрешения только для файлов, мы можем использовать команду find с опцией -type f
.
См. пример команды ниже:
sudo find /var/log/ -type f -exec chmod 777 {} ;
В приведенном выше примере мы использовали команду find для поиска файлов в каталоге «/var/log», а затем установили разрешения на чтение, запись и выполнение для пользователей, групп и всех остальных.
Мы можем сделать то же самое и для каталогов. В данном случае мы указываем -type d
, чтобы получать только каталоги.
Например:
sudo find /var/log/ -type d -exec chmod 755 {} ;
В приведенном выше примере мы устанавливаем разрешение 755 только для каталогов, а не для файлов и каталогов.
Вы можете проверить это с помощью команды ls -la
.
Вы заметите, что все файлы имеют разрешение 777, а каталоги — 755.
В заключении
Знание того, как изменить права доступа к файлам в Linux, является важным навыком, поскольку помогает предотвратить несанкционированный доступ и изменение ра