Das neue Notebook mit dem schicken Fingerprint-Reader ist endlich da – doch wie benutzen Sie diese nützliche Hardware-Komponente unter Linux zum Authentifizieren von Benutzern? Hier helfen die Pluggable Authentication Modules (PAM) weiter. Sie ermöglichen es, Anwender über eine Vielzahl von unterschiedlichen Verfahren zu authentifizieren.
Standards
Die klassische Benutzerauthentifizierung erfolgt meist mithilfe der Dateien /etc/passwd und /etc/shadow. Für jeden bekannten Anwender steht in der Datei /etc/passwd ein Eintrag mit den Account-Informationen, wie etwa dessen User- und Gruppen-ID sowie Login-Shell und Heimatverzeichnis (Listing 1).
Bei jeder Anmeldung ermittelt PAM die Prüfsumme des vom Benutzer eingegebenen Passworts und vergleicht sie mit der in der Datei /etc/shadow hinterlegten. Stimmen beide überein, gilt der Benutzer als korrekt authentifiziert. Anderenfalls erscheint einen Fehlermeldung, und die Anmeldung des Benutzers schlägt fehl.
# <grep foo /etc/passwd /etc/shadow /etc/passwd:foo:x:503:503::/home/foo:/bin/bash /etc/shadow:foo:$1$svDhI9rq$4Te4c14ODcwP.GqZeeTAA/:14305:0:99999:7:::
Verschiedene Module
Für andere Arten der Benutzeranmeldung, beispielsweise über einen LDAP-Server oder über eine Chipkarte, müssten die Entwickler alle bestehenden Anwendungen neu schreiben, um die neue Form der Authentifizierung zu unterstützen. Das lässt sich freilich in der Praxis kaum realisieren. Hier hilft PAM mit einer Art Framework zur Authentifizierung von Benutzern: Jede Anwendung, die mit PAM zusammenarbeitet, besitzt unterhalb das Verzeichnisses /etc/pam.d/ eine eigene Konfigurationsdatei. Über diese ruft das Programm sogenannte PAM-Bibliotheken, auch PAM-Module genannt, aus dem Verzeichnis /lib/security/ auf.
Jedes dieser Module übernimmt eine bestimmte Aufgabe. So dient pam_unix.so zur klassischen Benutzerauthentifizierung via /etc/passwd und NIS (Network Information Service). Das Modul pam_ldap.so ermöglicht das Authentifizieren über LDAP-Server, pam_thinkfinger.so unterstützt die Benutzeranmeldung via Fingerprint-Reader. Möchten Sie eine neue Art der Authentifizierung hinzufügen, so reicht es aus, die jeweilige PAM-Bibliothek in der passenden Konfigurationsdatei anzugeben. Anstatt für jede neue Art der Authentifizierung die Anwendung neu zu schreiben, müssen sie diese nur einmalig "pamifizieren", indem Sie beim Übersetzen aus den Quellen auf die Bibliothek libpam.so zurückgreifen.
Neben der Authentifizierung von Benutzern kümmert sich PAM auch um die Autorisierung. So lässt sich die Benutzeranmeldung etwa auf bestimmte Uhrzeiten einschränken. Mit anderen Modulen bestimmen Sie, wie viel CPU-Rechenzeit ein Benutzer für seine Login-Sitzung bekommt – gerade in Zeiten von SETI@home und ähnlichen Projekten ein interessantes Feature.
Schließlich kümmert sich PAM auch um die Qualität der Passwörter, indem es beim Erstellen oder Ändern definierte Komplexitätsregeln auf diese anwendet. So legen Sie via PAM zum Beispiel fest, wie viele Klein- oder Großbuchstaben ein neues Passwort enthalten muss, damit es das System als gültiges Passwort anerkennt.



