Назад | Перейти на главную страницу

Понять PAM и NSS

В последние дни я установил какую-то систему 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?

Это помогает разбивать такие вещи в голове:

  • НСС - Модульная система для контроля того, как различные базы данных уровня ОС собираются в памяти. Это включает (но не ограничивается) passwd, group, shadow (это важно отметить), и hosts. Поиск UID использует passwd база данных, а поиск по GID использует group база данных.

  • PAM - Модульная система для аутентификации и учета на основе услуг. В отличие от NSS, вы не расширяете существующие базы данных; Модули PAM могут использовать любую логику, которая им нравится, хотя логины оболочки по-прежнему зависят от passwd и group базы данных НСС. (вам всегда нужен поиск UID / GID)

Важное отличие состоит в том, что PAM ничего не делает сам по себе. Если приложение не связывается с библиотекой PAM и не обращается к ней, PAM никогда не будет использоваться. NSS является ядром операционной системы, а базы данных достаточно распространены для нормальной работы ОС.

Теперь, когда это у нас есть, вот кривая точка: в то время как pam_ldap - это популярный способ аутентификации по LDAP, это не только путь.

  • Если shadow указывает на службу ldap в /etc/nsswitch.conf, любая аутентификация, которая выполняется в теневой базе данных, будет успешной, если атрибуты для этих сопоставлений теневых полей (в частности, поле зашифрованного пароля) присутствуют в LDAP и разрешают вход в систему.
    • Это, в свою очередь, означает, что pam_unix.so потенциально может привести к аутентификации по LDAP, поскольку он аутентифицируется в теневой базе данных. (который управляется NSS и может указывать на LDAP)
  • Если модуль PAM выполняет вызовы к демону, который, в свою очередь, запрашивает базу данных LDAP (скажем, pam_sss.so, который зацепляет sssd), возможно, будет ссылка на LDAP.

NSS предназначен для перечисления информации об услугах / пользователях (к какой группе вы принадлежите, где находится ваш домашний каталог и т. Д.). PAM определяет, что делать с этой информацией.

Если вы хотите использовать LDAP для аутентификация ты необходимость pam_ldap. Если вы используете что-то еще (локальные учетные записи, Kerberos и т. Д.), Вы не можете.

Так что они делают разные вещи. NSS получает информацию, PAM определяет, кому и что разрешено делать, как только эта информация получена.