logo
UNIX_podibni_OS / Unix подобные ОС Лекции

Управление пользователями и правами доступа База данных пользователей системы

Рисунок 2.28. база данных пользователей

Все данные о пользователях UNIX хранит в файле /etc/passwd в текстовом виде. Каждому пользователю соответствует одна строка, поля которой разделяются двоеточиями:

входное имя:x:UID:GID:полное имя:домашний каталог:стартовый shell

Рисунок 2.29. Пример файла /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/bin/false

daemon:x:2:2:daemon:/sbin:/bin/false

adm:x:3:4:adm:/var/adm:/bin/false

...

Каждый пользователь явно связан с одной из групп — это основная группа пользователя. Это сделано для того, чтобы каждый пользователь состоял хотя бы в одной группе. Все новые файлы, создаваемые процессами этого пользователя, в качестве группы-владельца будут получать основную группу данного пользователя.

Из примера видно, что некоторые пользователи имеют «неправильные» командные оболочки, такие как /bin/false, работа в которых невозможна (команда false только и делает, что возвращает ошибку и немедленно завершается). Это сделано специально для того, чтобы исключить возможность входа таких пользователей в систему, а соответствующие учётные записи в /etc/passwd принадлежат псевдопользователям, от имени которых выполняются некоторые системные задачи и которыми не пользуются реальные люди.

Пароли на вход в систему пользователей в UNIX не хранятся в открытом виде, хранятся только их хэши (набор байт, получаемый из пароля с помощью односторонней функции). Даже если злоумышленник получит значение этого хэша, ему придется подбирать пароль, применяя данную одностороннюю функцию к различным словам и сравнивая со значением хэша. Часто хэши хранятся в специальном файле (например, /etc/shadow), доступ к которому разрешен только системе, так что перебор вообще не возможен.

Аналогичным образом информация о группах хранится в файле /etc/group. Каждой строке файла соответствует информация о группе: её имя, числовой идентификатор и список пользователей, входящих в эту группу.

В современных версиях операционной системы Linux используется альтернативный механизм хранения паролей — TCB. Основное отличие состоит в том, что содержимое файла /etc/shadow «размазывается» по множеству каталогов, так что хэш пароля каждого пользователя хранится в каталоге, к которому только он один имеет доступ. Это позволяет ограничить привилегии утилиты passwd, с помощью которой пользователь может сам себе изменить пароль. При использовании схемы TCB для выполнения этой операции не требуется повышение привелений passwd (получение прав суперпользователя) с помощью атрибута SetUID.

Изменение информации о пользователях, так же как и добавление новых пользователей, может производиться прямым редактированием этих файлов, однако более корректным способом является использование специальных утилит, которые рассматриваются далее.