Права доступа в файловой системе Unix
Говоря о правах доступа пользователя к файлам, стоит заметить, что в действительности манипулирует файлами не сам пользователь, а запущенный им процесс (например, команда rmили cat). Поскольку и файл, и процесс создаются и управляются системой, ей нетрудно организовать какую угодно политику доступа одних к другим, основываясь на любых свойствах процессов как субъектов и файлов как объектов системы. В Unix, однако, используются не какие угодно свойства, а результат идентификации пользователя – его UID. Каждый процесс системы обязательно принадлежит какому-нибудь пользователю, и идентификатор пользователя – обязательное свойство любого процесса Unix. Когда программа loginзапускает стартовый командный интерпретатор, она приписывает ему UID, полученный в результате диалога. Все процессы, запущенные пользователем во время терминальной сессии, будут иметь его идентификатор. Ключ -l программы lsопределяет формат выдачи (справа налево): имя файла, время последнего изменения файла, размер в байтах, группа, владелец, количество жестких ссылок и строчка атрибутов. Например:
drwxr-xr-x 2 methody methody 4096 Окт 31 15:21 examples -rw-r--r-- 1 methody methody 26 Сен 22 15:21 loop -r-------- 1 root root 0 Сен 10 02:08 /etc/shadow
Первый символ в строчке атрибутов определяет тип файла. Тип «-» соответствует обычному файлу, а тип «d» – каталогу, тип «l» - символической ссылке, тип «s» - сокету, тип «р» - именованному каналу. Теперь более подробно о том, чему соответствуют девять символов в строке атрибутов, выдаваемой программой ls. Эти девять символов имеют вид rwxrwxrwx, где некоторые «r», «w» и «x» могут заменяться на «-». Очевидно, буквы отражают принятые в Unix три вида доступа – чтение (r ead), запись (w rite) и исполнение (e x ecute). В строке атрибутов они присутствуют в трех экземплярах. Это потому, что любой пользователь (процесс) Unix по отношению к любому файлу может выступать в трех ролях: как владелец (user), как член группы, которой принадлежит файл (group), и как сторонний пользователь (other), никаких отношений собственности на этот файл не имеющий. Строка атрибутов – это три тройки rwx, описывающие права доступа к файлу владельца этого файла (первая тройка), группы, которой принадлежит файл (вторая тройка) и сторонних пользователей (третья тройка). Если в какой-либо тройке не хватает буквы, а вместо нее стоит «-», значит, пользователю в соответствующей роли будет в соответствующем виде доступа отказано. При выяснении отношений между файлом и пользователем, запустившим процесс, роль определяется так: Если UID файла совпадает с UID процесса, пользователь является владельцем файла. Если GID файла совпадает с GID любой группы, в которую входит пользователь, он является членом группы, которой принадлежит файл. Если ни UID, ни GID файла не пересекаются с UID процесса и списком групп, в которые входит запустивший его пользователь, этот пользователь является сторонним. При обращении программы к файлу сначала проверяется, является ли пользователь, с правами которого выполняется программа, владельцем файла. Если да, то на программу распространяются права доступа к файлу владельца файла, все остальные права игнорируются. Если пользователь не является владельцем файла, то проверяется, принадлежит ли файл группе, с правами которой выполняется программа. Если да, применяются права доступа для группы владельца файла, а все остальные права игнорируются. Если же файл не принадлежит ни пользователю, ни группе, с правами которых выполняется программа, тогда применяются права доступа для сторонних пользователей. Права владельца и группы не суммируются. Если программа выполняется с правами доступа владельца и группы, которым принадлежит файл, работают только права владельца файла.
Права доступа хранятся в 16-битовом поле индексного дескриптора файла. 12 битов отведено под хранение режима доступа, а оставшиеся 4 бита определяют тип файла, который устанавливается при создании файла и не подлежит изменению.
Права доступа к файлам и каталогам несколько различаются:
Разрешения, установленные для каталога, имеют более высокий приоритет, чем разрешения, установленные для файлов этого каталога.
|