Многопользовательские системы, такие как Linux, требуют настройки и управления разрешениями файлов, которые обеспечивают доступ к файлам только авторизованным пользователям.
Если вам нужно изменить разрешение файла, используйте команду chmod. Она также позволяет изменять разрешение файла рекурсивно, чтобы настроить несколько файлов и подкаталогов с помощью одной команды.
Проверка разрешения файлов
Если вам нужно проверить разрешения файлов в рабочем каталоге, используйте команду:
1 | ls -l |
В результате вы получите список разрешений всех файлов в каталоге.
Например, каталог Example содержит три файла (test1.txt, test2.txt и test3.txt) с одинаковыми разрешениями (-rw-rw-r-).
Перечисленные выше разрешения файлов говорят нам следующее:
- Владелец имеет права на чтение и запись
- Группа владельца имеет права на чтение и запись
- Другие пользователи имеют права на чтение
Изменение разрешения рекурсивно
Обычно для изменения разрешения одного файла используется базовая команда chmod. Однако вам может понадобиться изменить разрешение рекурсивно для всех файлов в каталоге.
В таких случаях опция chmod recursive (-R или --recursive) устанавливает разрешение для каталога (и содержащихся в нем файлов).
Синтаксис для изменения разрешения файла рекурсивно следующий:
1 | chmod -R [разрешение] [каталог] |
Таким образом, чтобы установить разрешение 755 для всех файлов в каталоге Example, вы должны ввести:
1 | sudo chmod -R 755 Example |
Эта команда дает права на чтение, запись и выполнение владельцу (7) и доступ на чтение и выполнение всем остальным (55).
В приведенном примере разрешение определено с использованием восьмеричного/числового режима (755). В качестве альтернативы можно использовать символьный режим (с использованием буквенно-цифровых символов) и использовать команду: chmod -R u=rwx,go=rx
Изменение разрешений с помощью команды find
Чтобы назначить отдельные разрешения для каталогов и файлов, вы можете использовать команду find.
Основной синтаксис включает использование команды find для поиска файлов/каталогов и последующую передачу команды chmod для установки разрешения:
1 | sudo find [директория] -type [d/f] -exec chmod [привилегия] {} \; |
Замените [директория] на путь к каталогу, содержащему файлы и подкаталоги, которые вы хотите настроить.
Укажите, что искать: каталог - тип d или файл - тип f.
Задайте файлу [привелегия] с помощью команды chmod, используя числовой или символьный режим.
Избегайте назначать файлам привилегии execute. Обычная настройка включает выполнение следующих команд:
1 2 3 | sudo find Example -type d -exec chmod 755 {} \; sudo find Example -type f -exec chmod 644 {} \; |
В этом примере каталоги имеют права 755 (u=rwx,go=rx), а файлы - 644 (u=rw,go=r).
Вы можете проверить, что каталоги и файлы имеют разные настройки разрешений, перейдя в каталог Example (cd Example) и перечислив его содержимое (ls -l).
Изменение разрешения определенных файлов рекурсивно
Комбинация команды find и chmod также может быть использована для изменения разрешения файлов определенного типа.
Синтаксис команды для изменения разрешения файлов определенного типа в каталоге следующий:
1 | find [директория] -name "*.[расширения_файла]" -exec chmod [привилегия] {} \; |
Например, чтобы сделать все файлы .sh в текущем каталоге исполняемыми, вы должны использовать:
1 | find . -name "*.sh" -exec chmod +x {} \; |