Атрибуты файлов
Каждый файл и каталог в операционной системе Linux имеет ярлык (этикетку, атрибуты, attributes), которая определяет права доступа к данному файлу тем или иным пользователям. Это похоже на атрибуты файла в Windows, но там всего четыре атрибута, которые определяют видимость файла (архивный, системный, только для чтения, скрытый), мало влияющих на текущую работу. В Linux с атрибутами файла работает непосредственно ядро, которое по ним определяет, что может делать с данным файлом конкретный пользователь: читать, изменять или запускать файл (программу) на исполнение.
В Linux права доступа к файлу определены для трех уровней пользователей: для владельца файла, который создал этот файл; для пользователей, принадлежащих к группе, например, группа сотрудников, работающая над одним проектом; и для всех прочих пользователей. И только администратор системы имеет право проводить любые операции с файлами.
Пользователь для входа в систему регистрируется, вводя свой пароль и имя. После этого он получает доступ к файловой системе. Для ускорения быстродействия системы используются идентификаторы пользователя UID и группы GID. Соответственно у атрибутов файлов имеется шаблон, который определяет принадлежность файла конкретному пользователю и группе. Если пользователь не является владельцем файла и не входит в состав группы, то он относится к прочим (others), которые имеют очень мало прав, а то и вовсе ими не обладают. Учитывая такой принцип деления пользователей, для описания прав доступа к файлам используется шаблон:
владелец группа прочие
Но прежде чем мы начнем разбираться, как указываются атрибуты файла, надо остановиться на принципах компьютерной арифметики.
Процессор в компьютере работает с битами, для которых используется двоичная система счисления, когда число записывается только символами ”1" и "О". Но с двоичным кодом человеку не удобно работать, поэтому программисты используют в работе восьмеричную и шестнадцатеричную1 системы счисления. Сравнение записей числа в различных системах счисления показаны в табл. 10.1.
Традиционно в Unix-системах используется восьмеричная система счисления для записи чисел, поэтому при чтении прав на файл можно встретить вот такую запись: 765 или 1777. Но во многих случаях для облечения понимания того, как распределяются права, используется запись атрибутов файла в виде
Шестнадцатеричная система счисления широко используется в конфигурационных файлах операционной системы Linux и в исходных текстах программ на языке C/C++.
символов "х", "w" и "г". Связь такого представления с цифровыми счислениями показана в правой колонке табл. 10.1. Такое символьное представление атрибутов файлов произошло от восьмеричной системы счисления, а также от того, что для идентификации каждого уровня пользователей используется три бита (тремя битами можно обозначить только восемь значений). В итоге, получилось следующее:
право исполнения (--х), сокр. от execute — исполнять;
право редактирования (-w-), сокр. от write — писать;
право чтения (г--), сокр. от read — читать.
Теперь рассмотрим примеры различных прав на файл.
Если существует файл, с которым любой пользователь может проводить любые операции, то он будет иметь следующие атрибуты: rwxrwxrwx
или
777
Для файлов данных, которые не являются программами и скриптами и которые могут читать и перезаписывать любые пользователи, используется следующий вариант (разрешено чтение и редактирование для всех):
rw-rw-rw-
ИЛИ
666
Когда владельцу файла необходимо сохранить конфиденциальную информацию, например это личное письмо, то следует установить следующие атрибуты:
rw
ИЛИ
600
Все, что было сказано об атрибутах файлов, касается и каталогов, но смысл прав несколько иной. Если у пользователя есть право на чтение (г) каталога, то это означает, что в данном каталоге он может вывести на экран содержимое этого каталога (а также скопировать содержимое каталога, но данная возможность зависит от других прав). Чтобы записывать и удалять в каталоге файлы, пользователь должен иметь право записи (w). Право на исполнение (х) для каталога означает, что пользователь может войти в каталог и просмотреть его содержание.
Права чтения и исполнения каталога тесно связаны между собой, поэтому, в большинстве случаев, для каталогов атрибуты г и w употребляются вместе, чтобы разрешать или не разрешать работу с данным каталогом для тех или иных пользователей. Кроме такой особенности, обратите внимание, что встречаются случаи, когда пользователь является владельцем файла, но не имеет прав на работу с данным каталогом. Вообще, доступ к файлам в каталоге у пользователя, который не является владельцем этого каталога и не входит в состав группы, которой разрешено работать с каталогом, несколько запутан и существует ряд особенностей, но на них при работе на однопользовательской машине можно не обращать внимание.
При просмотре файловой системы Linux в программе Midnight Commander в режиме расширенного формата отображения, можно заметить, что рассмотренные ранее атрибуты файлов предваряются еще одним символом, т. е. отображается 10 символов, а не 9. "Лишний” символ, который предваряет атрибуты прав доступа, обозначает тип файла:
обычный файл;
d — каталог;
1 — символическая ссылка;
ь — файл блочного устройства;
с — файл символьного устройства;
s — доменное гнездо;
р — именованный канал.
Также в атрибуты файла входят поля, в которых указывается время последнего доступа к файлу, время модификации и время изменения атрибутов.