bingo e.V.


htaccess - Paßwortschutz für Web-Bereiche

Die am weitesten verbreiteten Web-Server, wie z.B. der Apache und NCSA (und die Netscape-Server ab Version 2.01, wenn sie entsprechend konfiguriert sind, und Sambar) bieten die Möglichkeit, Web-Bereiche mit einem Paßwortschutz zu versehen. Damit kann ein Web-Angebot gezielt nur einem ausgewählten Personenkreis zur Verfügung gestellt werden. (Wenn Sie nicht wissen, welchen Server Ihr Provider verwendet, können sie es mit diesem Formular rausfinden.)

Um einen solchen Zugriffsschutz einzurichten, müssen zwei (oder drei) Dateien auf den Web-Server gestellt werden : Die Konfigurationsdatei .htaccess und die eigentliche Paßwortdatei .htpasswd und bei Bedarf eine Gruppendatei .htgroup (Bitte beachten Sie auf Unix-Servern die Kleinschreibung der Dateinamen !).

Beschreibung der Dateiformate

Im folgenden werden die Inhalte dieser beiden Dateien beschrieben.

Für Mitglieder von bingo e.V. steht ein CGI-Programm zur Verfügung, das Sie bei der Einrichtung und Pflege der beiden Dateien unterstützt.

 

.htaccess

Die Datei .htaccess ist die Konfigurationsdatei und legt die Art des Zugriffsschutzes sowie den Namen der Paßwortdatei fest. Sie kann z.B. so aussehen :
AuthName        "Uwe's htaccess Demo"
AuthType        Basic
AuthUserFile    /home/projekte/www/htdocs/verein/intern/.htpasswd

<Limit GET POST>
require valid-user
</Limit>
AuthName
Kurze Beschreibung des geschützten Web-Bereichs. Diese Beschreibung wird dem Anwender angezeigt, bevor Username und Password abgefragt werden. (Beispiel)
AuthType
Der üblicherweise verwendete Authorisierungstyp ist Basic; andere mögliche Typen sind z.b. PGP oder Kerberos, diese werden aber z.B. vom Apache-Server nicht unterstützt. In der vorliegenden Beschreibung wird nur auf Basic eingegangen, dieser Typ benutzt als Paßwortdatei eine weitere Textdatei.
AuthUserFile
Dateibezeichnung der Paßwortdatei (siehe unten .htpasswd).

Speziell der NCSA Server (und auch Netscape) versteht an dieser Stelle nur einen vollständigen Unix Pfadnamen. Der vollständige Unix Dateiname unterscheidet sich im Allgemeinen von dem in einer URL angegebenen Dateinamen. So gehört beispielsweise zu der URL
http://www.bingo-ev.de/verein/intern/index.htm die Unix Datei
/home/projekte/www/htdocs/verein/intern/index.htm. Den rot gekennzeichneten Anteil bezeichnet man als Document-Root. Die Document-Root ist nicht privilegierten Benutzern meistens nicht bekannt und kann von ihnen auch nicht ermittelt werden. Hier hilft nur eine Mail an den Webmaster des Providers.

Der Apache Server versteht an dieser Stelle auch Dateinamen relativ zur Document-Root. Relative Dateinamen sind dadurch gekennzeichnet, daß sie nicht mit einem Schrägstrich "/" beginnen. Für den von bingo eingesetzten Apache Server sind also folgende beiden Zeilen gleichwertig :

AuthUserFile    /home/projekte/www/htdocs/verein/intern/.htpasswd
AuthUserFile    verein/intern/.htpasswd
AuthGroupFile
(optional) Dateibezeichnung der Gruppendatei (siehe unten .htgroup). Diese Angabe ist nur erforderlich, wenn Sie in der Konfigurationsdatei .htaccess die Directive require group group1 group2 ... verwendet haben.
Für die Angabe des Dateinamens gelten die gleichen Anmerkungen wie für die Paßwortdatei.
<Limit> oder <Files>
Mit einer der beiden Directiven wird angegeben, was geschützt werden soll.

Mit <Limit> werden alle Dateien in dem betroffenen Verzeichnis gegen den Zugriff über angegebene Methoden des Hypertext Transfer Protocols (http) abgesichert. Meist werden hier die Methoden GET (das "normale" Holen einer Seite) und evtl. auch noch POST angegeben.

Mit <Files> können einzelne Dateien oder Dateigruppen geschützt werden. Bei der Angabe der Dateien können Wildcards benutzt werden, und zwar der Stern "*" für eine beliebige Anzahl von Zeichen und das Fragezeichen "?" für genau ein Zeichen. So kann z.B. mit <Files *.htm*> der Zugriff auf alle HTML-Documente geschützt werden, während der Zugang auf andere Dateitypen im gleichen Verzeichnis (z.B. Bilder) frei ist.

require
Mit der require-Directive wird angegeben, nach welchem Kriterium Benutzer zugelassen werden sollen. Es gibt hier drei alternative Möglichkeiten :

 

.htpasswd

Die Datei .htpasswd ist die eigentliche Paßwortdatei. Sie kann z.B. so aussehen :
uwe:32/a7xZJFbDoo
otto:7dWdiLtedT8hA
Jede Zeile in der Datei definiert eine Benutzername/Passwort-Kombination. Es wird zuerst der Benutzername angegeben, gefolgt von einem Doppelpunkt. Dahinter steht das mit der Unix-Funktion
crypt() verschlüsselte Passwort.
Zur Erzeugung einer solchen Zeile habe ich ein kleines CGI-Programm bereitgestellt (gilt nicht für den Sambar-Server, da der eine andere Verschlüsselungsroutine benutzt).
Bitte achten Sie darauf, daß in den Zeilen keine zusätzlichen Leerzeichen enthalten sind !

Die Datei .htpasswd sollte nach Möglichkeit gegen Ausspähung über http geschützt werden. Am besten legen Sie die Datei in einem Verzeichnis ab, das nicht unterhalb der Document-Root liegt. Diese Möglichkeit besteht aber bei den meisten Providern nicht. In diesem Fall legen Sie ein eigenes Verzeichnis für die Paßwortdatei(en) an und schützen dieses Verzeichnis wiederum mit Paßwort (require user eigener-user).

 

.htgroup

In der Datei .htgroup können Benutzergruppen definiert werden; sie gibt an, welcher Benutzer zu welcher Gruppe gehört. Die Datei kann z.B. so aussehen :
gruppe1: sabine eva inge
gruppe2: karl otto hubert
Eine Gruppe wird definiert durch den Namen der Gruppe, gefolgt von einem Doppelpunkt und dann einer Anzahl von Benutzernamen derjenigen Anwender, die der Gruppe zugeordnet werden sollen. Die bei der Gruppendefinition angegebenen Benutzernamen müssen sich in der Paßwortdatei wiederfinden.

 
Ein englischsprachiges Tutorial zum gleichen Thema finden Sie bei
NCSA.