Benutzeranmeldung mit SASL als „shell-less“ Benutzer mit einem geschützten Webbereich beim Apache 2 Server unter Ubuntu 11.04

Bevor dieses kleine HOWTo funktioniert, sollte das vorherige durchgearbeitet werden. Hier wird die Installation und Inbetriebnahme der SASL Dienste beschrieben:

Installation von SASL mit Verwendung im Apache 2 unter Ubuntu 11.04

Als erstes wird ein neuer Benutzer angelegt. In diesem Abschnitt wollen wir über SASL einen Systembenutzer authentifizieren, der zwar am System ein Konto hat, aber sich nicht über SSH am System anmelden kann. Dazu dienst die Pseudoshell /bin/false. Diese Shell gibt immer „fehlgeschlagen“ an den Anmeldedienst zurück. Der Benutzer kann sich somit nicht am System anmelden. Über bleibt die Anmeldung via SASL am System. Also zuerstmal den Benutzer in das System einpflegen. Unser neuer Benutzer für den Test heißt stardust.

root@antilight:~# adduser --no-create-home --shell /bin/false stardust
Lege Benutzer »stardust« an ...
Lege neue Gruppe »stardust« (1001) an ...
Lege neuen Benutzer »stardust« (1001) mit Gruppe »stardust« an ...
Erstelle Home-Verzeichnis »/home/stardust« nicht.
Geben Sie ein neues UNIX-Passwort ein:
Geben Sie das neue UNIX-Passwort erneut ein:
passwd: password updated successfully
Changing the user information for stardust
Enter the new value, or press ENTER for the default
Full Name []: Stardust
Room Number []: 23
Work Phone []: 42
Home Phone []: 64
Other []: 13
Sind diese Informationen korrekt? [J/n] j

Zack und fertig. Nun prüfen wir, ob auch alles korrekt durchgeführt wurde. Das lassen wir grep erledigen, weil wir nur kurz schauen wollen, ob auch die richtige Shell dem Benutzer zugeordnet worden ist. Schließlich kann ein fehlendes Argument, oben das hinter –shell, schnell dazu führen, dass doch der User sich anmelden kann. Kontrolle ist immer gut.

root@antilight:~# egrep "^(stardust|neurodump):" /etc/passwd
neurodump:x:1000:1000:neurodump,,,:/home/neurodump:/bin/bash
stardust:x:1001:1001:Stardust,23,42,64,13:/home/stardust:/bin/false

Fein, wir sehen das neurodump sich anmelden kann und stardust nicht. So solls sein. Jetzt müssen wir nur den benutzer auch in der httpd.conf Datei hinzufügen. Dort schaut der Apache nach, welche Benutzer was wo dürfen und so weiter.

root@antilight:~# pico /etc/apache2/httpd.conf

Geändert werden muss die Zeile. „Require user neurodump“ in „Require user neurodump stardust„. Wahlweise kann die Zeile auch in diese geändert werden:

Require valid-user

Nun speichern. Damit die Änderungen aktiv werden, muss der Apache Dienst seine Config neu laden. Das erledigt folgender Befehl.

root@antilight:/var/www/protected# service apache2 reload
* Reloading web server config apache2 [ OK ]
root@antilight:/var/www/protected#

Jetzt sollte der neue Benutzer stardust nur noch zur Gruppe sasl gehören, damit alles mit den Rechten glatt geht. Das erledigt dieser Befehl.

root@antilight:/var/www/protected# adduser stardust sasl
Füge Benutzer »stardust« der Gruppe »sasl« hinzu ...
Adding user stardust to group sasl
Fertig.

Nun sollte die Anmeldung klappen. Sollte nach dem Reboot der saslauthd nicht hochkommen, weil etwas mit den init-Skripten nicht 100%ig stimmt, den kurz manuell starten. Optional:

root@antilight:/var/www/protected# service saslauthd start
* Starting SASL Authentication Daemon saslauthd [ OK ]
root@antilight:/var/www/protected#