2. Управление атрибутами файлов

Ряд показанных здесь команд используется для изменения владельца или группы файла или его прав. Мы рассматривали различные типы прав доступа в Глава 1, Основные понятия системы UNIX®.

2.1. chown, chgrp: Изменение владельца или группы для одного или нескольких файлов

Синтаксис команды 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.

2.2. chmod: Изменение прав файлов и каталогов

Команда chmod (CHange MODe - изменить режим) имеет весьма специфический синтаксис. В общем случае это выглядит так:

chmod [опции] <изменение режима> <файл|каталог> [файл|каталог...]

но различие состоит в формах, которыми можно изменять режим. Он может быть определён двумя способами:

  1. через восьмеричные числа. Права владельца в этом случае соответствуют числам в форме <x>00, где <x> соответствует присвоенным правам: 4 на чтение, 2 на запись и 1 на выполнение. Так же права группы берутся по форме <x>0 и права для «других» в форме <x>. Затем, все что вам нужно сделать, это сложить вместе присвоенные права, чтобы получить правильный режим. Так, права rwxr-xr- - соответствуют 400+200+100 (права владельца, rwx) +40+10 (права группы, r-x) +4 (права для других, r- -) = 754; таким образом права выражены в абсолютных значениях. Это значит, что предыдущие права безоговорочно изменены;

  2. через выражения. Здесь права выражены последовательностью выражений, разделенных запятыми. Следовательно, выражение будет иметь вид: [category]<+|-|=><права>.

    Категорий может быть одна или несколько:

    • u (User - пользователь), права владельца;

    • g (Group - группа), права владельца группы;

    • o (Others - остальные), права для «остальных».

    Если категория не определена, изменения будут приняты для всех категорий. + устанавливает права, - забирает права и = устанавливает права на то, что указано в командной строке. Вообщем, права бывают следующие:

    • r (Read - чтение);

    • w (Write - запись);

    • x (eXecute - выполнение).

Главные опции полностью идентичны опциям команд chown и chgrp:

  • -R: изменяет права рекурсивно.

  • -v: подробный режим. Показывает выполняемые действия для каждого файла.

  • -c: подобна опции -v, но сообщает только о тех файлах, которые были подвержены действию команды.

Примеры:

  • 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-- (то есть чтение для всех, а запись только для владельца), и сообщает только о тех файлах, которые были подвержены действию команды.