Au cours des derniers jours, j'ai mis en place un système Linux avec authentification LDAP et tout fonctionne bien, mais il y a encore quelque chose que je ne peux pas vraiment comprendre concernant NSS et PAM, également après de nombreuses recherches.
Citant:
NSS permet aux administrateurs de spécifier une liste de sources où les fichiers d'authentification, les noms d'hôte et d'autres informations seront stockés et recherchés
et
PAM est un ensemble de bibliothèques qui fournissent une plate-forme d'authentification configurable pour les applications et le système d'exploitation sous-jacent
Ce que je ne comprends pas, c'est comment PAM et NSS fonctionnent et interagissent ensemble. Dans ce livre, l'architecture est assez bien expliquée: je configure PAM à utiliser pam_ldap
pour les comptes LDAP et pam_unix
pour les comptes locaux, puis je configure nsswitch.conf
pour récupérer les informations des fichiers locaux et LDAP.
Si j'ai bien compris, LDAP est utilisé deux fois: d'abord pam_ldap
par NSS qui est lui-même appelé depuis pam_unix
. Est-ce correct? LDAP est-il vraiment utilisé deux fois? Mais pourquoi dois-je configurer à la fois NSS et PAM? Mon explication est que PAM effectue des tâches différentes de NSS et qu'il est utilisé par d'autres programmes. Mais, alors, il devrait être possible d'utiliser uniquement NSS ou uniquement PAM, comme je l'ai lu dans cette page .
J'ai donc expérimenté un peu et j'ai d'abord essayé de supprimer LDAP de nsswitch.conf
(et l'authentification s'est arrêtée pour fonctionner comme si seul pam_ldap n'était pas suffisant pour faire le travail). Ensuite, j'ai réactivé LDAP dans NSS et je l'ai supprimé de la configuration PAM (cette fois, tout a bien fonctionné, comme s'il pam_ldap
était inutile et NSS est suffisant pour authentifier un utilisateur).
Y a-t-il quelqu'un qui peut m'aider à clarifier cela? Merci d'avance.
MISE À JOUR
Je viens d'essayer quelque chose maintenant. J'ai supprimé à nouveau toutes les pam_ldap
entrées dans tous les champs de configuration de pam et j'ai également supprimé shadow: ldap
de nsswitch.conf
. Comme maintenant dans tout le système, il n'y a que les lignes: passwd: ldap files
et group: ldap files
dans nsswitch.conf
. Eh bien ... la connexion avec les utilisateurs LDAP fonctionne parfaitement, ces deux lignes (plus /etc/ldap.conf
) suffisent pour configurer l'authentification LDAP.
D'après mes connaissances, PAM est indépendant de NSS, mais mes tests ont montré que ce n'était pas le cas. Je me demande donc s'il est possible de désactiver complètement NSS et d'utiliser uniquement PAM?
la source
getent shadow | grep LDAPUSER
grep LDAPUSER /etc/shadow
Réponses:
Cela aide à décomposer des choses comme ça dans votre tête:
NSS - Un système basé sur un module pour contrôler la façon dont diverses bases de données de niveau OS sont assemblées en mémoire. Cela inclut (mais ne se limite pas)
passwd
,group
,shadow
(ce qui est important de noter), ethosts
. Les recherches UID utilisent lapasswd
base de données et les recherches GID utilisent lagroup
base de données.PAM - Un système basé sur un module pour permettre l'authentification et la comptabilité basées sur les services. Contrairement à NSS, vous n'étendez pas les bases de données existantes; Les modules PAM peuvent utiliser la logique qu'ils souhaitent, bien que les connexions shell dépendent toujours des bases de données
passwd
etgroup
de NSS. (vous avez toujours besoin de recherches UID / GID)La différence importante est que PAM ne fait rien par lui-même. Si une application ne se lie pas à la bibliothèque PAM et n'y fait pas appel, PAM ne sera jamais utilisé. NSS est au cœur du système d'exploitation et les bases de données sont assez omniprésentes au fonctionnement normal du système d'exploitation.
Maintenant que nous avons cela à l'écart, voici la balle courbe: bien que pam_ldap soit le moyen le plus populaire pour s'authentifier contre LDAP, ce n'est pas le seul moyen.
shadow
pointe vers le service/etc/nsswitch.conf
LDAP à l'intérieur , toute authentification qui s'exécute sur la base de données fantôme réussira si les attributs de ces mappages de champs masqués (en particulier le champ de mot de passe chiffré) sont présents dans LDAP et permettraient la connexion.pam_unix.so
peut potentiellement entraîner une authentification contre LDAP, car il s'authentifie contre la base de données fantôme. (qui est géré par NSS et peut pointer vers LDAP)pam_sss.so
, qui se connectesssd
), il est possible que LDAP soit référencé.la source
passwd
etgroup
(NSS), ce qui signifie qu'ils doivent être sur le système local (/etc/passwd
+/etc/group
), ou obtenus via leldap
module NSS.getent passwd
etgetent group
avec LDAP activé pour les deux bases de données dans/etc/nsswitch.conf
. Désactivez ensuite LDAP dans ce fichier et réexécutez les deux commandes.getent
est une commande de vidage des bases de données NSS.NSS est là pour énumérer des informations sur les services / utilisateurs (à quel groupe vous appartenez, où se trouve votre répertoire personnel, etc.). PAM détermine ce qu'il faut faire de ces informations.
Si vous souhaitez utiliser LDAP pour l' authentification, vous avez besoin de pam_ldap. Si vous utilisez autre chose (comptes locaux, Kerberos, etc.), vous ne pouvez pas.
Ils font donc des choses différentes. NSS obtient des informations, PAM détermine qui est autorisé à faire quoi une fois ces informations obtenues.
la source
common-auth
ne contenait que pam_env, pam_unix et pam_deny.