Inhaltsverzeichnis

.htaccess-Dateien

Mithilfe einer .htaccess-Datei kann man Verzeichnisse auf einem Webserver mit Passwörtern schützen, und so nur für bestimmte Benutzer zugänglich machen.

Benutzer-Authentifizierung

Vorbereitungen

Um .htacces-Dateien verwenden zu können, muss zunächst folgender Eintrag in /etc/apache2/sites-aviable/DEINESEITE.confhinzugefügt oder angepasst werden (falls nicht bereits schon eingestellt). Der Eintrag muss zwischen <VirtualHost> und </VirtualHost> stehen.

<Directory /var/www/html/>
        AllowOverride All
        Order allow,deny
        allow from all
</Directory>

Statt /var/www/html/ das Rootverzeichnis des Webspace angeben.

.htaccess erstellen

Die .htaccess-Datei muss im zu schützenden Verzeichnis liegen. Also z.B. /var/www/html/geheim/.htaccess. Der Inhalt der Datei sollte so aussehen:

AuthType Basic
AuthUserFile /etc/apache_passwd/freunde.passwd
AuthName "Bitte gib deine Zugangsdaten ein."
order deny,allow
allow from all
require valid-user

AuthUserFile gibt an, welche Passwort-Datei verwendet werden soll. Siehe auch https://www.thomas-krenn.com/de/wiki/Webserver_Verzeichnisse_mit_Passwort_sch%C3%BCtzen, http://www.bingo-ev.de/~ub304/htaccess.htm
AuthName Gibt an, welche Nachricht den Benutzern angezeigt werden soll.

Wenn man nur bestimmten Benutzern, die in der Passwort-Datei eingetragen sind, Zugriff gewähren möchte, kann man statt require valid-user die erlaubten Benutzernamen angeben. z.B. require benutzer1

Passwort-Datei erstellen

Damit sich auch Benutzer anmelden können, muss eine Passwort-Datei erstellt werden. Dies erledigt man, indem man einen neuen Benutzer anlegt:

htpasswd -c /etc/apache_passwd/freunde.passwd benutzer1

Die Passwortdatei sollte dem Benutzer www-data gehören und die Dateirechte 0660 haben. Alle übergeordneten Verzeichnisse müssen vom Benutzer www-data gelesen werden können. Dazu die Rechte aller übergeordneter Verzeichnisse mindestens auf 0755 setzen:

chown www-data:www-data /etc/apache_passwd/freunde.passwd
chmod 0660 /etc/apache_passwd/freunde.passwd
chmod 0755 /etc/apache_passwd/

Anschließend mit einem Webbrowser testen, ob alles funktioniert. Man muss im Browser den Kompletten Pfad zum geschützten Verzeichnis angeben. Dann wird man nach den Zugangsdaten gefragt. Nach Eingabe der korrekten Daten wird der Verzeichnisinhalt angezeigt.

Fehlersuche

Wenn in /var/log/apache2/error.log etwas angezeigt wird, wie Could not open password file: /etc/apache_passwd/freunde.passwd, sind die Rechte nicht korrekt gesetzt, oder du hast den Pfad zur Passwortdatei in der .htaccess-Datei falsch angegeben.

Gruppen-Authentifizierung

Mit Gruppenauthentifizierung kann man verschiedene Benutzergruppen erstellen. Dadurch kann man alle Benutzer in einer einzigen Passwort-Datei verwalten und kann in der .htaccess-Datei Gruppen angeben, anstatt alle Benutzer einzeln aufzuzählen, die Zugriff erhalten sollen.

Apache-Konfiguration

Um Gruppen-Authentifizierung nutzen zu können, muss das Apache-Modul authz_groupfile geladen sein.

a2enmod authz_groupfile
service apache2 restart

Die restliche Konfiguration wie oben.

.htaccess erstellen

Die .htaccess-Datei muss im zu schützenden Verzeichnis liegen. Also z.B. /var/www/html/geheim/.htaccess. Der Inhalt der Datei sollte so aussehen:

AuthType Basic
AuthUserFile /etc/htpasswd
AuthGroupFile /etc/htgroup
AuthName "Bitte gib deine Zugangsdaten ein."
order deny,allow
allow from all
require group freunde familie
require user admin peter

Gruppen-Datei erstellen

Zuerst erstellt man eine Passwort-Datei, wie oben beschrieben, falls noch keine existiert.
Anschließend erstellt man eine Gruppen-Datei, die verschiedenen Gruppen Benutzer zuordnet. Z.B.

freunde: peter karl otto
familie: richard franz bernd

Die Benutzer, die in der Gruppen-Datei definiert sind, müssen natürlich auch in der Passwort-Datei enthalten sein! Beispiel für eine Passwort-Datei:

peter:$apr1$jAc3yjq8$bACblcozF5qv/44nKav931
karl:$apr1$bBtBPKgj$UE5YXhVYx8B9X9XwigCXa0
otto:$apr1$4o9sn6SZ$8MWG0ELBgnjdEB1h31w1O/
richard:$apr1$.gy6Tjcu$N1BS6NfO7fmz9/2ka94az1
franz:$apr1$I6KLX9Qd$PwRowL5Ayxr156feIg12c.
bernd:$apr1$PuhZT2NG$1XPjT9BhvuGoH1i.QnLLK0

Fehlersuche

Die Zugriffsrechte auf die Passwort- und Gruppendatei müssen korrekt gesetzt sein, siehe oben.