Вид назначения прав может быть трояким:
«+» – добавить правомочия;
«-» – отнять правомочия;
«=» – установить права, в точности соответствующие назначаемым.
Назначаемые правомочия обозначаются последовательностями уже известных нам букв «rwx»-нотации «r», «w», «x», соответствующим правам на чтение, запись и исполнение.
Таким образом,
«chmod u-w файл» отнимет правомочие записи у владельца;
«chmod g+rw файл» добавит правомочия чтения и записи группе-владельцу;
«chmod go=r» установит правомочия группы-владельца и прочих пользователей в точности равными «только чтению»;
«chmod a+x» добавит правомочие исполнения всем пользователям;
«chmod u=rwx,g=rw,o=r» установит правомочия чтения, записи и исполнения для пользователя, чтения и записи для группы и чтения для всех остальных.
Маска прав по умолчанию
Когда пользователь создает файл (командой «touch» или перенаправлением вывода другой команды), права доступа к нему устанавливаются равными маске прав по умолчанию , за исключением того, что правомочие исполнения обычному файлу не присваиваются. Права по умолчанию задаются командой «umask».
Команда «umask -S» без параметров выводит в символическом виде маску прав по умолчанию. Команда «umask» с параметром в «ugo»-нотации (такой же, как у команды «chmod») добавляет, отнимает или устанавливает права в маске прав.
Рис. 1-41
В примере на Рис. 1-41 Алиса выводит маску, создает файл «файл_1», убеждается в том, что права на вновь созданный файл соответствуют маске, отнимает у прочих пользователей вновь создаваемых файлов правомочие чтения, создает файл «файл_2» и убеждается в том, что права на него соответствуют новому значению маски.
Утилита «umask» не является файловой и изменение значения маски не влияет на права существующих файлов. Значение маски сохраняется до нового их изменения командой «umask» или конца сеанса работы с оболочкой.
Особенности прав на каталоги
Следующий пример может показаться контринтуитивным.
Рис. 1-42
У Алисы нет прав на запись в файл «файл». Тем не менее, она может удалить его командой «rm» (Рис. 1-42).
Но никакого парадокса в этом нет. Удаление файла не является изменением его содержания. Удаление файла – это изменение каталога , в котором он содержится и, соответственно, разрешение или запрещение удаления файла зависит не от прав на него, но от прав на каталог (мы помним, что каталог – это тоже файл).
Рис. 1-43
В примере на Рис. 1-43 Алиса создает каталог «каталог_1», создает в нем файл «файл_1», отнимает у владельца (себя) права на запись, тем не менее, удаляет его, затем создает такой же файл и отнимает у себя права на запись в этот каталог. После этого попытка удаления файла приводит к выводу сообщения о нехватке прав для совершения этой операции.
Соответственно, и создать файл в каталоге, прав записи на который у нее нет, она не сможет 33.
Обратите внимание, что отсутствие права записи в каталог не отнимает у Алисы права на изменение содержимого находящихся в нем файлов (Рис. 1-44).
Рис. 1-44
Это вполне логично, т.к. изменение содержимого никак не влияет на запись в каталоге. Однако здесь есть одна тонкость. Обратите внимание, что первая команда «ls -l» показала длину файла равной 0 байт (что естественно, т.к. этот файл создавался как пустой), а вторая – 4 байта. Разве информация о длине файла не является частью записи о нем в каталоге?
Вся правда о файлах
Дело в том, что понятие о файлах и их «нахождении» в каталоге выше давалось нами в несколько упрощенной форме. Если быть точными, каталог содержит не «файлы», а записи о файлах , вполне подобно тому, как библиотечный каталог содержит не книги, а записи о книгах (или библиографические карточки), а сами книги хранятся на полках 34. Часть полей, выдаваемых командой «ls -l», относится к файлу как единице хранения («книге на полке»), а часть – к записи о нем в каталоге («библиографической карточке»).
Атрибутом записи о файле в каталоге является поле «имя».
Читать дальше