Mit Hilfe von PAM (Pluggable Authentication Modules) kann der Administrator einstellen, wie die Authentisierung der User bei einzelnen Applikationen erfolgt. Der Vorteil der Nutzung von PAM liegt darin, daß es auf der Seite der Applikation die Authentisierung von der Benutzerdatenbank abstrahiert. Die Applikation muß die Anmeldeprozedur nur mit Hilfe der PAM Library durchführen und sich nicht um die möglichen Authentisierungssystem kümmern. Wenn eine neue Methode unterstützt werden soll, muß nur das entsprechende PAM Modul vorhanden sein und konfiguriert werden.
Den Vorteil des PAM Systems habe ich zu schätzen gelernt, als
ich eine einfache Möglichkeit suchte, die Benutzeraccounts von OpenGroupware und dem Cyrus
IMAP Server zentral zu Pflegen. Das Email-Interface von OpenGroupware
benötigt benötigt einen IMAP-Server und meldet sich hier per
Username und Passwort an. Der Cyrus Server verwendet die per Default
(unter Debian) die System-Benutzeraccounts aus
/etc/passwd
. OpenGroupware dagegen verwaltet die
Benutzeraccounts in einer PostgreSQL Relation. Da der Cyrus IMAP
Servers PAM unterstüzt, kann das System nach Installation des PAM
Moduls für die Authentisierung gegen eine PostgreSQL Datenbank
(pam-psql
) so konfiguriert werden, daß
Benutzernamen und Passwörter der IMAP Benutzer gegen die
entsprechende Relation der OpenGroupware Datenbank geprüft
werden. (s.a. OGo
Users in Cyrus.)
PAM unter Linux ermöglicht das Handling der vier unterschiedlichen Aufgabenbereiche Authentifizierung, Accounts, Session und Passwortverwaltung. Jede dieser Aufgaben kann für eine spezielle Applikation an ein anderes PAM-Modul delegiert werden.
Jede der oben genannten Aufgaben kann von mehreren Modulen wahrgenommen werden. Die Benutzerauthentifizierung kann z.B. zuerst vom LDAP Modul geprüft werden. Wenn der Benutzer hier nicht existiert, wird geprüft ob er in der lokalen Passwort-Datenbank aufgeführt ist. So können z.B. die Root Accounts auf jedem System mit unterschiedlichen Passwörtern versehen werden, während alle anderen Benutzer zentral per LDAP gepflegt werden.
Linux-PAM benötigt für jedes Benutzerdatenbanksystem und
jeden Aufgabenbereich ein entsprechendes Modul. Die Konfiguration kann
zentral in der Datei /etc/pam.conf
oder für jedes
Modul individuell im Verzeichnis /etc/pam.d
erfolgen.
Bei der verzeichnisbasierten Konfiguration wird für den einzelnen Service ein Konfigurationsfile angelegt in dem beschrieben wird, welches Modul für welchen Aufgabenbereich (Modultyp) dieses Services zuständig ist. Die einzelnen Module können noch ein weiteres Konfigurationsfile benötigen, in dem z.B. eingestellt wird, in welcher Relation und welchen Attributen eines Datenbanksystems die Benutzernamen und Passwörter gespeichert werden.