Title: Benutzer-Webverzeichnisse
Praxis / Anleitungen

Bei Mehrbenutzersystemen kann jedem Benutzer gestattet werden, mit der UserDir-Direktive eine Website im eigenen Stammverzeichnis einzurichten. Besucher der URL http://example.com/~username/ erhalten den Inhalt des Benutzers "username" aus dessen mit der UserDir-Direktive angegebenen Unterverzeichnis.

URLs dem Dateisystem zuordnen
Den Dateipfad mit UserDir setzen

Die UserDir-Direktive gibt ein Verzeichnis an, aus welchem Inhalte eines Benutzers geladen werden können. Die Direktive kann unterschiedlich angegeben werden.

Wird ein Pfad angegeben, der nicht mit einem Schrägstrich beginnt, wird angenommen, dass es sich um einen Verzeichnispfad relativ zum Stammverzeichnis des angegebenen Benutzers handelt. Ein Beispiel:

UserDir public_html

Die URL http://example.com/~rbowen/file.html wird in den Dateipfad /home/rbowen/public_html/file.html umgewandelt.

Beginnt der Pfad mit einem Schrägstrich, wird mit diesem Pfad ein Verzeichnispfad mit dem angegebenen Benutzernamen konstruiert:

UserDir /var/html

Die URL http://example.com/~rbowen/file.html wird in den Dateipfad /var/html/rbowen/file.html umgewandelt.

Wird ein Pfad mit einem Sternchen angegeben (*), wird ein Pfad benutzt, in dem das Sternchen durch den Benutzernamen ersetzt wird:

UserDir /var/www/*/docs

Die URL http://example.com/~rbowen/file.html wird in den Dateipfad /var/www/rbowen/docs/file.html umgewandelt.

Die Benutzer dieser Eigenschaft einschränken

Die Syntax der UserDir-Anweisung erlaubt eine Einschränkung der Benutzer dieser Funktionalität:

UserDir enabled
UserDir disabled root jro fish

Bei dieser Konfiguration dürfen alle Benutzer bis auf diejenigen, die in der disabled-Anweisung aufgeführt werden, diese Eigenschaft benutzen. Genauso gut kann die Eigenschaft für alle Benutzer bis auf einige wenige deaktiviert werden:

UserDir disabled
UserDir enabled rbowen krietz

Weitere Beispiele finden Sie unter UserDir.

Ein CGI-Verzeichnis für jeden Benutzer

Damit jeder Benutzer sein eigenes cgi-bin-Verzeichnis erhält, können Sie mit einer Directory-Direktive ein bestimmtes Unterverzeichnis aus dem Stammverzeichnisses des Benutzers für CGI aktivieren:

<Directory /home/*/cgi-bin/>
Options ExecCGI
SetHandler cgi-script
</Directory>
Benutzern das Ändern der Konfiguration erlauben

Soll den Benutzern gestattet werden, die Serverkonfiguration für Ihren Webbereich zu verändern, dann müssen Sie hierfür die .htaccess-Dateien benutzen. Achten Sie darauf, dass AllowOverride auf einen entsprechenden Wert für die Direktiven gesetzt ist, die der Benutzer verändern darf. Mehr hierzu finden Sie im .htaccess-Tutorial.

Title: .htaccess-Dateien
Praxis / Anleitungen

In den .htaccess-Dateien können Konfigurationsänderungen auf Verzeichnisebene durchgeführt werden.

Was .htaccess-Dateien sind und wie sie verwendet werden

.htaccess-Dateien (oder "verteilte Konfigurationsdateien") bieten die Möglichkeit, Konfigurationsänderungen auf der Ebene von Verzeichnissen durchzuführen. Wird eine Datei mit einer oder mehreren Konfigurationsdirektiven in einem bestimmten Dokumentverzeichnis platziert, werden die Direktiven für dieses Verzeichnis und alle enthaltenen Unterverzeichnisse angewendet.

