Исторически за процесс авторизации отвечала команда /bin/login. Затем появилось два направления по улучшению качества и гибкости системы авторизации. Первое направление: всевозможные улучшения базы учётных записей, начиная от LDAP и заканчивая СУБД. Второе направление: независимая аутентификация пользователей при доступе к различным сервисам (почта, прокси, ftp), так как у каждого сервиса могут быть свои пользователи. Для решения этих задач была создана система PAM = Pluggable Authentication Modules, то есть подключаемых модулей аутентификации. При их использовании смена источника учётных записей сводится всего лишь к подключению соответствующего модуля и для каждой программы, которая выполняет авторизацию может быть свой набор этих модулей. Сами модули в Linux можно найти в каталоге /lib/security, а их настройки (и наборы модулей для каджой функции) в /etc/pam.d. Например, для упомянутой команды login настройки PAM будут в /etc/pam.d/login. Файлы конфигурации имеют достаточно простой синтаксис: текстовые строки, состоящие из четырех полей разделенных пробельными промежутками (пробелами и табами). Вот эти поля:
<действие модуля>: auth, account, password, session
<тип контроля>: required, requisite, sufficient, optional
<имя модуля>: полное имя файла с модулем
<параметры модуля>
Действие модуля определяет функцию, выполняемую системой PAM:
auth: аутентификация пользователя, то есть определение, кто он есть.
account: управление учётной записью: ограничение доступа по времени дня, ограничение времени действия пароля...
password: смена пароля
session: выполнение действий при установлении сессии: ведение журнала, подключение домашнего каталога (если сетевой)...
Для примера рассмотрим модуль стандартной авторизации UNIX pam_unix. Для auth он выполняет проверку введённого логина и пароля в файлах /etc/passwd и /etc/shadow. Для account он выполняет проверку сроков действия пароля по данным /etc/shadow. Для password выполняет запись пароля в /etc/shadow. Для session просто записывает в системный журнал. Теперь рассмотрим типы контроля. Они указывают, как реагировать системе PAM на успешное окончание соответствующего модуля и как на неуспешное.
required: для успеха набора необходим успех этого модуля, но даже в случае неуспеха выполняются остальные модули
requisite: то же, что и required, но прерывает выполнение сразу. Например, можно таким образом сразу прерывать процесс аутентификации при неверном имени пользователя.
sufficient: успех модуля приводит к успеху всего набора, если не было неуспехов до этого, дальнейшие модули не рассматриваются
optional: результат модуля не влияет на результат набора, если есть другие модули
Последние версии PAM поддерживают ещё более гибкий синтаксис. Вместо стандартных типов контроля можно использовать строки вида “[значение1=действие1 значение2=действие2 ...]”. Соответственно, для каждого значения, возвращенного модулем, указывается соответствующее действие. Значение может быть одним из следующего списка:
success
open_err
symbol_err
service_err
system_err
buf_err
perm_denied
auth_err
cred_insufficient
authinfo_unavail
user_unknown
maxtries
new_authtok_reqd
acct_expired
session_err
cred_unavail
cred_expired
cred_err
no_module_data
conv_err
authtok_err
authtok_recover_err
authtok_lock_busy
authtok_disable_aging
try_again
ignore
abort
authtok_expired
module_unknown
bad_item
Для не указанных явно значений можно использовать значение “default”. Действие может быть числом или одним из указанных ниже. Число n означает, что следующие n модулей должны быть пропущены (эта возможность позволяет писать очень гибкие сценарии авторизации). Список возможных действий:
ignore: результат модуля не окажет влияния на результат набора
bad: результат набора = неуспех, выполнение продолжается
die: результат набора = неуспех, выполнение прекращается
ok: если результат модуля неуспех, то результат набора тоже неуспех, иначе успех, выполнение продолжается
done: то же, что ok, но выполнение прекращается
reset: сбросить информацию о выполнении предыдущих модулей
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.