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 в некоторых утилитах, чтобы сначала увидеть, какие файлы будут затронуты.

См. также

info chmod.