Hinwei:

Möchten Sie der .htaccess-Datei einen anderen Namen geben, dann können Sie dies mit der AccessFileName-Direktive tun. Soll die Datei beispielsweise .config heißen, setzen Sie folgende Zeile in die Serverkonfigurationsdatei:

AccessFileName .config

Was Sie in diese Dateien einfügen dürfen, wird mit der AllowOverride-Direktive festgelegt. Diese Direktive gibt nach Kategorien an, welche Direktiven berücksichtigt werden, wenn sie in einer .htaccess-Datei stehen. Ist eine Direktive in einer .htaccess-Datei zulässig, dann gibt die Dokumentation dieser Direktive unter AllowOverride an, welcher Wert für AllowOverride angegeben werden muss, damit die Direktive zugelassen wird.

Wenn Sie beispielsweise unter AddDefaultCharset nachschlagen, finden Sie, dass sie in .htaccess-Dateien zulässig ist (in der Kontextzeile der Zusammenfassung ). Unter AllowOverride wird FileInfo angegeben. Dementsprechend muss mindestens AllowOverride FileInfo angegeben werden, damit die Anweisung aus .htaccess-Dateien berücksichtigt wird.

Beispiel:
Kontext: server config, virtual host, directory, .htaccess
AllowOverride: FileInfo

Wenn Sie sich nicht sicher sind, ob eine bestimmte Direktive in einer .htaccess-Datei zulässig ist, dann schauen Sie in der Dokumentation nach, ob dort der Eintrag ".htaccess" für Kontext steht.

Wann .htaccess-Dateien verwendet werden

Im Allgemeinen sollten Sie .htaccess-Dateien nur dann benutzen, wenn Sie keinen Zugriff auf die Konfigurationsdatei des Hauptservers haben. Es ist zum Beispiel ein weit verbreitetes Missverständnis, das die Benutzerauthentifizierung immer über die .htaccess-Dateien konfiguriert werden sollte. Das ist falsch. Sie können die Authentifizierung in der Konfigurationsdatei des Hauptservers festlegen, was auch zu empfohlen wird.

.htaccess-Dateien sollten benutzt werden, wenn die Anbieter des Inhalts auf Verzeichnisebene Konfigurationsänderungen für den Server vornehmen müssen, aber nicht die entsprechenden Rechte für den Server besitzen. Ist der Administrator nicht gewillt, häufige Konfigurationsänderungen vorzunehmen, kann es angebracht sein, dass einzelne Benutzer diese Änderungen mit den .htaccess-Dateien selbst durchführen. Das trifft insbesondere dann zu, wenn Provider mehrere Benutzer-Sites auf einem Rechner beherbergen und möchten, dass die Benutzer die Änderungen selbst durchführen können.

Generell sollte die Verwendung von .htaccess-Dateien jedoch möglichst vermieden werden. Jede Konfiguration, die Sie in einer .htaccess-Datei vornehmen, kann genauso gut in einem Directory-Abschnitt der Konfigurationsdatei des Hauptservers vorgenommen werden.

Die Verwendung von .htaccess-Dateien sollte aus zwei wichtigen Gründen vermieden werden.

Der erste ist der Serverdurchsatz. Wenn AllowOverride so gesetzt wird, dass .htaccess-Dateien benutzt werden dürfen, dann schaut der Apache in jedem Verzeichnis nach .htaccess-Dateien, was die Leistung herabsetzt, selbst wenn die Dateien nicht benutzt werden. Außerdem wird die .htaccess-Datei jedes Mal geladen, wenn ein Dokument angefordert wird.

Beachten Sie außerdem, dass der Apache in allen Verzeichnissen höherer Ebenen nach .htaccess-Dateien suchen muss, damit er den Überblick hat, welche Direktiven er anwenden muss. (Siehe auch Wie Direktiven angewendet werden.) Wird eine Datei aus dem Verzeichnis /www/htdocs/example angefordert, muss der Apache daher nach folgenden Dateien suchen:

