Die Situation ist einfach: Man möchte nicht allen Zugang zu bestimmten
Verzeichnissen und deren Dateien geben. Nun gibt es mit dem Webserver Apache
einen relativ einfachen Schutz solcher Verzeichnisse und aller darunter
liegender Dateien und Verzeichnisse.
Der Kern des Schutzes liegt in der sogenannten .htaccess Datei, in der
die Regelungen zum Schutz und der Anzeige des Verzeichnisses eingetragen werden
können.
Damit überhaupt die Befehle, die in der .htaccess-Datei später stehen, akzeptiert werden, muß die Grundinstallation des Apache-Webservers angepaßt werden.
Die Konfigurationsdatei des Apache heißt entweder httpd.conf oder apache.conf und befindet sich (bei Standardinstallationen) unter Linux im Verzeichnis /etc/apache/ bzw. bei Windows unter C:\Programme\Apache Group\ApacheX\conf\ (X steht für die Versionsnummer, falls vorhanden). Die Datei muß folgende Einträge haben:
Kommentarzeilen die mit # anfangen werden nicht gezeigt.
In der Zeile AllowOverride muß statt dem Wert None der Wert All
eingetragen werden, damit das Überschreiben der allgemeinen Regeln durch die
.htaccess-Datei erlaubt ist.
Die Options geben an, was wie geregelt wird, also in dem unten stehenden Beispiel
bedeutet Indexes, daß das Verzeichnis angezeigt werden darf, wenn keine
index.html Datei vorhanden ist. Mit FollowSymLink darf der Apache auch Links
folgen, die nur symbolischer Natur sind.
Unter Windows [...] DocumentRoot "F:/Webseiten" [...] <Directory "F:/Webseiten"> Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> [...] AccessFileName .htaccess [...] |
Unter Linux [...] DocumentRoot "/var/www" [...] <Directory "/var/www"> Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> [...] AccessFileName .htaccess [...] |
Diese Datei läßt sich einfach mit dem, in dem Installationspaket begelegten htpasswd-Programm erzeugen. Dieses Programm befindet sich beim Linux unter /usr/bin/htpasswd und unter Windows im Verzeichnis C:\Programme\Apache Group\ApacheX\bin\htpasswd.exe.
Wichtig für Windows-Benutzer. Das Programm htpasswd ist ein DOS-Programm,
d.h. ein Doppelklick darauf erzeugt nur ein schwarzes Fenster mit Inahlt, daß daraufhin
sofort wieder geschlossen wird. Um das Programm nutzen zu können, sollte daher
die alte MS-DOS-Kommandozeile verwendet werden:
Startmenü -> Ausführen -> command (bzw. unter Windows 2000/XP cmd)
Nach der Bestätigung öffnet sich ein Schwarzes Fenster in dem Befehle eingegeben
werden können. Nun müssen wir ins Verzeichnis des Programms htpasswd.exe wechseln.
Beim Aufruf ohne Parameter
gibt dieses Programm einen Hilfstext mit den möglichen Parametern aus.
Es ergibt sich daraus folgender Aufruf, wenn das Verzeichnis "bilder" geschützt werden soll:
htpasswd -c /var/www/bilder/.htpasswd benutzername (unter Linux) htpasswd -c F:\Webseiten\bilder\.htpasswd benutzername (unter Windows)Wobei der Parameter -c eine neue Paßwortdatei anlegt. Wird das -c weggelassen, so wird einer bestehenden Datei ein weiterer Benutzer hinzugefügt.
Beispiel für eine .htpasswd-Datei
Zugang:$apr1$Pc5.....$toI30xNojKgLDIc5FRa3k.So kann niemand erahnen, daß das Paßwort für den Namen "Zugang" "Test" lautet ... upps - verrraten ;-)
Diese Datei ist das Kernstück von allem, denn darin steht das Kommando für den Apache
Nach Name und Paßwort zu fragen und es mit den Daten in einer angegebenen Datei zu vergleichen.
Da diese Datei eine einfache Textdatei ist, legt man sie als solche einfach in dem selben Verzeichnis
an, in dem auch die .htpasswd-Datei steht. Mit folgendem Inhalt:
.htaccess AuthType Basic AuthName "Interner Bildbereich" AuthUserFile .htpasswd require valid-user |
.htaccess mit Pfadangabe AuthType Basic AuthName "Interner Bildbereich" AuthUserFile F:/Webseiten/bilder/.htpasswd require valid-user |
Unter Umständen ist die Angabe des kompletten Pfades notwendig! (siehe rechte Spalte)
Der AuthType Basic erzwingt vom Apache, daß er - sobald jemand ins Verzeichnis wechseln
möchte - eine Art PopUp-Fenster öffnet und nach Name und Paßwort fragt.
Beim AuthName kann beliebiger Text eingegegen werden. Dieser wird dann bei der Abfrage
mit angegeben. Der Text muß jedoch in doppelte Anführungszeichen gesetzt werden.
Die Angabe des AuthUserFile .htpasswd gibt an, in welcher Datei die Namen und Paßwörter
zum Vergleich stehen.
Und letztlich darf durch den Befehl require valid-user nur ein authentifizierter Benutzer
den Zugang erhalten.
Wenn alles geklappt hat, dann sollte folgendes auftauchen, sobald jemand in das Verzeichnis "bilder" hinein wechseln möchte:
Ob jemand dadurch errät, daß der Benutzername "Zugang" und das Paßwort "test" ist? :-)
© 08/2004 · Dirk Weikard
zurück