Операционная система UNIX - Страница 11
Попытаемся получить листинг каталога
##permission denied
Увы...
$ cat file1
ok
Тем не менее, заранее зная имя файла (file1), можно работать с ним (например, прочитать, если есть соответствующее право доступа)
Особого внимания требует право на запись для каталога. Создание и удаление файлов в каталоге требуют изменения его содержимого, и, следовательно, права на запись в этот каталог. Самое важное, что при этом не учитываются права доступа для самого файла. То есть для того, чтобы удалить некоторый файл из каталога, не обязательно иметь какие-либо права доступа к этому файлу, важно лишь иметь право на запись для каталога, в котором находится этот файл. Имейте в виду, что право на запись в каталог дает большие полномочия, и предоставляйте это право с осторожностью. Правда, существует способ несколько обезопасить себя в случае, когда необходимо предоставить право на запись другим пользователям, — установка флага Sticky bit на каталог. Но об этом мы поговорим чуть позже.
В табл. 1.2 приведены примеры некоторых действий над файлами и минимальные права доступа, необходимые для выполнения этих операций.
Таблица 1.2. Примеры прав доступа
Команда | Смысл действия | Минимальные права доступа | |
---|---|---|---|
для обычного файла | для каталога, содержащего файл | ||
cd /u/andrei | Перейти в каталог /u/andrei | - | x |
ls /u/andrei/*.с | Вывести все файлы с суффиксом .c этого каталога | - | r |
ls -s /u/andrei/*.с | Вывести дополнительную информацию об этих файлах (размер) | - | rx |
cat report.txt | Вывести на экран содержимое файла report.txt | r | x |
cat >> report.txt | Добавить данные в файл report.txt | w | x |
runme.sh | Выполнить программу runme | x | x |
runme | Выполнить скрипт командного интерпретатора runme.sh | rx | x |
rm runme | Удалить файл runme в текущем каталоге | - | xw |
Итак, для выполнения операции над файлом имеют значение класс доступа, к которому вы принадлежите, и права доступа, установленные для этого класса. Поскольку для каждого класса устанавливаются отдельные права доступа, всего определено 9 прав доступа, по 3 на каждый класс.
Операционная система производит проверку прав доступа при создании, открытии (для чтения или записи), запуске на выполнение или удалении файла. При этом выполняются следующие проверки:
1. Если операция запрашивается суперпользователем, доступ разрешается. Никакие дополнительные проверки не производятся. Это позволяет администратору иметь неограниченный доступ ко всей файловой системе.
2. Если операция запрашивается владельцем файла, то:
а) если требуемое право доступа определено (например, при операции чтения файла установлено право на чтение для владельца- пользователя данного файла), доступ разрешается,
б) в противном случае доступ запрещается.
3. Если операция запрашивается пользователем, являющимся членом группы, которая является владельцем файла, то:
а) если требуемое право доступа определено, доступ разрешается,
б) в противном случае доступ запрещается.
4. Если требуемое право доступа для прочих пользователей (other) установлено, доступ разрешается, в противном случае доступ запрещается.
Система проводит проверки в указанной последовательности. Например, если пользователь является владельцем файла, то доступ определяется исключительно из прав владельца-пользователя, права владельца-группы не проверяются, даже если пользователь является членом владельца-группы. Чтобы проиллюстрировать это, рассмотрим следующее:
----rw-r-- 2 andy group 65 Dec 22 19:13 file1
Даже если пользователь andy является членом группы group, он не сможет ни прочитать, ни изменить содержимое файла file1. В то же время все остальные члены этой группы имеют такую возможность. В данном случае, владелец файла обладает наименьшими правами доступа к нему. Разумеется, рассмотренная ситуация носит гипотетический характер, поскольку пользователь andy в любой момент может изменить права доступа к данному файлу как для себя (владельца), так и для группы, и всех остальных пользователей в системе.
Дополнительные атрибуты файла
Мы рассмотрели основные атрибуты, управляющие доступом к файлу. Существует еще несколько атрибутов, изменяющих стандартное выполнение различных операций. Как и в случае прав доступа, эти атрибуты по- разному интерпретируются для каталогов и других типов файлов.
Дополнительные атрибуты также устанавливаются утилитой chmod(1), но вместо кодов 'r', 'w' или 'x' используются коды из табл. 1.3. Например, для установки атрибута SGID для файла file1 необходимо выполнить команду
$ chmod g+s file1
В табл. 1.3 приведены дополнительные атрибуты для файлов, и показано, как они интерпретируются операционной системой.
Таблица 1.3. Дополнительные атрибуты для обычных файлов
Код | Название | Значение |
---|---|---|
t | Sticky bit | Сохранить образ выполняемого файла в памяти после завершения выполнения |
s | Set UID, SUID | Установить UID процесса при выполнении |
s | Set GID, SGID | Установить GID процесса при выполнении |
1 | Блокирование | Установить обязательное блокирование файла |
Установка атрибута Sticky bit (действительное название — save text mode) редко используется в современных версиях UNIX для файлов. В ранних версиях этот атрибут применялся с целью уменьшить время загрузки наиболее часто запускаемых программ (например, редактора или командного интерпретатора). После завершения выполнения задачи ее образ (т.е. код и данные) оставались в памяти, поэтому последующие запуски этой программы занимали значительно меньше времени.