«Владение» файлом и «права» на него
Рассмотрим следующий пример (Рис. 1-38).
Рис. 1-38
Алиса известными нам уже командами «touch» и «ls» создает файл «файл» и убеждается в том, что он на самом деле создан. Затем она выполняет команду «chmod u-w файл» и обнаруживает, что поле «тип и права доступа» в выдаче «длинного» списка файлов претерпело некоторые изменения. Попытка перенаправить в этот файл ввод порождает сообщение оболочки «В доступе отказано».
Вспомним еще раз значения полей в «длинном» формате списка файлов, получаемого по команде «ls -l» (Рис. 1-39).
Рис. 1-39
Вот как устроено поле «тип и права» (Рис. 1-40).
Рис. 1-40
Оно всегда содержит десять символов. Значение первого символа нам уже известно: это «тип файла», которому могут соответствовать «-» (обычный файл), «d» (каталог) и некоторые другие символы, соответствующие специальным файлам (таким, как файлы устройств).
Остальные девять символов составляют три триады, выражающие права на файл в так называемой «rwx»-нотации. Они соответствуют трем категориям пользователей, определяемым относительно каждого файла.
В первую категорию «владелец» входит один пользователь, являющийся «владельцем» данного файла. Это пользователь, чье имя указано в соответствующем (третьем) поле «длинного» формата списка файлов. Обычно владелец файла — это создавший его пользователь.
Во вторую категорию входят все пользователи, входящие в группу пользователей. Группы пользователей — это механизм, введенный в стандарт открытых систем специально для распределения прав на файлы. Создание групп, включение в них пользователей и исключение пользователей из групп — административные действия. Файл имеет группу-владельца, совпадающую с текущей группой создавшего его пользователя на момент создания, а текущая группа обычно совпадает с первичной группой пользователя (пользователь может входить более, чем в одну группу).
В примере имя группы совпадает с именем пользователя [31], но это разные сущности.
В третью категорию входят все остальные пользователи, т.е. все пользователи за исключением владельца и членов группы-владельца.
Для каждой категории определяются отдельные «правомочия» доступа к файлу.
Правомочие чтения разрешает чтение содержимого файла. Значение этого символа может быть «-» (запрещено) или «r» (разрешено; от англ. «read» («читать»)).
Правомочие записи разрешает модификацию файла, его значение может быть «-» (запрещено) или «w» (разрешено; от англ. «write» («писать»)).
Правомочие исполнения разрешает выполнение программы, содержащейся в файле, путем указания ее имени. Значение этого бита может быть «-» (запрещено) или «х» (разрешено; от англ. «eXecute» («исполнять»)) [32]. Зачем нужно правомочие исполнения, мы рассмотрим ниже.
Ограничения системы прав на файлы не действуют для главного пользователя (root). Главный пользователь может читать любые файлы в структуре, писать любые файлы, кроме расположенных в подструктурах, смонтированных только для чтения, и исполнять любые файлы, исполнение которых разрешено хотя бы одной категории пользователей.
Изменять права доступа к файлу может лишь его владелец (или главный пользователь системы). Для этого служит команда «chmod» (от англ. «change mode» («изменить режим» доступа к файлу), уже встретившаяся нам в примере выше. Синтаксис этой команды поддерживает две нотации — символическую и числовую. Мы рассмотрим лишь символическую.
Символическая нотация представляет собой операнд-слитную запись клауз из трех составляющих: категории пользователя, вид назначения прав и собственно назначаемые правомочия. Операнд может включать в себя более одной клаузы. Клаузы разделяются запятыми ( без промежутков ).
Категории пользователей соответствуют описанным выше и обозначаются последовательностями букв:
«u» — владелец файла; от англ. «user» («пользователь»));
«g» — группа-владелец файла; от англ. «group» («группа»));
«o» — остальные пользователи; от англ. «other» («прочие»)).
«a» — все пользователи (от англ. «all» («все»)), это сокращенная запись для «ugo».
Читать дальше