Inhaltsverzeichnis

PAM

PAM (Pluggable Authentication Module) ist ein sehr mächtiges System um Benutzer zu verifizieren. Es bietet sehr viele verschiedene Anmeldemöglichkeiten. Die grundlegenste ist passwd/shadow, aber auch MySQL und LDAP als Quellen sind möglich.
Darum muss man sich jetzt überlegen, welches System man bevorzugt.
Auf reinen Mailservern kann man MySQL oder LDAP wählen. Auf Unternehmensservern bevorzuge ich SAMBA oder LDAP. Wobei LDAP mehr Möglichkeiten für eine zentrale Benutzerverwaltung bietet, aber bei kleinen Betrieben auch mehr Aufwand erzeugt.

SAMBA

Es gibt verschiedene Möglichkeiten einen SAMBA- oder Windows-Server als Authentisierungsstelle zu verwenden. Ich habe bisher die mit dem Modul pam_smb_auth.so aus dem Paket libpam-smb gearbeitet. Das Projekt ist allerdings nicht mehr in den aktuellen Repositories vorhanden.

Und es kommt noch schlimmer... Das Ersatzprojekt libpam-smbpass funktioniert nicht zusammen mit SASL. Wenn via SASL über PAM mit pam_smbpass.so Passwörter verifiziert werden, hängt sich SASL irgendwann auf. Man kann nicht vorhersagen wann und auch ein täglicher Neustart hilft nichts.

Daher hilft nur eins: winbind muss her! Ich wollte das aus 2 Gründen vermeiden. 1. Wenn ich Mailbenutzer habe, möchte ich keine entsprechenden passwd/shadow Einträge im LDAP Server haben. Winbind akzeptiert aber nur Logins mit entsprechenden Einträgen. 2. Das ganze Konstrukt über SASL war schon kompliziert genug, jetzt muss noch ein weiterer Daemon in die Reihe gehängt werden.

Cyrus -> SASLAUTHD -> PAM -> WINBIND -> SAMBA -> LDAP !!!

Aber leider weiss ich auch keine elegantere Methode, um für Windowsuser nicht mehrere Konten führen zu müssen.

Damit winbind Zugriff hat, muss man auch der Domäne beitreten:

net rpc join -U administrator%secret

/etc/pam.d/[imap|pop|sieve|smtp]:

#auth    required        pam_smb_auth.so
#auth    required        pam_smbpass.so
auth    required        pam_winbind.so
account required        pam_permit.so

Obsolete

/etc/pam_smb.conf:

SAMBA_DOMAIN
LOCALHOST
LOCALHOST

MySQL

Um PAM mit einem MySQL-Server zu verwenden benötigt man das Paket libpam-mysql. Eine kurze Anleitung findet man in /usr/share/doc/libpam-mysql/Readme

/etc/pam.d/[imap|pop|sieve|smtp]:

auth sufficient         pam_mysql.so user=myuser passwd=geheim db=auth usercolumn=name passwdcolumn=pw crypt=2 sqllog=0
account required        pam_mysql.so user=myuser passwd=geheim db=auth usercolumn=name passwdcolumn=pw crypt=2 sqllog=0

LDAP

Wenn man LDAP verwendet wird die Sache ein wenig komplexer, aber man kann dafür Unix-,Windows- und Mail-User gemeinsam mit einem Dienst verwalten. Dieser Dienst kann über Netzwerk angesprochen und redundant abgesichert werden.

/etc/pam.d/common-account

account         sufficient      pam_ldap.so
account         required        pam_unix.so try_first_pass

/etc/pam.d/common-auth

auth sufficient  pam_ldap.so
auth required    pam_unix.so nullok_secure try_first_pass

/etc/pam.d/common-password

password   sufficient pam_ldap.so
password   sufficient pam_unix.so try_first_pass nullok obscure min=4 max=8 md5

/etc/pam.d/[imap|pop|sieve|smtp]:

@include common-auth
@include common-account

/etc/pam.d/gdm:

auth    requisite       pam_nologin.so
auth    required        pam_env.so
account sufficient      pam_ldap.so
auth    required        pam_mount.so ##### optional
auth    sufficient      pam_ldap.so use_first_pass
auth    required        pam_unix.so use_first_pass
session required        pam_limits.so
session optional        pam_mount.so ##### optional
 
linux/server/pam.txt · Zuletzt geändert: 16.04.2009 13:13 von tangst