En los últimos días he configurado un sistema Linux con autenticación LDAP y todo funciona bien, pero todavía hay algo que realmente no puedo entender con respecto a NSS y PAM, también después de mucha investigación.
Citando:
NSS permite a los administradores especificar una lista de fuentes donde se almacenarán y buscarán archivos de autenticación, nombres de host y otra información
y
PAM es un conjunto de bibliotecas que proporcionan una plataforma de autenticación configurable para aplicaciones y el sistema operativo subyacente.
Lo que no entiendo es cómo PAM y NSS trabajan e interactúan juntos. En este libro, la arquitectura se explica bastante bien: configuro PAM para usar pam_ldap
para cuentas LDAP y pam_unix
para cuentas locales, luego configuro nsswitch.conf
para obtener información de archivos locales y LDAP.
Si lo he entendido correctamente, LDAP se usa dos veces: primero pam_ldap
por NSS, que se llama desde pam_unix
. ¿Está bien? ¿LDAP se usa realmente dos veces? Pero, ¿por qué necesito configurar NSS y PAM? Mi explicación es que PAM realiza tareas diferentes que NSS y lo utilizan otros programas. Pero, entonces, debería ser posible usar solo NSS o solo PAM, como he leído en esta página .
Así que experimenté un poco y primero intenté eliminar LDAP de nsswitch.conf
(y la autenticación dejó de funcionar como si solo pam_ldap no fuera suficiente para hacer el trabajo). Luego volví a habilitar LDAP en NSS y lo eliminé de la configuración de PAM (esta vez todo funcionó bien, como si fuera pam_ldap
inútil y NSS es suficiente para autenticar a un usuario).
¿Hay alguien que pueda ayudarme a aclarar esto? Muchas gracias de antemano.
ACTUALIZAR
Acabo de intentar algo ahora. I eliminó de nuevo todas las pam_ldap
entradas en todos los campos de configuración de PAM y también he eliminado shadow: ldap
de nsswitch.conf
. Como ahora en todo el sistema solo hay líneas: passwd: ldap files
y group: ldap files
en nsswitch.conf
. Bueno ... el inicio de sesión con usuarios LDAP funciona perfectamente, esas dos líneas (más /etc/ldap.conf
) son suficientes para configurar la autenticación LDAP.
Desde mi conocimiento, PAM es independiente de NSS, pero mis pruebas mostraron que no lo es. Entonces me pregunto si es posible desactivar completamente NSS y usar solo PAM.
fuente
getent shadow | grep LDAPUSER
grep LDAPUSER /etc/shadow
Respuestas:
Ayuda a descomponer cosas como esta en tu cabeza:
NSS : un sistema basado en módulos para controlar cómo se ensamblan varias bases de datos a nivel del sistema operativo en la memoria. Esto incluye (pero no se limita a)
passwd
,group
,shadow
(esto es importante tener en cuenta), yhosts
. Las búsquedas de UID usan lapasswd
base de datos, y las búsquedas de GID usan lagroup
base de datos.PAM : un sistema basado en módulos para permitir la autenticación y la contabilidad basadas en servicios. A diferencia de NSS, no está extendiendo las bases de datos existentes; Módulos PAM puede usar cualquier lógica que les gusta, aunque los inicios de sesión de concha aún dependen de las
passwd
ygroup
bases de datos de NSS. (siempre necesita búsquedas UID / GID)La diferencia importante es que PAM no hace nada por sí solo. Si una aplicación no se vincula con la biblioteca PAM y realiza llamadas a ella, PAM nunca se usará. NSS es esencial para el sistema operativo, y las bases de datos son bastante ubicuas para el funcionamiento normal del sistema operativo.
Ahora que tenemos eso fuera del camino, aquí está la bola curva: mientras pam_ldap es la forma popular de autenticarse contra LDAP, no es la única forma.
shadow
está apuntando al servicio ldap/etc/nsswitch.conf
, cualquier autenticación que se ejecute en la base de datos en la sombra tendrá éxito si los atributos para esas asignaciones de campo en la sombra (particularmente el campo de contraseña encriptada) están presentes en LDAP y permitirían el inicio de sesión.pam_unix.so
potencialmente puede resultar en autenticación contra LDAP, ya que se autentica contra la base de datos en la sombra. (que es administrado por NSS y puede estar apuntando a LDAP)pam_sss.so
, qué enlacessssd
), es posible que se haga referencia a LDAP.fuente
passwd
ygroup
(NSS), lo que significa que deben estar en el sistema local (/etc/passwd
+/etc/group
) u obtenerse a través delldap
módulo NSS.getent passwd
ygetent group
con LDAP habilitado para ambas bases de datos/etc/nsswitch.conf
. Luego deshabilite LDAP en ese archivo y ejecute ambos comandos nuevamente.getent
es un comando para descargar bases de datos NSS.NSS está allí para enumerar información sobre servicios / usuarios (a qué grupo pertenece, dónde está su directorio de inicio, etc.). PAM determina qué hacer con esa información.
Si desea utilizar LDAP para la autenticación , necesita pam_ldap. Si está utilizando otra cosa (cuentas locales, Kerberos, etc.), entonces no puede.
Entonces hacen cosas diferentes. NSS obtiene información, PAM determina quién puede hacer qué una vez que se obtiene esa información.
fuente
common-auth
contenía solo pam_env, pam_unix y pam_deny.