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.
Um .htacces
-Dateien verwenden zu können, muss zunächst folgender Eintrag in /etc/apache2/sites-aviable/DEINESEITE.conf
hinzugefü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.
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
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
benutzer1
ist der Benutzername des Benutzers. Danach wird man nach einem Passwort gefragt. Dieses ist zwei mal einzugeben.-c
Gibt an, dass eine neue Passwort-Datei erstellt wird. Um weitere Benutzer hinzuzufügen, diese Option weg lassen!/etc/apache_passwd/freunde.passwd
ist der Pfad zur Passwortdatei.
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.
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.
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.
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.
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
AuthUserFile
gibt an, welche Passwort-Datei verwendet werden soll. Siehe auch http://www.bingo-ev.de/~ub304/htaccess.htm http://aktuell.de.selfhtml.org/artikel/server/htaccess/AuthGroupFile
gibt an, welche Gruppen-Datei benutzt werden soll.AuthName
Gibt an, welche Nachricht den Benutzern angezeigt werden soll.require group
Hier alle Gruppen angeben, die Zugriff haben sollen.require user
Hier alle Benutzer, die zusätzlich zu den Gruppen Zugriff haben sollen. Falls keine zusätzlichen Benutzer angegeben werden, diese Option weg lassen.
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
peter
, karl
und otto
gehören nun zur Gruppe freunde
.richard
, franz
und bernd
gehören zur Gruppe familie
.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
Die Zugriffsrechte auf die Passwort- und Gruppendatei müssen korrekt gesetzt sein, siehe oben.