Что такое PAM Библиотека Pluggable Authentication Modules (PAM) является обобщённым API для служб, связанных с аутентификацией, которые позволяют системному администратору добавлять новые методы аутентификации простой установкой новых модулей PAM, и изменять политику аутентификации посредством редактирования конфигурационных файлов.
Реализации PAM 1. Linux-PAM 2. OpenPAM 3. Java PAM или JPam
Архитектура PAM и взаимосвязь ее частей
Синтаксис файла конфигурации PAM.
Примитивы auth наиболее очевидное действие: вы удостоверяете свою личность, предоставляя некоторый набор реквизитов. Обычно это имя пользователя и пароль, но возможны и другие варианты: например, физический ключ, а то и биометрические методы, вроде отпечатков пальцев или сканирования сетчатки глаза. account действия, определяющие, можно ли вам зайти в систему (теперь, когда мы уже знаем, кто вы). К этой категории можно отнести, например, модуль PAM, ограничивающий вход пользователей в систему в зависимости от времени суток. session действия по выделению ресурсов, которые могут потребоваться пользователю во время сессии, например, монтирование домашнего каталога пользователя, установка лимитов на использование ресурсов системы, вывод ежедневного сообщения и т. д. password действия по обновлению реквизитов пользователя (обычно пароля).
Политика required Если модуль возвратил положительный ответ, выполняется оставшаяся часть цепочки, запрос удовлетворяется, если никакой другой модуль не отработает отрицательно. Если же модуль возвратит отрицательный ответ, остаток цепочки тоже отрабатывается, но запрос отвергается. requisite Если модуль возвращает положительный ответ, выполняется оставшаяся часть цепочки, запрос удовлетворяется, если никакой другой модуль не отработает отрицательно. Если же модуль отрабатывает отрицательно, то отработка цепочки немедленно прекращается, а запрос отвергается. sufficient Если модуль возвратит положительный ответ, и ни один из предыдущих модулей в цепочке на отработал отрицательно, то отработка цепочки немедленно прекращается, а запрос удовлетворяется. Если модуль отработал отрицательно, то результат игнорируется и цепочка отрабатывается дальше. optional Модуль отрабатывается, но результат выполнения игнорируется. Если все модули в цепочке помечены как optional, то удовлетворяться будут все запросы