/.htaccess
/www/.htaccess
/www/htdocs/.htaccess
/www/htdocs/example/.htaccess

Für jeden Dateizugriff in diesem Verzeichnis sind also 4 weiter Zugriffe auf das Dateisystem erforderlich, auch dann wenn keine dieser Dateien vorhanden ist. (Das trifft nur zu, wenn die Verwendung von .htaccess-Dateien für / zugelassen wird, was normalerweise nicht der Fall ist.)

Das zweite Argument betrifft die Sicherheit. Wenn Sie es zulassen, dass Benutzer die Serverkonfiguration ändern, können Änderungen vorgenommen werden, über die Sie keine Kontrolle mehr haben. Deshalb sollten Sie genau überlegen, ob Sie den Benutzern dieses Privileg einräumen. Bedenken Sie aber auch, dass Benutzer, die mit weniger Rechten ausgestattet sind, als sie benötigen, mehr Support in Anspruch nehmen werden. Sorgen Sie dafür, dass die Benutzer wissen, welche Rechte sie haben. Wenn Sie genau angeben, wie AllowOverride gesetzt wurde, und auf die entsprechende Dokumentation verweisen, dann vermeiden Sie viel Verwirrung.

Bedenken Sie, dass es genau die gleichen Auswirkungen hat, wenn Sie eine .htaccess-Datei in das Verzeichnis /www/htdocs/example stellen oder die darin enthaltenen Direktiven in den <Directory /www/htdocs/example>-Abschnitt der Konfigurationsdatei des Hauptservers setzen:

Die .htaccess-Datei aus dem Verzeichnis /www/htdocs/example:

Inhalt der .htaccess-Datei aus dem Verzeichnis <code>/www/htdocs/example</code> AddType text/example .exm Abschnitt aus der <code>httpd.conf</code>-Datei <Directory /www/htdocs/example>
AddType text/example .exm
</Directory>

Wird diese Konfiguration in der Serverkonfigurationsdatei vorgenommen, gibt es keine Leistungsverschlechterung, da die Konfiguration einmal beim Start des Apache geladen wird und nicht jedes Mal, wenn eine Datei angefordert wird.

Wenn die AllowOverride-Direktive auf none gesetzt wird, sind die .htaccess-Dateien vollständig deaktiviert:

AllowOverride None
Wie Direktiven angewendet werden

Die Konfigurationsdirektiven aus einer .htaccess-Datei werden auf das Verzeichnis und alle seine Unterverzeichnisse angewendet, in welchem sich die .htaccess-Datei befindet. Dabei ist aber zu beachten, dass sich in den darüber liegenden Verzeichnissen auch .htaccess-Dateien befinden können. Direktiven werden in der Reihenfolge angewendet, in der sie gefunden werden. Daher ist es möglich, dass .htaccess-Datei aus einem bestimmten Verzeichnis Direktiven aus .htaccess-Dateien aus darüber liegenden Verzeichnissen überschreiben können, die ihrerseits Direktiven aus noch weiter darüber liegenden Verzeichnissen überschreiben. Ferner können Direktiven aus der Konfigurationsdatei des Servers überschrieben werden.

Beispiel:

Im Verzeichnis /www/htdocs/example1 befindet sich eine .htaccess-Datei mit folgender Anweisung:

Options +ExecCGI

(Hinweis: Die Option AllowOverride Options muss aktiv sein, damit die Options-Direktive in .htaccess-Dateien benutzt werden darf.)

Im Verzeichnis /www/htdocs/example1/example2 befindet sich eine .htaccess-Datei mit folgendem Inhalt:

Options Includes

Da sich die zweite .htaccess-Datei im Verzeichnis /www/htdocs/example1/example2 befindet, ist die CGI-Ausführung nicht erlaubt, da nur Options Includes gesetzt wurde, womit alle vorherigen Direktiven vollständig überschrieben werden.

