Es gibt verschiedene Methoden, um /etc/passwd bzw. /etc/shadow als Benutzerdatenbank für Apache 2 zu verwenden. Einige davon verlangen, dass Apache /etc/shadow lesen kann, was das Konzept von Shadow-Passwörtern ad absurdum führt. Eine elegantere und sicherere Lösung bietet mod_authnz_external.
Den Code des Moduls kann man unter http://unixpapa.com/mod_authnz_external/ herunterladen. Die Kompilierung ist in der Datei INSTALL recht gut beschrieben. Dazu noch einige Debian-spezifische Anmerkungen:
Die Installation mit apxs2 -i -a mod_authnz_external.la klappt nicht, da das Laden von Modulen unter Debian nicht über die httpd.conf läuft. Dies kann aber so gelöst werden:
apxs -i mod_authnz_external.la echo "LoadModule authnz_external_module /usr/lib/apache2/modules/mod_authnz_external.so" > /etc/apache2/mods-available/authnz_external.load
Wenn man nun Authentifizierung via /etc/{passwd,shadow} nutzen möchte, benötigt man noch pwauth. Auch hier ist die Installation in INSTALL beschrieben. Wichtig: Das Editieren der config.h nicht vergessen!
Schließlich muss man noch mod_authnz_external so konfigurieren, dass es pwauth nutzen kann. Dafür legt man folgende Datei an:
# /etc/apache2/mods-available/authnz_external.conf AddExternalAuth sys_user /usr/local/bin/pwauth SetExternalAuthMethod sys_user pipe
Dabei wird davon ausgegangen, dass pwauth unter /usr/local/bin liegt. Mit a2enmod authnz_external aktiviert man das Modul, apache2ctl restart führt den nötigen Neustart durch.
Benutzen kann man die Authentifizierung so:
AuthName "Angezeigte Name" AuthType Basic AuthBasicProvider external AuthExternal sys_user Require valid-user
Wenn sowohl eine Passwort-Datei als auch die Systemkonten verwendet werden sollen:
AuthName "Angezeigter Name" AuthType Basic AuthBasicProvider file external AuthExternal sys_user AuthUserFile /pfad/zur/.htpasswd Require valid-user