In den letzten Tagen habe ich ein Linux-System mit LDAP-Authentifizierung eingerichtet und alles funktioniert einwandfrei, aber es gibt immer noch etwas, das ich in Bezug auf NSS und PAM nicht wirklich verstehe, auch nach vielen Nachforschungen.
Zitieren:
Mit NSS können Administratoren eine Liste von Quellen angeben, in denen Authentifizierungsdateien, Hostnamen und andere Informationen gespeichert und gesucht werden
und
PAM ist eine Reihe von Bibliotheken, die eine konfigurierbare Authentifizierungsplattform für Anwendungen und das zugrunde liegende Betriebssystem bereitstellen
Was ich nicht verstehe, ist, wie PAM und NSS zusammenarbeiten und interagieren. In diesem Buch wird die Architektur ziemlich gut erklärt: Ich konfiguriere PAM für die Verwendung pam_ldap
für LDAP-Konten und pam_unix
für lokale Konten und konfiguriere nsswitch.conf
dann das Abrufen von Informationen aus lokalen Dateien und LDAP.
Wenn ich richtig verstanden habe, wird LDAP zweimal verwendet: zuerst von pam_ldap
und dann von NSS, von dem aus es selbst aufgerufen wird pam_unix
. Ist das richtig? Wird LDAP wirklich zweimal verwendet? Aber warum muss ich sowohl NSS als auch PAM konfigurieren? Meine Erklärung ist, dass PAM andere Aufgaben als NSS ausführt und von anderen Programmen verwendet wird. Aber dann sollte es möglich sein, nur NSS oder nur PAM zu verwenden, wie ich auf dieser Seite gelesen habe .
Also habe ich ein bisschen experimentiert und zuerst versucht, LDAP von der zu löschen nsswitch.conf
(und die Authentifizierung hat aufgehört zu funktionieren, als ob nur pam_ldap nicht ausreicht , um den Job zu erledigen). Dann habe ich LDAP in NSS wieder aktiviert und es aus der PAM-Konfiguration gelöscht (diesmal hat alles gut funktioniert, als wäre pam_ldap
es nutzlos und NSS reicht aus , um einen Benutzer zu authentifizieren).
Gibt es jemanden, der mir helfen kann, dies zu klären? Vielen Dank im Voraus.
AKTUALISIEREN
Ich habe gerade etwas ausprobiert. Ich entfernte wieder alle pam_ldap
Einträge in allen pam Konfigurationsfelder und ich habe auch entfernt shadow: ldap
von nsswitch.conf
. Wie jetzt in allen Systemen gibt es nur die Zeilen: passwd: ldap files
und group: ldap files
in nsswitch.conf
. Nun, die Anmeldung bei LDAP-Benutzern funktioniert einwandfrei. Diese beiden Zeilen (plus /etc/ldap.conf
) reichen aus, um die LDAP-Authentifizierung zu konfigurieren.
Meines Wissens nach ist PAM unabhängig von NSS, aber meine Tests haben gezeigt, dass dies nicht der Fall ist. Ich frage mich also, ob es möglich ist, NSS vollständig zu deaktivieren und nur PAM zu verwenden.
quelle
getent shadow | grep LDAPUSER
grep LDAPUSER /etc/shadow
Antworten:
Es hilft, Dinge wie diese in deinem Kopf zu zerlegen:
NSS - Ein modulbasiertes System zur Steuerung, wie verschiedene Datenbanken auf Betriebssystemebene im Speicher zusammengestellt werden. Dazu gehört (aber nicht beschränkt auf)
passwd
,group
,shadow
(dies ist wichtig zu beachten), undhosts
. UID-Suchvorgänge verwenden diepasswd
Datenbank und GID-Suchvorgänge verwenden diegroup
Datenbank.PAM - Ein auf Modulen basierendes System, das eine service-basierte Authentifizierung und Abrechnung ermöglicht. Im Gegensatz zu NSS erweitern Sie keine vorhandenen Datenbanken. PAM-Module können beliebige Logik verwenden, obwohl Shell-Anmeldungen weiterhin von den
passwd
undgroup
-Datenbanken von NSS abhängen . (Sie benötigen immer UID / GID-Lookups)Der wichtige Unterschied ist, dass PAM nichts alleine macht. Wenn eine Anwendung keine Verbindung zur PAM-Bibliothek herstellt und diese aufruft, wird PAM niemals verwendet. NSS ist der Kern des Betriebssystems, und die Datenbanken sind für den normalen Betrieb des Betriebssystems ziemlich allgegenwärtig.
Nun, da wir das aus dem Weg haben, ist hier der Kurvenball: Während Pam_ldap die beliebte Methode zur Authentifizierung gegen LDAP ist, ist es nicht die einzige Methode.
shadow
auf den ldap-Dienst innerhalb von verwiesen wird/etc/nsswitch.conf
, ist jede Authentifizierung, die für die Schattendatenbank ausgeführt wird, erfolgreich, wenn die Attribute für diese Schattendatenfeldzuordnungen (insbesondere das verschlüsselte Kennwortfeld) in LDAP vorhanden sind und die Anmeldung ermöglichen würden.pam_unix.so
möglicherweise eine Authentifizierung gegen LDAP erfolgt, da die Authentifizierung gegen die Schattendatenbank erfolgt. (Wird von NSS verwaltet und zeigt möglicherweise auf LDAP.)pam_sss.so
welche Hookssssd
), wird möglicherweise auf LDAP verwiesen.quelle
passwd
undgroup
-Datenbank (NSS) bezogen, dh sie müssen sich auf dem lokalen System (/etc/passwd
+/etc/group
) befinden oder über dasldap
NSS-Modul bezogen werden.getent passwd
undgetent group
mit LDAP - fähigen für beide Datenbanken in/etc/nsswitch.conf
. Deaktivieren Sie dann LDAP in dieser Datei und führen Sie beide Befehle erneut aus.getent
ist ein Befehl zum Speichern von NSS-Datenbanken.NSS dient zum Auflisten von Informationen zu Diensten / Benutzern (zu welcher Gruppe Sie gehören, wo sich Ihr Home-Verzeichnis befindet usw.). PAM legt fest, was mit diesen Informationen geschehen soll.
Wenn Sie LDAP zur Authentifizierung verwenden möchten, benötigen Sie pam_ldap. Wenn Sie etwas anderes verwenden (lokale Konten, Kerberos usw.), ist dies möglicherweise nicht der Fall.
Also machen sie verschiedene Dinge. NSS erhält Informationen, PAM bestimmt, wer was tun darf, sobald diese Informationen vorliegen.
quelle
common-auth
enthielt nur pam_env, pam_unix und pam_deny.