Командная строка Linux. Полное руководство (Шоттс) - страница 63

Дополнительную информацию и полный список параметров команды chmod можно найти на странице справочного руководства (man). А теперь несколько слов о параметре --recursive: он воздействует и на файлы, и на каталоги, поэтому он не так полезен, как можно было бы предположить, потому что редко требуется устанавливать одинаковые разрешения для файлов и каталогов.

Установка режима доступа к файлу с помощью графического интерфейса


Теперь, ознакомившись с тем, как устанавливаются разрешения для файлов и каталогов, вы лучше поймете диалоги установки разрешений в графическом интерфейсе. В Nautilus (GNOME) и Konqueror (KDE) можно щелкнуть правой кнопкой мыши на файле или на каталоге и вывести диалог со свойствами. На рис. 9.2 изображен такой диалог из KDE 3.5.

Рис. 9.2. Диалог со свойствами файла из KDE 3.5

Здесь вы видите, какие разрешения установлены для владельца, группы и остального мира. Если в KDE щелкнуть на кнопке Advanced Permissions (Дополнительные разрешения), появится другой диалог, в котором можно будет установить атрибуты режима по отдельности. Еще один маленький шаг человека в большом мире под названием Командная строка!

umask — определение разрешений доступа к файлам по умолчанию


Команда umask определяет разрешения по умолчанию, которые устанавливаются для файла при его создании. В ней с помощью восьмеричной формы записи определяется битовая маска для сбрасываемых атрибутов режима доступа.

Взгляните:

[me@linuxbox ~]$ rm -f foo.txt

[me@linuxbox ~]$ umask

0002

[me@linuxbox ~]$ > foo.txt

[me@linuxbox ~]$ ls -l foo.txt

-rw-rw-r-- 1 me me 0 2012-03-06 14:53 foo.txt

Сначала мы удалили существующий файл foo.txt, чтобы, так сказать, начать с чистого листа. Далее мы выполнили команду umask без аргумента, чтобы увидеть текущее значение маски. Она вернула нам значение 0002 (часто также используется значение 0022) — восьмеричное представление действующей маски. Затем мы создали новый файл foo.txt и вывели для него разрешения.

Как видите, владелец и группа получили права на чтение и запись, тогда как все остальные — только право на чтение. Весь мир не получил права на запись из-за значения маски. Давайте повторим пример, но на этот раз определим свою маску:

[me@linuxbox ~]$ rm foo.txt

[me@linuxbox ~]$ umask 0000

[me@linuxbox ~]$ > foo.txt

[me@linuxbox ~]$ ls -l foo.txt

-rw-rw-rw- 1 me me 0 2012-03-06 14:58 foo.txt

После установки маски в значение 0000 (таким способом мы фактически выключили ее) вновь созданный файл получил разрешение на запись для всего мира. Чтобы лучше понять суть происходящего, мы снова должны вернуться к восьмеричным числам. Если развернуть маску в двоичное представление и сравнить ее с двоичным представлением атрибутов, можно понять, что произошло: