DNS-313: Lighttpd - Verzeichnis mit Passwort schützen
Wenn man einen Apache-Webserver betreibt, kann man ja per htaccess einen bestimmten Ordner mit Benutzername und Passwort schützen. Allerdings läuft auf meinem NAS ja lighttpd, und der kennt htaccess nicht. Trotzdem wollte ich dort auch ein Verzeichnis absichern und habe dann auch schnell herausgefunden, das man in der /ffp/etc/lighttpd.conf die folgenden Zeilen eintragen bzw. auskommentieren muss.
#### auth module
auth.debug = 2
auth.backend = "htpasswd"
auth.backend.htpasswd.userfile = "/mnt/HD_a2/www/lighttpd.htpasswd"
auth.require = ( "/download" =>
(
# method must be either basic or digest
"method" => "basic",
"realm" => "download archiv",
"require" => "valid-user"
)
)Natürlich sollte man bei userfile dem eigenen Pfad anpassen und kann/sollte später, wenn alles läuft den Wert für debug auf 0 setzen.
Allerdings habe ich am Anfang die Methode "plain" benutzt, da ich erstens die Benutzernamen schnell via ssh ändern kann und zweitens, da ich die Programme htpasswd und htdigest auf dem DNS-313 nicht zur Verfügung habe. Doch dummerweise wurde mir die entsprechende Textdatei bei dem Zugriff auf das geschützte Verzeichnis mit irgendwelchen kryptischen Zeichen überschrieben. Es scheint fast so, als ob die Plain-Text-Methode fehlerhaft oder einfach nicht mit einkompiliert wurde. Dann habe ich alles auf htdigest umgestellt, doch auch damit hatte ich das selbe Problem.
Als letzte Möglichkeit habe ich dann alles (wie oben im Code zu sehen) auf htpasswd umgestellt und erst das führte zu dem gewünschten Erfolg. Das hat allerdings den "Nachteil", dass die Zugangsdaten mit dem Programm htpasswd erstellt werden müssen und wie Eingangs erwähnt, ist dieses auf dem NAS nicht vorhanden. Das ist aber kein Problem, denn bei einem Linux mit installiertem Apache sowie für Windows (z.B. im XAMPP-Paket) ist es mit dabei.
Ich habe die Windows-Version benutzt und mit dem folgendem Aufruf mir ein paar Test-Zugangsdaten erstellt:
htpasswd.exe -n -b peter 112211
Die Ausgabe war dann diese:
peter:$apr1$2.myUCaw$U50ET7Wk7hhNQhJuwsfQC0
Und genau diese Zeile (plus weitere für mehrere Benutzer) kommt dann die die Datei, die in der lighttpd.conf bei der Zeile auth.backend.htpasswd.userfile angegeben ist.
Jetzt fehlt eigentlich nur noch eins. Mit /ffp/start/lighttpd restart strten wir den Server neu. Jetzt sollte bei dem Aufruf des Ordners im Browser ein Dialog kommen, bei dem man sich anmelden kann und nach erfolgreicher Anmeldung dann auch das Verzeichnislisting (oder was auch immer in dem Ordner ist).
