Что такое PAM

Обновлено и опубликовано Опубликовано:

PAM —
простыми словами

набор подключаемых модулей, которые отвечают за аутентификацию в системе. По сути, это API, который операционная система или приложения могут использовать, чтобы отправить запросы на проверку подлинности пользователя. PAM расшифровывается как Pluggable Authentication Modules; перевод на русский — подключаемые модули аутентификации.

PAM разработана компанией Sun Microsystems и была представлена в 1995 году. Раньше в UNIX за авторизацию пользователя в систему отвечала программа login, которая принимала логин и пароль и сравнивала данные с данными в файле /etc/passwd. Теперь же, login не занимается аутентификацией, а просто передает задачу PAM, который с помощью набора своих или дополнительно подключенных алгоритмов проверяет подлинность пользователя и возвращает ответ.

Данный модуль можно встретить во многих операционных системах на основе UNIX, например, Ubuntu, CentOS, Debian, Red Hat, FreeBSD, Gentoo, Mac OS X, Solaris и многих других.

Настройка PAM выполняется в главном конфигурационном файле /etc/pam.conf и подключаемых из каталога /etc/pam.d, название каждого файла в котором точно соответствует названию программы, которая использует модуль pam для аутентификации. В некоторых системах, например, Linux CentOS, файла pam.conf может и не быть — настройка выполняется с помощью файлов в pam.d.

Пример стандартного файла для аутентификации в SSH:

cat /etc/pam.d/sshd

#%PAM-1.0
auth       required     pam_sepermit.so
auth       substack     password-auth
auth       include      postlogin
# Used with polkit to reauthorize users in remote sessions
-auth      optional     pam_reauthorize.so prepare
account    required     pam_nologin.so
account    include      password-auth
password   include      password-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open env_params
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      password-auth
session    include      postlogin
# Used with polkit to reauthorize users in remote sessions
-session   optional     pam_reauthorize.so prepare

* синтаксис конфигурации — <Тип модуля> <Флаг контроля> <Путь к модулю> <Параметры модуля>

  • <Тип модуля> — варианты: auth (проверка наличия пользователя в системе), account (контроль распределения ресурсов системы), session (события, которые происходят до того, как произойдет авторизация), password (проверка подлинности).
  • <Флаг контроля> — варианты: required (требуется для успешной авторизации и если закончится ошибкой, то в целом pam вернет отказ), requisite (то же самое, что и required с резкой остановкой последующих правил), sufficient (достаточный для проверки подлинности, то есть если завершится успешно, pam вернет успех), optional (дополнительный модуль — результат его работы не влияет на ответ pam; может использоваться для вывода дополнительной информации), include (подключение строк из другого файла), substack (подключение строк из другого файла, но только того же типа, что наша строка).
  • <Путь к модулю> — путь может быть полным (от корня /) или относительно каталога /usr/lib/security и/или /usr/lib64/security.
  • <Параметры модуля> — для указания дополнительных параметров. Например, некоторым модулям можно передать файлы конфигурации.

Еще немного о PAM на Википедии


Дмитрий Моск
— IT-специалист.
Настройка серверов, услуги DevOps.

Другие термины

LXC/LXD   Mikrotik   RAW (формат)   RabbitMQ   RTSP   Синий экран смерти   RemoteApp   PostfixAdmin   Домен   Интернет-провайдер   Service Mesh   OEM   Jira   Java   Root   HTML   VideoUnion   Patroni   BalenaOS   POP3  
.....

Реклама