Чтение онлайн

ЖАНРЫ

Командная строка Linux
Шрифт:

Таблица 9.5. Символическая форма записи аргументов команды chmod

Символ

Значение

u

Сокращенно от user (пользователь), означает владельца файла или каталога

g

Группа

o

Сокращенно от other (другие, остальные), означает весь остальной мир

a

Сокращенно от all (все); комбинация из всех трех символов: u, g и o

Если

не указан ни один символ, предполагается a (all — все). Операцией может быть знак +, соответствующий добавлению заданных разрешений, знак -, соответствующий отъему заданных разрешений, или знак =, указывающий, что только заданные разрешения должны быть установлены, а все остальные отобраны.

Разрешения определяются символами r, w и x. В табл. 9.6 перечислены некоторые примеры символической формы записи.

Таблица 9.6. Примеры символической формы записи прав доступа к файлам

Атрибуты файлов

Значение

u+x

Добавляет право на выполнение, но только для владельца

u-x

Отнимает право на выполнение у владельца

+x

Добавляет право на выполнение для владельца, группы и остального мира. Эквивалент записи a+x

o-rw

Отнимает право на чтение и запись у всех, кроме владельца и группы

go=rw

Устанавливает право на чтение и запись для всех, кроме владельца. Если прежде файл имел разрешение на выполнение для группы и всего мира, это право отнимается

u+x,go=rx

Добавляет право на выполнение для владельца и устанавливает право на чтение и выполнение для группы и всего мира. При выполнении сразу нескольких операций с привилегиями они должны разделяться запятой

Кто-то предпочитает пользоваться восьмеричной формой записи, кому-то больше нравится символическая. Символическая форма записи удобна тем, что позволяет установить единственный атрибут, не влияя на остальные.

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

Исходный режим доступа к файлу

– -- rw- rw- rw-

Маска

000 000 000 010

Результат

– -- rw- rw- r--

Забудем пока про начальные нули (мы вернемся к ним чуть позже) и обратим внимание, что атрибут, соответствующий той позиции, где в маске стоит 1, был сброшен, — в данном случае право на запись для всего мира. Теперь понятно, что делает маска. В любой позиции, где в маске появляется 1, соответствующий атрибут сбрасывается. Если посмотреть на значение маски 0022, легко увидеть, что оно делает:

Исходный режим доступа к файлу

– -- rw- rw- rw-

Маска

000 000 010 010

Результат

– -- rw- r-- r--

И снова атрибуты, соответствующие позициям, где в маске стоит 1, были сброшены. Поэкспериментируйте с другими значениями (попробуйте несколько 7), чтобы лучше усвоить, как действует маска. Закончив эксперименты, не забудьте все вернуть в исходное состояние:

[me@linuxbox ~]$ rm foo.txt; umask 0002

некоторые специальные разрешения

Обычно разрешения в восьмеричном представлении мы видим как трехзначные числа, но технически более правильно выражать их четырехзначными числами. Почему? Потому что в дополнение к разрешениям на чтение, запись и выполнение существует еще несколько редко используемых разрешений.

Поделиться с друзьями: