Файлы каталога /etc/pam.d/*#

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

Система по умолчанию использует файлы конфигурации в каталоге /etc/pam.d/*. Если каталог отсутствует, система будет применять единый файл конфигурации pam.conf.

Файлы конфигурации в каталоге содержат строки следующего вида:

<type> <control> <module-path> <module-arguments>

Где:

  • <type> - тип модуля;

  • <control> - управляющая директива, задающая способ вызова;

  • <module-path> - полный путь к модулю или полное имя модуля;

  • <module-arguments> - аргументы модуля.

Существует четыре различных типа модулей, представленных в таблице ниже.

Тип модуля

Описание

auth

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

account

Управление учетной записью. Проверяет, истек ли срок действия пароля, существуют ли ограничения часов доступа. После идентификации определяет предоставлен ли доступ к определенным сервисам

password

Управление паролем. Используется для смены ключа аутентификации по запросу или по истечению срока действия и проверки на соблюдение парольной политики

session

Управление сеансами. Выполняет задачи во время входа или выхода пользователя, например: аудит и т.д.

Конфигурационный файл может содержать строки как одного, так и нескольких типов модулей в зависимости от конкретной службы или сервиса.

Модули поддерживают следующие управляющие директивы:

Управляющая директива

Описание

required

Запрос выполняется успешно, если модуль не выдает ошибок. В случае, если проверка модуля завершилось с ошибкой, продолжится проверка других модулей, указанных в конфигурационном файле, но в итоге запрос будет отклонен

requisite

Модуль должен быть успешно проверен, чтобы запрос выполнился успешно. В ином случае выполнение запроса будет немедленно прервано

sufficient

В случае, если модуль проверен успешно, выполнение запроса будет зависеть от статуса проверки модулей с директивами required и requisite. Неудача при проверке не повлияет на выполнение запроса

optional

Результат проверки модуля игнорируется

Также существуют две дополнительные управляющие директивы include и substack, позволяющие включать строки с определенными типами модуля из одного файла конфигурации в другой. Добавленные модули будут обработаны в том порядке, в котором расположены в исходном файле. Если при использовании директивы substack проверка одного из включаемых модулей с действиями done или die завершится с ошибкой, остальные модули будут проверены.

Иные управляющие директивы настраиваются с помощью следующего синтаксиса:

[value1=action1 value2=action2 ...]

Где:

  • valueN соответствует коду возврата из функции, вызванной в модуле, для которого определена строка. Выбирается одно из следующих: 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, и default;

  • actionN может быть целым числом n, означающим действие «перескочить через следующие n модулей в наборе», или одним из значений, указанных в таблице ниже.

Значение actionN

Описание

ignore

Указание на то, что при использовании с несколькими модулями статус возврата текущего модуля не будет влиять на код возврата

bad

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

die

Действие аналогично ok. Отличается тем, что выполнение запроса будет немедленно прервано в случае сбоя

ok

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

done

Действие аналогично ok. Отличается тем, что выполнение запроса будет немедленно прервано в случае сбоя

reset

Действие очищает данные о состоянии набора модулей и начинает собирать заново со следующего модуля

Каждую из четырех стандартных управляющих директив можно представить в виде синтаксиса и использовать в конфигурационном файле.

Управляющая директива

Синтаксис директивы

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 располагаются в каталогах lib/security или /lib64/security.

Аргументы различны и задокументированы для каждого конкретного модуля. Обратите внимание: при необходимости добавления в аргумент пробелов, он должен быть заключен в квадратные скобки - ..[..]...

Пример конфигурационных файлов /etc/pam.d/vlock:

auth       include      system-auth
account    required     pam_permit.so