linux:pam

PAM (Pluggable Authentication Modules)

Pluggable Authentication Modules (PAM) sind eine Softwarebibliothek, die eine allgemeine Programmierschnittstelle (API) für Authentisierungsdienste zur Verfügung stellt. PAM wurde 1995 von Vipin Samar und Charlie Lai bei Sun Microsystems entwickelt und seitdem nicht wesentlich verändert.

Quelle: Wikipedia zum PAM.

Eine simple Authentifizierung gelingt über pam_userdb, hier wird lediglich eine Textdatei mit Benutzernamen und Passwörtern (abwechselnd in jeweils eigenen Zeilen) benötigt.

Beispiel:

Benutzer1
Passwort1
Benutzer2
Passwort2

Die Textdatei (Dateiname hier im Beispiel: /etc/logins.txt) muss dann noch per Berkeley-DB utils in eine Datenbank umgewandelt werden:

db_load -T -t hash -f /etc/logins.txt /etc/logins.db

Manchmal heißt db_load auch anders (db3_load, db4.6_load usw.) wenn pam eine spezielle db-Version braucht.

Falls die Berkeley-DB utils noch nicht installiert sind:

  • Debian Etch:
    aptitude install db4.4-util
  • Debian Lenny + Ubuntu 9.04 („jaunty“):
    aptitude install db4.6-utils

Nun wählen wir den Dienst aus, für den diese Authentifizierung gelten soll, im Verzeichnis /etc/pam.d finden wir die nach dem Dienst benannte Dateien.

Beim richtigen Dienst genügen diese 2 Zeilen:

auth required /lib/security/pam_userdb.so db=/etc/logins
account required /lib/security/pam_userdb.so db=/etc/logins

:!: Die Dateiendung (.db) weglassen!

Wenn wir Änderungen (neue Benutzer, Passwörtänderungen, …) an der Quelldatei /etc/logins.txt vornehmen, müssen wir erneut die Datenbank erzeugen (s.o.).