====== .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.conf''hinzugefügt oder angepasst werden (falls nicht bereits schon eingestellt). Der Eintrag muss zwischen '''' und '''' stehen.
AllowOverride All
Order allow,deny
allow from all
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
* ''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.
==== 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 [[htaccess#Vorbereitungen|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
* ''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.
==== Gruppen-Datei erstellen ====
Zuerst erstellt man eine Passwort-Datei, wie [[htaccess#Passwort-Datei erstellen|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
==== Fehlersuche ====
Die Zugriffsrechte auf die Passwort- und Gruppendatei müssen korrekt gesetzt sein, [[#Fehlersuche|siehe oben]].