PAM - что это такое.

Previous Topic Next Topic
 
classic Классический list Список threaded Древовидный
1 сообщение Инструменты
Ответить | Древовидный
Открыть эту статью в виде дерева
|

PAM - что это такое.

Ubuntu user
Это сообщение было обновлено .
Согласно Википедии, Pluggable Authentication Modules (PAM, подключаемые модули аутентификации) — это набор разделяемых библиотек, которые позволяют интегрировать различные низкоуровневые методы аутентификации в виде единого высокоуровневого API. Это позволяет предоставить единые механизмы для управления, встраивания прикладных программ в процесс аутентификации. Является одной из частей стандартного механизма обеспечения безопасности UNIX-систем. Говоря простым языком, с помощью PAM'а можно добавлять дополнительные модули аутентификации для входа в систему. Конфигурационные файлы этих модулей находятся в папке /usr/share/pam-configs, а конфиги самого pam находятся в папке /etc/pam.d. Если посмореть содержание этой папки, можно увидеть такие файлы, как lightdm, gnome-screensaver, sudo. В ubuntu многие из них ссылаются на "/etc/pam.d/common-auth". Он (как и все другие файлы в /etc/pam.d) состоит из 4 столбцов:
<тип модуля>        <управляющий флаг> <путь к библиотеке> <параметры> 


Тип модуля соответствует обозначениям самих модулей (т.е. auth/account/session/passwd)
Управляющий флаг указывает критичность модуля для успешного выполнения операции. Флаг может принимать следующие значения: requisite (необходимый), required (требуемый), sufficient (достаточный) и optional (необязательный).
Путь к библиотеке задает собственно путь до файла модуля. По умолчанию они ищутся в /lib/security/
Параметры задают список аргументов, которые будут переданы модулю. Аргументы передаются аналогично принципу argc/argv в функции main(), за исключением того, что argv[0] содержит не имя модуля, а конкретный аргумент. Таким образом, мы получаем стек модулей, каждый из которых выполняет свое действие. PAM при этом разбирает стек как и положено – сверху вниз. В соответствии с управляющим флагом задаются следующие требования к успешности операции:
requisite (необходимый): если модуль стека вернет отрицательный ответ, то запрос сразу же отвергается. Другие модули при этом не будут выполнены.
required (требуемый): если один или несколько модулей стека вернут отрицательный ответ, все остальные модули будут выполнены, но запрос приложения будет отвергнут.
sufficient (достаточный): если модуль помечен как достаточный и перед ним ни один из необходимых или достаточных модулей не возвратил отрицательного ответа, то все оставшиеся модули в стеке игнорируются, и возвращается положительный ответ.
optional (дополнительный): если в стеке нет требуемых модулей, и если ни один из достаточных модулей не возвратил положительного ответа, то хотя бы один из дополнительных модулей приложения или службы должен вернуть положительный ответ.

Наиболее известные модули:
pam-face-authentication - аутентификация по лицу. Подробнее здесь
pam_usb - аутентификация по флешке или sd-карте.
fprint - аутентификикация по отпечатку пальца.
С помощью них можно расширить функционал системы. Лично у меня установлены pam-face-authentication и pam_usb, и мне этого хватает. Аутентификация при включении компьютера и выхода из экрана блокировки проходит по следующему алгоритму:

А при установке программ или выполнения sudo достаточно либо вставить флешку, либо ввести пароль.
Для этого в моём файле /etc/pam.d/common-auth перед строкой
auth [success=1 default=ignore] pam_unix.so nullok_secure try_first_pass
стоит
auth sufficient      pam_usb.so
А в файлах lightdm и gnome screensaver перед строкой
@include common-auth
стоит
auth requisite pam_face_authentication.so enableX