Выбрать главу

[me@linuxbox ~]$ file /etc/shadow

/etc/shadow: Обычный файл, нет прав на чтение

[me@linuxbox ~]$ less /etc/shadow

/etc/shadow: Отказано в доступе

Причина этого сообщения об ошибке заключается в том, что обычные пользователи не имеют права читать этот файл.

В модели безопасности Unix пользователь может владеть файлами и каталогами. Если пользователь владеет файлом или каталогом, он может управлять доступом к нему. Пользователи могут также принадлежать группе, состоящей из одного или нескольких пользователей, и получить права доступа к файлам и каталогам для членов группы, которые определяются владельцами. Кроме прав доступа для группы, владелец может также определить некоторые права доступа для всех остальных, их в терминологии Unix называют мир (world). Получить информацию о своей идентичности можно с помощью команды id:

[me@linuxbox ~]$ id

uid=500(me) gid=500(me) groups=500(me)

Давайте рассмотрим этот вывод. Когда создается учетная запись пользователя, ей присваивается число, которое называют идентификатором пользователя (user ID), или uid. Это число, исключительно ради удобства человека, отображается как имя пользователя. Пользователю назначается идентификатор основной группы (primary group ID), или gid, и дополнительно пользователь может включаться в состав других групп. Предыдущий пример взят из системы Fedora. В других системах, таких как Ubuntu, вывод команды может немного отличаться.

[me@linuxbox ~]$ id

uid=1000(me) gid=1000(me)

groups=4(adm),20(dialout),24(cdrom),25(floppy),29(audio),30(dip),44(video),

46(plugdev),108(lpadmin),114(admin),1000(me)

Как видите, числа uid и gid отличаются. Это объясняется тем, что в Fedora нумерация учетных записей обычных пользователей начинается с 500, тогда как в Ubuntu — с 1000. Кроме того, пользователь в Ubuntu принадлежит множеству других групп. Это связано с особенностями управления привилегиями доступа к системным устройствам и службам в Ubuntu.

А где же вся эта информация хранится? Как и многое другое в Linux, она хранится в паре текстовых файлов. Учетные записи пользователей хранятся в файле /etc/passwd, а информация о группах — в файле /etc/group. Когда создаются новые учетные записи и группы, эти файлы изменяются вместе с файлом /etc/shadow, где хранится информация о пароле пользователя. Для каждой учетной записи в файле /etc/passwd определяется имя пользователя (для входа), числовой идентификатор пользователя (uid), числовой идентификатор основной группы (gid), действительное имя пользователя, путь к домашнему каталогу и командная оболочка входа (login shell). Заглянув внутрь /etc/passwd и /etc/group, можно заметить, что помимо учетных записей обычных пользователей здесь также хранятся учетные записи суперпользователя (uid 0) и различных других системных пользователей.

В главе 10, где рассказывается о процессах, вы узнаете, что некоторые из этих других «пользователей» в действительности существуют не просто так.

Несмотря на то что во многих Unix-подобных системах обычных пользователей включают в общую группу, такую как users, в современных дистрибутивах Linux принято создавать для каждого пользователя свою, уникальную группу с одним членом и именем, совпадающим с именем пользователя. Это упрощает распределение определенных типов привилегий.

Чтение, запись и выполнение

Права доступа к файлам и каталогам определяются в терминах права на чтение, права на запись и права на выполнение. Если взглянуть на вывод команды ls, можно увидеть некоторые подсказки о том, как эти права реализованы:

[me@linuxbox ~]$ > foo.txt

[me@linuxbox ~]$ ls -l foo.txt

-rw-rw-r-- 1 me    me   0 2012-03-06 14:52 foo.txt

Первые 10 символов в выводе — это атрибуты файла (рис. 9.1). Первый из этих символов определяет тип файла. В табл. 9.1 перечислены типы файлов, которые чаще всего встречаются на практике (существуют также другие, реже используемые типы файлов). Остальные девять символов в атрибутах файла называются режимом доступа к файлу и представляют права на чтение, запись и выполнение для владельца файла, группы — владельца файла и всех остальных.

Рис. 9.1. Атрибуты файла

Установленные атрибуты режима r, w и x оказывают определенное влияние на файлы и каталоги, как показано в табл. 9.2.

Таблица 9.1. Типы файлов