В табл. 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 для файлов. В ранних версиях этот атрибут применялся с целью уменьшить время загрузки наиболее часто запускаемых программ (например, редактора или командного интерпретатора). После завершения выполнения задачи ее образ (т.е. код и данные) оставались в памяти, поэтому последующие запуски этой программы занимали значительно меньше времени.
Читать дальше