Чтобы обеспечить гибкость при аутентификации пользователей, в 1995 году корпорация Sun Microsystems предложила новый стандарт под названием
Поскольку существуют различные типы аутентификации, стандарт PAM использует несколько динамически загружаемых
Занятие это довольно сложное. Программный интерфейс непростой, и неясно, действительно ли стандарт PAM справляется со всеми существующими проблемами. Однако поддержка стандарта PAM присутствует практически в каждой команде, для которой требуется аутентификация в системе Linux, и большинство версий системы используют этот стандарт. Поскольку он работает поверх интерфейса API для аутентификации, существующего в Unix, интеграция поддержки в клиент требует незначительной (а то и совсем никакой не требует) дополнительной работы.
7.10.1. Конфигурация PAM
Мы изучим основы стандарта PAM, рассмотрев его конфигурацию. Файлы конфигурации PAM обычно можно найти в каталоге /etc/pam.d (в старых системах может использоваться единственный файл /etc/pam.conf). Во многих версиях содержится несколько файлов, и может быть неясно, с чего начать. Определенные имена файлов должны соответствовать частям системы, которые вы уже знаете, например cron и passwd.
Поскольку специальная конфигурация в таких файлах может сильно различаться в разных версиях системы, трудно подыскать общий пример. Рассмотрим образец строки конфигурации, который вы можете обнаружить для команды chsh (команда смены оболочки):
auth requisite pam_shells.so
Эта строка говорит о том, что оболочка пользователя должна располагаться в каталоге /etc/shells, чтобы пользователь мог успешно пройти аутентификацию команды chsh. Посмотрим, каким образом. Каждая строка конфигурации содержит три поля в таком порядке: тип функции, управляющий аргумент и модуль. Вот что они означают для данного примера.
• Тип функции. Это функция, которую пользовательское приложение просит выполнить утилиту PAM. В данном случае это команда auth, задание аутентификации пользователя.
• Управляющий аргумент. Этот параметр контролирует то, что будет делать PAM-приложение
• Модуль. Это модуль аутентификации, который запускается для данной строки и определяет, что именно делает строка. Здесь модуль pam_shells.so проверяет, упоминается ли текущая оболочка пользователя в файле /etc/shells.
Конфигурация PAM детально описана на странице руководства pam.conf(5). Рассмотрим некоторые основные части.
Типы функций
Пользовательское приложение может попросить PAM-утилиту выполнить одну из четырех перечисленных ниже функций:
• auth — выполнить аутентификацию пользователя (проверить, является ли пользователь тем, кем он себя называет);
• account — проверить статус учетной записи пользователя (авторизован ли, например, пользователь на выполнение каких-либо действий);
• session — выполнить что-либо только для текущего сеанса пользователя (например, отобразить сообщение дня);
• password — изменить пароль пользователя или другую информацию в учетной записи.
Для любой строки конфигурации модуль и функция совместно определяют действие PAM-утилиты. У модуля может быть несколько типов функции, поэтому при определении назначения строки конфигурации всегда помните о том, что функцию и модуль следует рассматривать в виде пары. Например, модуль pam_unix.so проверяет пароль, когда выполняет функцию auth, но если он выполняет функцию password, то пароль устанавливается.
Управляющие аргументы и стек правил
Одним важным свойством стандарта PAM является то, что правила, которые определены в строках конфигурации,