Beispiel: Authentifizierung

Wenn Sie bei der Suche nach einem Beispiel für die Authentifizierung direkt auf diese Textstelle gestoßen sind, dann seien Sie hier noch einmal auf das weit verbreitete Missverständnis hingewiesen, dass .htaccess-Dateien für die Implementierung der Passwortauthentifizierung benötigt werden. Das trifft nicht zu. Es wird empfohlen, die Authentifizierungsdirektiven in einen Directory-Abschnitt der Konfigurationsdatei des Servers zu setzen. .htaccess-Dateien sollten nur verwendet werden, wenn kein Zugriff auf die Konfigurationsdatei des Servers möglich ist. In den vorangegangenen Abschnitten wurde bereits erläutert, wann .htaccess-Dateien benutzt werden sollten.

Wenn Sie vor diesem Hintergrund trotzdem der Meinung sind, Sie müssten eine .htaccess-Datei verwenden, dann hilft Ihnen vielleicht das folgende Beispiel weiter.

Inhalt der .htaccess-Datei:

AuthType Basic
AuthName "Password Required"
AuthUserFile /www/passwords/password.file
AuthGroupFile /www/passwords/group.file
Require Group admins

AllowOverride AuthConfig muss gesetzt sein, damit diese Direktiven wirksam sind.

Die Authentifizierung und Autorisierung werden in der Anleitung Authentifizierung, Autorisierung und Zugriffskontrolle ausführlich behandelt.

Beispiel: Server-Side Includes

.htaccess-Dateien werden häufig für die Aktivierung von Server-Side Includes für ein bestimmtes Verzeichnis benutzt. Dies kann mit folgenden Direktiven in der .htaccess-Datei des gewünschten Verzeichnisses geschehen:

Options +Includes
AddType text/html shtml
AddHandler server-parsed shtml

AllowOverride FileInfo muss gesetzt sein, damit diese Direktiven wirksam sind.

Server-Side Includes werden in der Einleitung Server-Side Includes ausführlich behandelt.

CGI-Beispiel

Mit einer .htaccess-Datei kann die Ausführung von CGI-Programmen aus einem bestimmten Verzeichnis zugelassen werden. Dies kann mit folgenden Direktiven konfiguriert werden:

Options +ExecCGI
AddHandler cgi-script cgi pl

Sollen alle Dateien aus dem angegebenen Verzeichnis als CGI-Programme betrachtet werden, kann dies wie folgt konfiguriert werden:

Options +ExecCGI
SetHandler cgi-script

AllowOverride Options muss gesetzt sein, damit diese Direktiven wirksam sind.

Die CGI-Programmierung und Konfiguration wird in der Anleitung Dynamische Inhalte mit CGI ausführlich behandelt.

Fehersuche

Wenn die Konfigurationsdirektiven aus einer .htaccess-Datei nicht zum gewünschten Ergebnis führen, kann das viele Ursachen haben.

Häufig wird wurde vergessen, AllowOverride zu setzen, damit die Konfigurationsdirektiven berücksichtigt werden. Sorgen Sie dafür, dass keine AllowOverride None-Anweisung für den Dateibereich gesetzt wird. Das lässt sich einfach dadurch testen, dass unsinnige Anweisungen in die .htaccess-Datei eingefügt werden und neu geladen wird. Wird vom Server kein Fehler gemeldet, ist höchstwahrscheinlich AllowOverride None gesetzt worden.

Meldet der Server dagegen beim Versuch auf Dokumente zuzugreifen Fehler, dann überprüfen Sie das Apache-Fehlerprotokoll. Dort wird Ihnen wahrscheinlich mitgeteilt, dass die in der .htaccess-Datei benutzte Direktive nicht zulässig ist oder dass ein Syntaxfehler vorliegt, den Sie beheben müssen.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to