Ряд показанных здесь команд используется для изменения владельца или группы владельца файла или его разрешений. Мы рассматривали различные разрешения в главе Основные понятия системы UNIX.
Синтаксис команды chown (CHange OWNer - изменить владельца) выглядит следующим образом:
chown [опции] <пользователь[:группа]> <файл|каталог> [файл|каталог...] |
-R: рекурсия. Для изменения владельца для всех файлов и подкаталогов в указанном каталоге.
-v: подробный режим. Показывает все действия, выполняемые chown; сообщает, у каких файлов были изменены владельцы в результате выполнения команды, а какие файлы остались без изменений.
-c: подобна опции -v, но сообщает только о тех файлах, что были изменены.
chown nobody /shared/book.tex: изменяет владельца файла /shared/book.tex на nobody.
chown -Rc queen:music *.mid concerts/: изменяет владельца всех файлов в текущем каталоге, чьи имена заканчиваются на .mid, и всех файлов и подкаталогов в каталоге concerts/ на пользователя queen и группу music, сообщая только о тех файлах, которые были затронуты командой.
Команда chgrp (CHange GRouP - изменить группу) позволяет вам изменить группу владельца для файла (или файлов); ее синтаксис очень похож на синтаксис команды chown:
chgrp [опции] <группа> <файл|каталог> [файл|каталог...] |
Опции для этой команды такие же, как и у chown, и она используется очень похожим способом. Так, команда:
chgrp disk /dev/hd* |
изменяет группу владельца всех файлов в каталоге /dev/ с именами, начинающимися с hd, на группу disk.
Команда chmod (CHange MODe - изменить режим) имеет весьма специфический синтаксис. Синтаксис в общем случае:
chmod [опции] <изменение режима> <файл|каталог> [файл|каталог...] |
но чем она характеризуется, так это тем, что изменение режима может принимать разные формы. Оно может быть указано двумя способами:
в виде восьмеричного числа. Разрешения владельца при этом соответствуют числам в виде <x>00, где <x> соответствует назначаемому разрешению: 4 на чтение, 2 на запись и 1 на выполнение. Аналогично, разрешения группы владельца принимают вид <x>0, а разрешения для «остальных» - <x>. Затем, все что вам нужно сделать - так это найти сумму назначаемых разрешений, чтобы получить нужный режим. Так, разрешения rwxr-xr-- соответствуют 400+200+100 (разрешения для владельца, rwx) +40+10 (разрешения для группы, r-x) +4 (разрешения для остальных, r--) = 754; таким образом, разрешения выражаются через свободные члены. Это значит, что предыдущие разрешения безусловно заменяются;
при помощи выражений. При этом разрешения выражаются через последовательность выражений, разделенных запятыми. Отсюда выражение принимает следующий вид: [категория]<+|-|=><разрешения>.
Категория может быть одной или более из:
Если категория не указана, изменения применяются ко всем категориям. + добавляет разрешение, - удаляет разрешение и = устанавливает разрешение. И, наконец, разрешение является одним или более из следующих:
Главные опции полностью идентичны опциям команд chown и chgrp:
chmod -R o-w /shared/docs: рекурсивно удаляет разрешение на запись для остальных у всех файлов и подкаталогов в каталоге /shared/docs/.
chmod -R og-w,o-x private/: рекурсивно удаляет разрешение на запись для группы и остальных у всего каталога private/, и удаляет разрешение на выполнение для остальных.
chmod -c 644 misc/file*: изменяет разрешения для всех файлов в каталоге misc/, чьи имена начинаются с file на rw-r--r-- (т.е. разрешение на чтение для всех и разрешение на запись только для владельца), и сообщает только о тех файлах, которые были подвержены действию команды.