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.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.
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.