Rechtekontrolle mit .htaccess
Die Konfiguration eines Webservers umfasst die Freigabe von Verzeichnissen, Zugriffsrechte, Fehlermeldungen und Umleitungen.
Das Directory
Tag enthält die Admin- und Serveradresse, das freizugebene Verzeichnis DocumentRoot
, einen Parameter für das Verzeichnislisting, allgemeine Zugriffsrechte und eine Möglichkeit die bestehende Konfiguration mit .htaccess
Dateien zu überschreiben.
# /etc/apache2/apache2.conf ... <VirtualHost *:80> ServerName localhost ServerAdmin webmaster@localhost DocumentRoot /var/www/html <Directory /var/www/html> Options Indexes Require all granted AllowOverride all </Directory> </VirtualHost> ...
Eine .htaccess
Datei ist eine einfache Textdatei, die in jedem der freigegebenen Verzeichnisse erstellt werden kann, um dort die Konfiguration des Webservers anzupassen. Im Beispiel sollen die Unterverzeichnisse private und secret vor einem unerlaubtem Zugriff geschützt werden.
von www └── html ├── common │ └── news.o ├── private │ ├── .htaccess │ └── photos.o └── secret ├── .htaccess └── password.o
Damit Unterverzeichnisse des DocumentRoot
individuell konfiguriert und geschützt werden müsste je ein weiterer Directory
Eintrag in der Konfigurationsdatei des Webservers erstellt werden. Die .htaccess
Dateien stellen hierzu eine komfortable Alternative dar.
Eine .htaccess
Datei muss für die Absicherung eines Verzeichnis Angaben zum Authentifizierungsverfahren, der verwendeten Passwortdatei AuthUserFile
und den erlaubten Nutzern enthalten.
# /var/www/html/private/.htaccess AuthType Basic AuthUserFile /etc/apache2/accounts Require valid-user
Die .htaccess
Datei im Verzeichnis private bewirkt mit dem Kommando Require valid-user
, dass alle Nutzer mit einem gültigen Passwort Zugang bekommen.
# /var/www/html/secret/.htaccess AuthType Basic AuthUserFile /etc/apache2/accounts Require user user1
Hingegen bewirkt die .htaccess
Datei im Verzeichnis secret mit Require user user1
, dass nur Nutzer user1 Zugang hat.
Die bei einem Zugriff auf das Verzeichnis verwendete Passwortdatei accounts sollte aus Sicherheitsgründen in einem nicht öffentlichen Verzeichnis abgelegt werden. Erstellt wird eine Passwortdatei mit dem Programm htpasswd.
htpasswd -c /etc/apache2/accounts user1 htpasswd /etc/apache2/accounts user2
Htpasswd benötigt den Parameter -c wenn noch keine Passwortdatei existiert sowie einen Dateipfad und den Namen des Nutzers.
Bei einem Aufruf der Seite wird Zugang dann nur noch nach erfolgreicher Authentifizierung gewährt.