Дата и время публикации:
Процедуры "Аутентификации и авторизации" и их сравнение
1. Что это такое?
Рассмотрим простую схему процесса входа в систему (англ. login сокращенно от logging in), поэтому давайте взглянем на рисунок 1.1,
Рисунок 1.1
который иллюстрирует последовательность выполнения всех процедур внутри процесса login, состоящий из двух главных процедур – аутентификации(англ.authentication) и авторизации(англ.authorization). При этом задача последней состоит в том, чтобы выделить или назначить права доступа вновь созданным субъектам системы к её ресурсам(в данном случае – порождаемому процессу), а не подтверждать право пользоваться ими, что соответственно входит в задачу первой подсистемы.
2.Процедуры "Аутентификации и авторизации"
2.1 Процедура "Аутентификации"
После ввода пользователем своего имени (username) выполняется встроенная процедура "Идентификации" в виде поиска его учетной записи (struct passwd).
После того как она была найдена, производится такая же встроенная процедура "Проверки пароля", которая выполняется с использованием функции crypt(3): производит только сверку введеного пароля (password) и хэш-функции из учетной записи теневых паролей (struct shadow) и паравленной солью (англ.salt).
Выборка учетной записи из баз пользователей (passwd) и теневых паролей (shadow) службы преобразования имен (англ.Name Service Switch, NSS) производится обычно из локальных файлов /etc/passwd и /etc/shadow соответственно. Исключением является использование сервисов NIS, LDAP и т.п.
Процедура "Аутентификации" будет завершена с отказом (failure), если выборка учетных записей пользователей и проверка пароля завершаются с возвратом null-указателя, как показано на рисунке 1.1. В обратом случае, осуществляется переход к процедуре авторизации.
2.2 Процедура "Авторизации"
Как показано на рисунке 1.1, после успешного завершения процедуры аутентификации выполняется:
- назначение переменных окружения, таких как HOME, SHELL, USER и т.п.
- проверка на соответствие SHELL, указанной в учетной записи пользователя, списку разрешенным в системе для использования интерпретаторов команд,
- назначение только что созданному процессу прав владения в виде пользователя и группы функцией setgid(),
- а также создание списка членства пользователя в других группах путем просмотра их учетных записей в базе shadow службой NSS. Обычно производится из локального файлов /etc/group, если не определены другие службы, такие как NIS, LDAP и им подобные.
Следом производится порождение дочернего процесса, условием запуска которого является нулевое значение от системного вызова fork(2), и/или запуск системного вызова из семейства exec(3).
2.3 Управление сессией
Как таковое отсутствует. За исключением завершения сессии, которое может быть сделано только в ручную, например нажатием пользователем Ctrl+C или kill(3) из другой консоли, что несомненно является недостатком данной схемы входа в систему, но широко используется в системных программах, наподобие SU(1). Поэтому в *nix-системах для создания и управления сессией широко применяется подгружаемые программные модули аутентификации Linux-PAM, применение которых будет рассмотрено в дальнейшем...
2.4 Сравнение процедур аутентификации и авторизации
Различие между процедурами аутентификации и авторизации приведено в сравнительной таблице 2.4.1
Что сравниваем | Аутентификация | Авторизация |
---|---|---|
Базис | Проверка личности пользователя для предоставления доступа к систем | Проверка привелегий или прав доступа пользователя к ресурсам |
Включает в себя | Подтверждение учетных данных пользователя | Проверка достоверности прав доступа |
Порядок использования | Выполняется первой | Выполняется после успешно проведенной процедуры |
Пример использования | При запуске SU(1) первой выполняется данная процедура, согласно введенным значениям в полях имени пользователя формы управления, показанной на рисунке 1.1 | Во второй фазе запуска, после успешно проведенной аутентификации производится назначение привилегий или прав доступа, которые были назначены администратором системы (в *nix-системах суперпользователь root). |
3. Библиография
3.1 Authenticating and authorizing Linux users kept in a MySQL database (libpam-mysql and libnss-mysql)
3.2 Difference Between Authentication and Authorization
3.3 Source file coreutils/src/su.c
3.4 System Databases and Name Service Switch