Организация UNIX-систем и ОС Solaris




Права доступа


Давно известно, что в Москве раньше были две угнетаемые нации: "погазоны" и "улюки". Их никто никогда не видел, но всем было их очень жалко. Куда ни пойдешь, везде пестрели надписи: "Погазонам не ходить", "Машины улюков не ставить".

В каждой многопользовательской системе полагается развешивать такие таблички по каталогам, чтобы доступ к информации имели только те, кому он разрешен.

Система безопасности UNIX основана на правах доступа к объектам файловой системы - файлам и каталогам. У каждого каталога или файла есть один владелец и один групповой владелец. Группового владельца файла мы будем для краткости называть группой файла.

Словосочетание "группа файла" не означает, что файлы объединены в какие-то группы. Группа файла - это группа пользователей, которой даны некие специальные права на доступ к этому файлу.

Дав команду ls -l в любом каталоге, мы увидим нечто вроде

-rw-r--r-- 1 root root 433 Feb 2 10:30 acd.c

Первый столбец - это тип файла (первый символ) и права доступа (остальные девять символов). Затем указаны число жестких ссылок на файл, владелец и группа файла, размер файла в байтах, дата последней модификации в формате "Месяц Число Год Время" и имя файла. Год часто не указывается для тех файлов, которые были модифицированы в течение последних 12 месяцев.

Права доступа делятся на три части: права, данные, соответственно, владельцу файла, группе файла и всем остальным (обозначаются термином other или world). Таким образом, девять бит слова прав доступа делятся на три части по три бита:

rwx | rw- | r--| u g o

Часть, обозначенная буквой u (user), определяет права доступа владельца файла, буквой g - права доступа группы файла, буквой o - права всех остальных. Существуют права трех типов: на чтение (r, read), запись (w, write) и запуск на выполнение (x, execute). Пользователю, который хочет обратиться к файлу, даются права доступа либо владельца, либо группы файла, либо "всех остальных". Права доступа проверяются так (см. рис. 6.2, на примере слова прав доступа rwxrw-r--):

Алгоритм получения доступа к файлу

Рис. 6.2.  Алгоритм получения доступа к файлу

Когда процесс, работающий от имени пользователя, пытается получить доступ к файлу, система выясняет, является ли он владельцем файла. Если является, то он получает права доступа, определенные для владельца файла. Если он - не владелец, но входит в группу, которая является группой файла, то он получает права доступа, определенные для группы файла. Если он не относится ни к одной из этих двух категорий, он получает права, определенные для всех остальных. Права разных категорий пользователей не складываются: если доступ к файлу хочет получить его владелец, и он входит в группу файла, но права группы более широкие, чем права владельца (например, слово прав доступа r-xrwxr--), то он все равно получит права владельца (в последнем примере - r-x). Для большинства файлов и каталогов права их владельца обычно шире, чем у группы.

Слово прав доступа представляет собой последовательность из двенадцати бит. Для назначения прав доступа обычно используются только обсужденные выше младшие девять бит, поэтому права доступа часто записываются в виде трех десятичных чисел, показывающих права владельца, группы и всех остальных соответственно. Установленный в единицу бит говорит о наличии соответствующего права:

  • мнемоническое обозначение слова прав доступа: rwxrw-r--
  • двоичное представление слова прав доступа: 111 110 100
  • десятичное представление слова прав доступа: 7 6 4




Содержание  Назад  Вперед