Последовательнось проверки прав доступа в UNIX
Б) База данных пользователей системы
Все данные о пользователях UNIX хранит в файле /etc/passwd в текстовом виде. Каждому пользователю соответствует одна строка, поля которой разделяются двоеточиями:
входное имя:x:UID:GID:полное имя:домашний каталог:стартовый shell
ПРИМЕР-> root:x:0:0:root:/root:/bin/bash
ПРИМЕР-> daemon:x:2:2:daemon:/sbin:/bin/false
Каждый пользователь явно связан с одной из групп — это основная группа пользователя. Это сделано для того, чтобы каждый пользователь состоял хотя бы в одной группе. Все новые файлы, создаваемые процессами этого пользователя, в качестве группы-владельца будут получать основную группу данного пользователя.
Из примера видно, что некоторые пользователи имеют «неправильные» командные оболочки, такие как /bin/false, работа в которых невозможна (команда false только и делает, что возвращает ошибку и немедленно завершается). Это сделано специально для того, чтобы исключить возможность входа таких пользователей в систему, а соответствующие учётные записи в /etc/passwd принадлежат псевдопользователям, от имени которых выполняются некоторые системные задачи и которыми не пользуются реальные люди.
Пароли на вход в систему пользователей в UNIX не хранятся в открытом виде, хранятся только их хэши. В современных системах хеш пароля пользователя не хранится в файле passwd, он вынесен в отдельный файл /etc/shadow. Сделано это потому, что файл passwd обязательно должен быть доступен на чтение всем пользователям системы. Несмотря на то, что в файле хранился хеш пароля, его можно подобрать. То есть, из пароля получают хеш и сравнивают с хешем, хранящемся в файле. Если в поле пароль в файле passwd стоит символ х — это значит, что хеш пароля находится в файле /etc/shadow, если символ * то данная учетная запись временно отключена.
Аналогичным образом информация о группах хранится в файле /etc/group. Каждой строке файла соответствует информация о группе: её имя, числовой идентификатор и список пользователей, входящих в эту группу. group_name:password:group_id:list
Файл /etc/gshadow... По умолчанию UNIX устанавливается без поддержки теневых групповых паролей. Это потому, что хороший системный администратор групповые пароли не использует. Но если вы согласны оставить в стороне осторожность и хотите задействовать механизм групповых паролей, то следует использовать теневые, а не обычные пароли. Причины те же, что упоминались при обсуждении теневых паролей для пользователей.
В современных версиях операционной системы Linux используется альтернативный механизм хранения паролей — TCB. Основное отличие состоит в том, что содержимое файла /etc/shadow «размазывается» по множеству каталогов, так что хэш пароля каждого пользователя хранится в каталоге, к которому только он один имеет доступ. Это позволяет ограничить привилегии утилиты passwd, с помощью которой пользователь может сам себе изменить пароль. При использовании схемы TCB для выполнения этой операции не требуется повышение привелений passwd (получение прав суперпользователя) с помощью атрибута SetUID.
Изменение информации о пользователях, так же как и добавление новых пользователей, может производиться прямым редактированием этих файлов, однако более корректным способом является использование специальных утилит, которые рассматриваются далее.