Файл конфигурации PAM

Файл конфигурации /etc/pam.conf содержит записи для каждого типа модулей PAM и служит для определения алгоритма обработки служебных запросов с помощью заданной последовательности модулей.

Записи файла конфигурации включают следующие поля, разделяемые пробелами или символами табуляции:
имя-службы тип-модуля управляющий-флаг полное-имя-модуля опции-модуля
Ниже приведены описания этих полей:
имя-службы
Задает имя службы. Для определения модуля по умолчанию, используемого приложениями, которые не указаны в записи, применяется ключевое слово OTHER.
тип-модуля
Задает тип модуля. Допустимы следующие типы: auth, account, session и password. Модуль обеспечивает поддержку одного или нескольких типов.
управляющий-флаг
Задает способ вызова модуля. Поддерживаются следующие флаги: required, requisite, sufficient и optional.
полное-имя-модуля

Задает модуль, загружаемый для службы. Допустимыми значениями для путь-к-модулю являются полный путь к модулю или только имя модуля. Если задан полный путь к модулю, библиотека PAM использует этот путь-к-модулю для загрузки 32-разрядных служб или использует 64 подкаталога для 64-разрядных служб. Если полный путь к модулю не задан, то библиотека PAM добавляет к имени модуля префикс /usr/lib/security (для 32-разрядных служб) или /usr/lib/security/64 (для 64-разрядных служб).

опции-модуля
Задает ограниченный по объему список опций для передачи модулям. Допустимые в этом поле значения зависят от того, какие опции поддерживаются модулем, заданным в поле полное-имя-модуля. Это необязательное поле.

Записи, указанные в неправильном формате или содержащие неправильные значения в полях тип-модуля или управляющий-флаг, игнорируются библиотекой PAM. Записи, начинающиеся с символа решетки (#), считаются комментариями и игнорируются.

PAM поддерживает принцип стека, позволяющий службе применять несколько механизмов. Стек реализуется путем создания в файле конфигурации нескольких записей с одинаковым значением поля тип-модуля. Модули вызываются в том порядке, в котором они перечислены в файле для отдельной службы; результат вызова определяется по значению поля управляющий-флаг для каждой записи. Ниже перечислены допустимые значения поля управляющий-флаг с указанием соответствующих действий, выполняемых в стеке:

Значение поля control_flag Поведение
обязательный Обязательный. Для получения положительного результата проверка должна быть успешно выполнена всеми обязательными модулями. Если от одного или нескольких обязательных модулей будет получено сообщение об отрицательном результате, то будет предпринята попытка проверки с помощью всех обязательных модулей, но будет возвращено первое полученное сообщение об ошибке.
requisite Необходимый. Аналогично значению required, за исключением того, что если от необходимого модуля будет получено сообщение об отрицательном результате, следующие модули в стеке не выполняются, и немедленно возвращается первый код ошибки от обязательного или необходимого модуля.
sufficient Достаточный. Если модуль, помеченный как достаточный, успешно провел проверку, и при этом все предыдущие обязательные и достаточные модули не обнаружили ошибок, то все остальные модули игнорируются и возвращается сообщение о положительном результате проверки.
optional Необязательный. Если в стеке нет обязательных модулей и ни один из достаточных модулей не вернул сообщение об успешной проверке, то для получения положительного результата необходимо, чтобы хотя бы один из необязательных модулей успешно провел проверку. Если какой-либо другой модуль вернул сообщение об успешной проверке, то отрицательный результат необязательного модуля игнорируется.
Следующий фрагмент файла /etc/pam.conf является примером стека модулей типа auth для службы входа в систему.
#
# Файл конфигурации PAM /etc/pam.conf
#

# Управление идентификацией
login   auth     required       /usr/lib/security/pam_ckfile    file=/etc/nologin
login   auth     required       /usr/lib/security/pam_aix
login   auth     optional       /usr/lib/security/pam_test      use_first_pass
OTHER   auth     required       /usr/lib/security/pam_prohibit
Пример файла конфигурации содержит три записи для службы входа в систему. Поскольку модули pam_ckfile и pam_aix определены как обязательные, для успешного выполнения операции оба модуля должны отработать успешно. Третий модуль pam_test указан как необязательный. Результат проверки с помощью этого модуля не повлияет на возможность входа пользователя в систему. Опция use_first_pass модуля pam_test требует использовать пароль, введенный при обращении к предыдущему модулю, не запрашивая у пользователя новый пароль.

Указание в качестве имени службы ключевого слова OTHER позволяет задать значения по умолчанию для всех служб, не указанных явно в файле конфигурации. Настройка значений по умолчанию гарантирует, что в любой ситуации будет вызван по крайней мере один модуль данного типа. В данном случае все службы, кроме службы входа в систему, не будут работать, поскольку все вызовы модуля pam_prohibit возвращают ошибку PAM.