9.3. Выполнение массовых операций командой chmod
Проблема
Требуется задать разрешения для всех файлов в каталоге или для группы файлов.
Решение
Команда chmod
поддерживает операции со списками файлов. Для построения списков можно воспользоваться командой find
или метасимволами командного процессора. Это позволяет гибко и эффективно управлять разрешениями для больших наборов файлов.
Например, следующая команда делает несколько файлов доступными только для чтения для всех пользователей:
$ chmod 444 file.txt file2.txt file3.txt
Чтобы сделать все файлы текущего каталога доступными для чтения и записи для владельца и группы, но без изменения разрешений самого каталога, используйте следующую команду:
$ find . -type f -exec chmod -v 660 {} \;
Команда find
позволяет пройти по всем файлам каталога и выполнить указанное действие над каждым файлом. Это особенно полезно, когда вам необходимо изменить разрешения для всех файлов, но не для самих каталогов.
Для назначения разрешений каталогу и его содержимому, включая подкаталоги, можно воспользоваться рекурсивной опцией -R
:
$ chmod -R -v 755 /shared
В этом примере все файлы и каталоги внутри /shared будут иметь разрешения 755 (чтение, запись, выполнение для владельца и выполнение для всех остальных).
Следующий пример показывает, как изменить разрешения для всех файлов с расширением .txt в текущем каталоге, разрешая владельцу чтение и запись, а остальным пользователям только чтение:
$ chmod -v 644 *.txt
Это полезно, если вам нужно применить изменения ко всем текстовым файлам в одном каталоге.
Если нужно изменить разрешения для всех файлов, начинающихся с определённого префикса (например, для всех файлов, имена которых начинаются с "apt"), используйте следующую команду:
$ chmod -v 644 apt*
Данная команда изменит разрешения для всех файлов, начинающихся с "apt", разрешив владельцу читать и записывать эти файлы, а остальным пользователям только читать их.
Комментарий
Использование команды chmod
с метасимволами и командой find
существенно упрощает управление большими наборами файлов. Команда -R
(рекурсивное изменение разрешений) даёт возможность автоматически применить изменения ко всем файлам и подкаталогам, что особенно полезно для системных администраторов.
Важно помнить, что не все файлы и каталоги должны иметь одинаковые разрешения. Каталоги обычно требуют разрешения на выполнение для успешной навигации по ним, в то время как файлы могут ограничиваться чтением или записью в зависимости от необходимости.
Всегда проверяйте, какие файлы и каталоги вы изменяете с помощью команды chmod
, особенно при использовании опции -R
, чтобы случайно не лишить себя или других пользователей нужных прав доступа. Для этого можно использовать команду --dry-run
в некоторых утилитах, чтобы сначала увидеть, какие файлы будут затронуты.
См. также