Командная строка Linux
Шрифт:
Восьмеричная (по основанию 8) и родственная ей шестнадцатеричная (по основанию 16) системы счисления часто используются для представления чисел в компьютерах. Мы, люди, рождаемся с десятью пальцами на руках (по крайней мере большинство из нас), поэтому для счета используем систему счисления с основанием 10. Компьютеры, напротив, рождаются с одним пальцем и потому используют для вычисления двоичную систему счисления (по основанию 2). Их числа состоят всего из двух цифр, нуля и единицы. Поэтому
В восьмеричной системе используются цифры от нуля до семи: 0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21...
В шестнадцатеричной системе используются цифры от нуля до девяти плюс буквы от A до F: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10, 11, 12, 13...
В двоичной системе счисления еще можно увидеть смысл (поскольку компьютеры имеют лишь один палец), но в чем польза восьмеричной и шестнадцатеричной систем счисления? Они были придуманы для удобства человека. Очень часто небольшие порции данных представляются в компьютерах битовыми шаблонами. Примером может служить представление цвета в формате RGB. В большинстве дисплеев компьютеров цвет каждого пикселя определяется тремя цветовыми составляющими: 8 бит для красного цвета, 8 бит для зеленого и 8 бит для синего. Красивый сине-голубой цвет можно представить в виде 24-разрядного числа: 010000110110111111001101.
Хотели бы вы видеть и читать такие числа весь день? Я так не думаю. Именно в таких случаях на выручку приходят другие системы счисления. Каждая цифра в шестнадцатеричной системе счисления представляет четыре двоичные цифры. В восьмеричной системе каждой цифре соответствуют три двоичные цифры. То есть 24-разрядное значение сине-голубого цвета можно сжать до 6-значного шестнадцатеричного числа: 436FCD. Поскольку цифры в шестнадцатеричных числах «выстраиваются в ряд» с битами в двоичных числах, можно заметить, что красный компонент нашего цвета имеет значение 43, зеленый — 6F и синий — CD.
В наше время шестнадцатеричная форма записи получила большее распространение, чем восьмеричная, но, как будет показано ниже, восьмеричная форма записи все еще оказывается весьма полезной для представления групп из трех двоичных битов.
Восьмеричное представление
При использовании восьмеричной формы записи шаблон желаемых привилегий определяется восьмеричными числами. Так как каждая цифра в восьмеричном числе определяется тремя двоичными разрядами, она точно отображается в схему хранения режима доступа к файлу. В табл. 9.4 поясняется, что мы имеем в виду.
Таблица 9.4. Режимы доступа к файлу в двоичном и восьмеричном представлениях
Восьмеричное
Двоичное
Режим доступа
0
000
– --
1
001
– -x
2
010
– w-
3
011
– wx
4
100
r--
5
101
r-x
6
110
rw-
7
111
rwx
C помощью трех восьмеричных цифр мы можем определить режим доступа к файлу для владельца, для группы и для остального мира.
[me@linuxbox ~]$ > foo.txt
[me@linuxbox ~]$ ls -l foo.txt
– rw-rw-r-- 1 me me 0 2012-03-06 14:52 foo.txt
[me@linuxbox ~]$ chmod 600 foo.txt
[me@linuxbox ~]$ ls -l foo.txt
– rw------- 1 me me 0 2012-03-06 14:52 foo.txt
Передав
Символическое представление
Команда chmod поддерживает также символическую форму определения режимов доступа к файлу. Символическая форма записи делится на три части: для кого устанавливаются разрешения, какие операции с разрешениями будут выполняться и на какие разрешения эти операции будут влиять. Чтобы указать, для кого устанавливаются разрешения, используется комбинация символов u, g, o и a, как показано в табл. 9.5.
Таблица 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
Устанавливает право на чтение и запись для всех, кроме владельца. Если прежде файл имел разрешение на выполнение для группы и всего мира, это право отнимается