Benutzer-Werkzeuge

Webseiten-Werkzeuge


linux:htaccess

.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
  • 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 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 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, siehe oben.

linux/htaccess.txt · Zuletzt geändert: 2017/11/30 09:29 von 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki