Pluggable Authentication Modules (PAM)

Материал из sysadm
Перейти к навигации Перейти к поиску

Ссылки по теме

PAM используют различные службы и программы для аутентификации пользователей. Изначально конфигурация для всех служб определялась в файле /etc/pam.conf, правила содержали 5 полей (service, type, control, module-path, module-arguments). Сейчас используется каталог /etc/pam.d, для каждой службы используется отдельный файл, имя которого определяет значение service , а правила содержат 4 поля (type, control, module-path, module-arguments)

  1. type - тип правила (account, auth, password, session)
  2. control - реакция на результат выполнения модуля
  3. module-path - файл модуля
  4. module-arguments - параметры модуля

Алгоритм обработки правил:

  1. Вызывается указанный модуль с указанными параметрами
  2. Модуль возвращает результат выполнения (success, perm_denied, auth_err, user_unknown, ...)
  3. В зависимости от полученного результата, выполняются действия определенные в поле control

Поле control имеет формат [result1=action1 result2=action2 ... default=action]. Если для полученного результата не определено действие, то срабатывает действие заданное в default.

Можно использовать как полную форму определения действий, так и предопределенные наборы

       required
           [success=ok new_authtok_reqd=ok ignore=ignore default=bad]

       requisite
           [success=ok new_authtok_reqd=ok ignore=ignore default=die]

       sufficient
           [success=done new_authtok_reqd=done default=ignore]

       optional
           [success=ok new_authtok_reqd=ok default=ignore]

Результаты выполнения модуля (точный список возможных результатов может зависеть от версии PAM и дистрибутива Linux)

  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, conv_again, incomplete


Действия (более подробно в man pam.d, перевел как сам понял)

       ignore
           выполнение всех последующих модулей (в текущем стеке модулей) не изменит итоговый результат возвращаемый
           приложению.

       bad
           это действие указывает на то, что данный результат должен рассматриваться как признак отказа модуля,
           если этот модуль является первым в стеке, то его результат будет использоваться для всего стека.

       die
           эквивалентно bad, но обработка стека модулей прекращается сразу и результат возвращается приложению

       ok
           текущий результат переопределит итоговый результат стека модулей, при условии что ранее не было выполнено
           действие bad

       done
           эквивалентно ok, но обработка стека модулей прекращается сразу и результат возвращается приложению

       N (положительное целое больше нуля)
           эквивалентно ok, но обработка следующих N правил пропускается

       reset
           сбрасывает все состояния определенные ранее и продолжает обработку следующих модулей.