Humboldt-Universität zu Berlin, Institut für Informatik

* Wie kann ich den Zugriff einschränken ?


Zur Beschränkung des Zugriffs auf WWW-Dokumente gibt es zwei Mechanismen. Beide werden in der Datei .htaccess des Verzeichnisses konfiguriert. Der Server berücksichtigt dabei auch Dateien aus höheren Verzeichnissen, seit Apache 1.3 auch aus dem Homedirectory. Bei nichtlesbaren oder falschen Dateien verweigert der Server den Zugriff. Die neueren Versionen des HTTPD sind dabei besonders penible.
Die beiden Kontrollmechnismen sind:
  1. Die Beschränkung der Rechner mit Zugriff auf das Verzeichnis.

    Es kann auf diese Art bestimmten Rechnern (oder Rechnergruppen) der Zugriff auf die Dokumente verwehrt sowie auch erlaubt werden. Eine .htaccess-Datei hat dabei zum Beispiel folgendes Aussehen:

    AuthType Basic
    AuthName schmidt
    <Limit GET PST PUT>
    order deny,allow
    deny from all
    allow from 141.20.20 141.20.21
    </Limit>
    
    Die order-Direktive gibt die Reihenfolge der Bestimmung des Zugriffs an. (Im obigen Beispiel errechnet der Server bei einer Anfrage eines Rechners mit der IP-Adresse '141.20.20.38' erst das Zugriffsverbot durch die deny-Direktive und danach ergibt sich dann doch die Erlaubnis zum Zugriff durch die allow-Direktive.) Den Direktiven "allow from" und "deny from" können beliebig viele durch Leerzeichen getrennte Domainnamen, Rechnernamen, IP-Adressen, Teile einer IP-Adresse oder das Schlüsselwort "all" folgen. Bemerkung: Hinter </Limit> muß eine Newline folgen.

  2. Die Beschränkung des Zugriffs auf Nutzer und Nutzergruppen.

    Analog UNIX existieren beim WWW-Server eine Passwort- und eine Gruppen-Datei. Ein Nutzer authentisiert sich mit dem in der Passwort-Datei eingetragenen Passwort. Für eine Gruppe ist es nur nötig eingetragener Nutzer dieser Gruppe zu sein, wenn man sich per Passwort als solcher authentisiert hat.

    Eine .htaccess-Datei hat zum Beispiel folgendes Aussehen:

    AuthType Basic
    AuthName "Karl Schmidt"
    <Limit GET>
    require user dirkv
    </Limit>
    
    Die Direktive AuthName ist Pflicht und kann einen beliebigen String enthalten. Sie wird bei der Angabe des Nutzernamens beim WWW-Clienten angezeigt.
    Wichtig! Seit Apache 1.3 darf nach AuthName nur ein Argument stehen. Wer also eine Bezeichnung mit Leerzeichen vergeben will, muß diese in Anführungszeichen setzen. Auch sollte man AuthType Basic bzw. AuthType Digest besser mit angeben.

    Der Direktive require können die Bezeichner "user" oder "group" mit beliebig vielen Nutzer- und Gruppennamen folgen.

    Durch die Direktive AuthUserFile kann man eine eigene Passwortdatei festlegen, die bei Zugriffen verwendet wird. Dies ist insbesondere dann praktisch, wenn man Leuten, die hier keinen Account haben, Zugang gewähren will.

    AuthType Basic
    AuthName mustermann
    <Limit GET POST PUT>
    AuthUserFile /vol/fob-vol3/mi93/mustermann/mypasswd
    require user myguest
    </Limit>
    
    Der Pfad muß dabei vollstädig sein (Homedirectory) und die Datei mypasswd enthält für jeden Nutzer eine Zeile mit seinem Namen und dem verschlüsselten Passwort:
    myguest:h5zPnSYPQG/0k
    
    Die Datei muss für den Server lesbar sein, sollte sich aber in keinem öffentlichen WWW-Verzeichnis befinden, sollte also oberhalb von .public_html auf dem WWW-Server stehen. Achtung: Der WWW-Server hat keinen NFS-Zugriff!!!! Eine Passwortdatei kann man mit Hilfe von htpasswd (1) anlegen und editieren, das auch in den Sourcen der meisten Server (NCSA, Apache) unter support zu finden ist.

    Ansonsten wird die generierte Passwortdatei des WWW-Servers verwendet. Diese besteht aus der NIS-Passwd und der WWW-Passwd. Eintragungen der WWW-Passwd haben eine höhere Priorität als die der NIS-Passwd. Wenn man sein WWW-Passwort in der WWW-Passwd ändern möchte, kann man das CGI-Script /cgi-bin/change-passwd benutzen. Leider ist es nicht möglich mehrere Passwortdateien zusammen zu benutzen bzw. die Datei des Servers mit einer eigenen zu kombinieren.

  3. Kombination der beiden Varianten der Zugangsbeschränkung.

    Der Apache-Server kennt die Direktive Satisfy. Diese legt fest, welche Bedingungen erfüllt sein müssen, wenn der Zugriff durch Rechnernamen (allow) und Nutzer (require) geregelt wird. Der Defaultwert ist dabei All, so daß der Rechner den richtigen Namen und der Nuzter sich mittels den richtigen Passwort identifiziert haben muß. Alternativ kann man dafür auch Any angeben, dann genügt eine der beiden Bedingungen.

    AuthType Basic
    Satisfy Any
    AuthName "My Guest"
    <Limit GET POST PUT>
    require user guest
    order deny,allow
    deny from all
    allow from informatik.hu-berlin.de
    
    
    Das Beispiel erlaubt allen aus der Domäne informatik.hu-berlin.de Zugriff. Alle anderen müssen sich per Passwort als Nutzer guest ausweisen.


Letzte Änderung: Tuesday, 04-Jan-2000 08:43:20 CET
(wwwadmin@informatik.hu-berlin.de)
(ftpsoft@informatik.hu-berlin.de)