В последние дни я настроил систему Linux с аутентификацией LDAP, и все работает отлично, но я все еще не могу понять, что касается NSS и PAM, даже после долгих исследований.
Цитирование:
NSS позволяет администраторам указывать список источников, в которых будут храниться и искать файлы аутентификации, имена хостов и другую информацию.
а также
PAM - это набор библиотек, которые обеспечивают настраиваемую платформу аутентификации для приложений и базовой операционной системы.
Я не понимаю, как PAM и NSS работают и взаимодействуют друг с другом. В этой книге архитектура объясняется довольно хорошо: я настраиваю PAM для использования pam_ldap
для учетных записей LDAP и pam_unix
для локальных учетных записей, затем я настраиваю nsswitch.conf
для получения информации из локальных файлов и LDAP.
Если я правильно понял, LDAP используется дважды: сначала pam_ldap
NSS, который сам вызывается из него pam_unix
. Это правильно? Действительно ли LDAP используется дважды? Но почему мне нужно настроить NSS и PAM? Я объясняю, что PAM выполняет другие задачи, чем NSS, и используется другими программами. Но тогда должно быть возможно использовать только NSS или только PAM, как я прочитал на этой странице .
Поэтому я немного поэкспериментировал и сначала попытался удалить LDAP из nsswitch.conf
(и аутентификация перестала работать, как будто только pam_ldap недостаточно для выполнения этой работы). Затем я снова включил LDAP в NSS и удалил его из конфигурации PAM (на этот раз все работало нормально, как будто pam_ldap
бесполезно, а NSS достаточно для аутентификации пользователя).
Есть ли кто-нибудь, кто может помочь мне прояснить это? Спасибо заранее.
ОБНОВИТЬ
Я только что попробовал сейчас. Я снова удалил все pam_ldap
записи во всех полях конфигурации PAM, и я также удалил shadow: ldap
из nsswitch.conf
. Как и сейчас во всей системе есть только строки: passwd: ldap files
и group: ldap files
в nsswitch.conf
. Ну ... логин с пользователями LDAP работает отлично, этих двух строк (плюс /etc/ldap.conf
) достаточно для настройки аутентификации LDAP.
Насколько мне известно, PAM независим от NSS, но мои тесты показали, что это не так. Поэтому я спрашиваю себя, возможно ли полностью отключить NSS и использовать только PAM?
источник
getent shadow | grep LDAPUSER
grep LDAPUSER /etc/shadow
Ответы:
Это помогает разбить такие вещи в вашей голове:
NSS - модульная система для управления сборкой различных баз данных на уровне ОС в памяти. Это включает в себя (но не ограничивается)
passwd
,group
,shadow
(это важно отметить), иhosts
. Поиск UID используетpasswd
базу данных, а поиск GID используетgroup
базу данных.PAM - модульная система, обеспечивающая аутентификацию и учет на основе услуг. В отличие от NSS, вы не расширяете существующие базы данных; Модули PAM могут использовать любую логику, какую пожелают, хотя входы в оболочку по-прежнему зависят от баз данных
passwd
иgroup
NSS. (вам всегда нужны UID / GID поиски)Важным отличием является то, что PAM ничего не делает сам по себе. Если приложение не связывается с библиотекой PAM и не обращается к ней, PAM никогда не будет использоваться. NSS является ядром операционной системы, а базы данных довольно распространены для нормальной работы ОС.
Теперь, когда у нас это не так, вот кривая: хотя pam_ldap является популярным способом аутентификации на LDAP, это не единственный способ.
shadow
указывает на службу ldap внутри/etc/nsswitch.conf
, любая аутентификация, которая выполняется на теневой базе данных, будет успешной, если атрибуты для этих сопоставлений теневого поля (в частности, поля зашифрованного пароля) присутствуют в LDAP и позволят войти в систему.pam_unix.so
потенциально может привести к аутентификации по LDAP, так как он аутентифицируется по теневой базе данных. (который управляется NSS и может указывать на LDAP)pam_sss.so
, которая перехватываетsssd
), возможно, на LDAP будут ссылаться.источник
passwd
иgroup
баз данных (NSS), что означает , что они должны быть в локальной системе (/etc/passwd
+/etc/group
), или полученные с помощьюldap
модуля NSS.getent passwd
иgetent group
с включенным LDAP для обеих баз данных в/etc/nsswitch.conf
. Затем отключите LDAP в этом файле и снова запустите обе команды.getent
команда для сброса баз данных NSSNSS предназначен для перечисления информации об услугах / пользователях (к какой группе вы принадлежите, где находится ваш домашний каталог и т. Д.). PAM определяет, что делать с этой информацией.
Если вы хотите использовать LDAP для аутентификации, вам нужен pam_ldap. Если вы используете что-то другое (локальные учетные записи, Kerberos и т. Д.), То вы не можете.
Так что они делают разные вещи. NSS получает информацию, PAM определяет, кому разрешено делать, как только эта информация будет получена.
источник
common-auth
содержит только pam_env, pam_unix и pam_deny.