<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.de.xsl"?>
<modulesynopsis metafile="mod_access.xml.meta">

<name>mod_access</name> 
<description>Zugriff auf den Inhalt des Webservers auf Basis von Hostnamen, 
IP-Adressen oder anderen Charakeristka der Client-Anfrage</description>
<status>Base</status>
<sourcefile>mod_access.c</sourcefile>
<identifier>access_module</identifier>
<compatibility>Nur bis einschlie&szlig;lich Version 2.0</compatibility>

<summary>
    <p>Die Direktiven des Moduls <module>mod_access</module> werden
    in den Abschnitten 
    <directive module="core" type="section">Directory</directive>,
    <directive module="core" type="section">Files</directive> und
    <directive module="core" type="section">Location</directive> sowie
    in den 
    <code><a href="core.html#accessfilename">.htaccess</a></code>-Dateien
    f&uuml;r die Zugriffskontrolle auf bestimmte Teile des Servers benutzt. Der
	Zugriff kann &uuml;ber den Hostnamen, die IP-Adresse oder
    andere Charakeristka der Client-Anfrage gesteuert werden, die in <a
    href="../env.html">Umgebungsvariablen</a> enthalten sind. Die Anweisungen
    <directive module="mod_access">Allow</directive> und <directive
    module="mod_access">Deny</directive> geben an, welchen Clients der
    Zugriff auf den Server gestattet ist, w&auml;hrend die 
    <directive module="mod_access">Order</directive>-Anweisung
    den standardm&auml;&szlig;igen Zugriff und das Zusammenwirken der
	Anweisungen <directive module="mod_access">Allow</directive> und <directive
    module="mod_access">Deny</directive> mit anderen Direktiven festlegt.</p>

    <p>Die auf Hosts und Passw&ouml;rtern basierende Zugriffskontrolle 
    kann parallel implementiert werden. In diesem Fall legt die 
    <directive module="core">Satisfy</directive>-Anweisung
    das Zusammenwirken beider Verfahren fest.</p>

    <p>Im Allgemeinen gelten Zugriffseinschr&auml;nkungen f&uuml;r alle 
    Zugriffsmethoden (<code>GET</code>, <code>PUT</code>,
    <code>POST</code>usw.), was meist auch gew&uuml;nscht wird.
    In manchen Situationen ist es aber erforderlich, nur f&uuml;r bestimmte
    Methoden Zugriffseinschr&auml;nkungen vorzunehmen. Hierf&uuml;r werden
    die Direktiven in einen 
    <directive module="core" type="section">Limit</directive>-Abschnitt
    gesetzt.</p>
</summary>

<seealso><directive module="core">Satisfy</directive></seealso>
<seealso><directive module="core">Require</directive></seealso>

<directivesynopsis>
<name>Allow</name>

<description>Gibt an, welche Hosts auf einen Serverbereich
zugreifen d&uuml;rfen.</description>
<syntax> Allow from
    all|<var>Host</var>|env=<var>Umgebungsvariable</var>
    [<var>Host</var>|env=<var>Umgebungsvariable</var>] ...</syntax>
<contextlist><context>directory</context><context>.htaccess</context>
</contextlist>
<override>Limit</override>

<usage>

    <p>Die <directive>Allow</directive>-Anweisung legt fest, welche Hosts
    auf einen Serverbereich zugreifen k&ouml;nnen. Der Zugriff kann &uuml;ber
	den Hostnamen, die IP-Adresse, den IP-Adressbereich oder andere
    Angaben aus den Umgebungsvariablen der Client-Anfrage 
    gesteuert werden.</p>

    <p>Das erste Argument dieser Anweisung ist immer das
    <code>from</code>-Argument. Darauf k&ouml;nnen drei unterschiedliche
    Argumente folgen. Das Argument <code>Allow from all</code> 
    gew&auml;hrt allen Hosts Zugriff. Die Anweisungen
    <directive module="mod_access">Deny</directive> und <directive
    module="mod_access">Order</directive> werden weiter unten
    erl&auml;utert. Um nur bestimmten Hosts oder Host-Gruppen den Zugriff auf
    den Server zu gestatten, kann <var>Host</var> wie folgt
    angegeben werden:</p>

    <dl>
      <dt>Ein (partieller) Dom&auml;nenname</dt>

      <dd>
      <example><title>Beispiel:</title>
        Allow from apache.org
      </example>
      <p>Hosts mit &uuml;bereinstimmenden Namen oder Namensendungen
      d&uuml;rfen zugreifen. Dabei werden nur vollst&auml;ndige
	  Namensbestandteile ber&uuml;cksichtigt, was bedeutet, dass im oben
	  aufgef&uuml;hrten Beispiel der Name <code>foo.apache.org</code> aber nicht
	  der Name <code>fooapache.org</code> als &Uuml;bereinstimmung gilt. Bei
      dieser Konfiguration f&uuml;hrt der Apache eine doppelt reversive 
      DNS-Suche f&uuml;r die IP-Adresse des Clients durch, ungeachtet der
	  Anweisung <directive module="core">HostnameLookups</directive>. Mit
      der reversiven DNS-Suche nach der IP-Adresse soll der damit
      verbundene Hostname gefunden und mit dem anschlie&szlig;enden
      Suchlauf in umgekehrten Reihenfolge die &Uuml;bereinstimmung mit
      der urspr&uuml;nglichen IP-Adresse ermittelt werden. Nur bei
	  &Uuml;bereinstimmung beider ist das Ergebis konsistent und den Hosts
      wird Zugriff gew&auml;hrt.</p></dd>

      <dt>Eine vollst&auml;ndige IP-Adresse</dt>

      <dd>
      <example><title>Beispiel:</title>
        Allow from 10.1.2.3
      </example>
      <p>Die IP-Adresse eines Host mit Zugriff.</p></dd>

      <dt>Eine partielle IP-Adresse</dt>

      <dd>
      <example><title>Beispiel:</title>
        Allow from 10.1
      </example>
      <p>Die ersten zwei Byte einer IP-Adresse f&uuml;r 
      Subnet-Einschr&auml;nkungen.</p></dd>

      <dt>Ein Netzwerk-/Netmask-Paar</dt>

      <dd>
      <example><title>Beispiel:</title>
        Allow from 10.1.0.0/255.255.0.0
      </example>
      <p>Netzwerk a.b.c.d und Netmask w.x.y.z. F&uuml;r eine feiner
      eingestellte Subnet-Einschr&auml;nkung.</p></dd>

      <dt>Eine Netzwerk-/nnn-CIDR-Angabe</dt>

      <dd>
      <example><title>Beispiel:</title>
        Allow from 10.1.0.0/16
      </example>
      <p>Gleicht dem letzten Beispiel, die Netmask besteht aber aus
      nnn oberen 1-Bits.</p></dd>
    </dl>

    <p>Die drei letzten Beispiele gelten f&uuml;r genau die gleichen
	Hosts.</p>

    <p>IPv6-Adressen und IPv6-Subnets k&ouml;nnen wie folgt angegeben
	werden:</p>

    <example>
       Allow from fe80::a00:20ff:fea7:ccea<br />
       Allow from fe80::a00:20ff:fea7:ccea/10
    </example>

    <p>Das dritte Argument der <directive>Allow</directive>-Direktive
     erm&ouml;glicht eine Steuerung des Zugriffs auf den Server
    &uuml;ber eine <a href="../env.html">Umgebungsvariable</a>. Wird
	<code>Allow env=<var>Umgebungsvariable</var></code> angegeben, wird
    der Zugriff gew&auml;hrt, falls die <var>Umgebungsvariable</var>
    vorhanden ist. Der Server l&auml;sst ein flexibles Setzen von 
    Umgebungsvariablen basierend auf den Angaben der Client-Anfrage
    mit den Anweisungen des Moduls <module>mod_setenvif</module> zu.
    Deshalb kann mit dieser Anweisung der Zugriff &uuml;ber Angaben wie 
    <code>User-Agent</code> des Clients (Browsertyp), <code>Referer</code>
    oder andere Felder des HTTP-Anfrage-Headers gesteuert werden.</p>

    <example><title>Beispiel:</title>
      SetEnvIf User-Agent ^KnockKnock/2\.0 let_me_in<br />
      &lt;Directory /docroot&gt;<br />
      <indent>
        Order Deny,Allow<br />
        Deny from all<br />
        Allow from env=let_me_in<br />
      </indent>
      &lt;/Directory&gt;
    </example>

    <p>In diesem Beispiel erhalten Browser Zugriff, deren
	User-Agent-Zeichenkette mit <code>KnockKnock/2.0</code> beginnt, w&auml;hrend
	alle &uuml;brigen zur&uuml;ckgewiesen werden.</p>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>Deny</name>
<description>Legt fest, welchen Hosts der Zugriff auf den Server verwehrt wird.
</description>
<syntax> Deny from all|<var>Host</var>|env=<var>Umgebungsvariable</var>
[<var>Host</var>|env=<var>Umgebungsvariable</var>] ...</syntax>
<contextlist><context>directory</context><context>.htaccess</context>
</contextlist>
<override>Limit</override>

<usage>
    <p>Mit dieser Direktive kann der Zugriff auf den Server &uuml;ber
    den Hostnamen, die IP-Adresse oder &uuml;ber Umgebungsvariablen
    eingeschr&auml;nkt werden. Die Argumente f&uuml;r die 
    <directive>Deny</directive>-Anweisung sind die gleichen wie
    bei der <directive module="mod_access">Allow</directive>-Anweisung.</p>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>Order</name>
<description>Legt die Voreinstellung und die Reihenfolge fest, in welcher
<directive>Allow</directive> und <directive>Deny</directive> ausgewertet
 werden.</description>
<syntax> Order <var>Reihenfolge</var></syntax>
<default>Order Deny,Allow</default>
<contextlist><context>directory</context><context>.htaccess</context>
</contextlist>
<override>Limit</override>

<usage>

    <p>Die <directive>Order</directive>-Direktive legt die Standardvorgabe
    und die Reihenfolge fest, in der die Anweisungen <directive
    module="mod_access">Allow</directive> und <directive
    module="mod_access">Deny</directive> ausgewertet werden.
    Die <var>Reihenfolge</var> kann sein:</p>

    <dl>
      <dt><code>Deny,Allow</code></dt>

      <dd>Die <directive module="mod_access">Deny</directive>-Anweisungen
      werden vor den <directive
      module="mod_access">Allow</directive>-Anweisungen ausgewertet. 
      Der Zugriff ist standardm&auml;&szlig;ig gestattet. Jeder Client,
	  f&uuml;r den es keine <directive module="mod_access"
	  >Deny</directive>-Direktive oder eine <directive module="mod_access"
	  >Allow</directive>-Direktive gibt, hat Zugriff auf den Server.</dd>

      <dt><code>Allow,Deny</code></dt>

      <dd>Die <directive module="mod_access">Allow</directive>-Direktiven
      werden vor den <directive
      module="mod_access">Deny</directive>-Direktiven ausgewertet. Der
      Zugriff wird standardm&auml;&szlig;ig verweigert. Jedem Client, f&uuml;r
	  den es keine <directive module="mod_access">Allow</directive>-Direktive
	  oder eine <directive module="mod_access">Deny</directive>-Direktive gibt,
      wird der Zugriff auf den Server verweigert.</dd>

      <dt><code>Mutual-failure</code></dt>

      <dd>Nur die Hosts, die in der <directive
      module="mod_access">Allow</directive>-Liste und nicht in der 
      <directive module="mod_access">Deny</directive>-Liste erscheinen, 
      erhalten Zugriff. Diese Reihenfolge f&uuml;hrt zum gleichen Ergebnis wie
      <code>Order Allow,Deny</code> und wird zu Gunsten dieser 
      abgelehnt.</dd>
    </dl>

    <p>Schl&uuml;sselw&ouml;rter d&uuml;rfen nur durch ein Komma getrennt
	werde. Leerstellen sind <em>nicht</em> zul&auml;ssig. Beachten Sie,
	dass in allen F&auml;llen jede <directive
    module="mod_access">Allow</directive>- und jede <directive
    module="mod_access">Deny</directive>-Anweisung ausgewertet wird.</p>

    <p>Im folgenden Beispiel haben alle Hosts der Dom&auml;ne apache.org
    Zugriff. Allen &uuml;brigen Hosts wird der Zugriff verweigert.</p>

    <example>
      Order Deny,Allow<br />
      Deny from all<br />
      Allow from apache.org
    </example>

    <p>Im n&auml;chsten Beispiel wird allen Hosts der Dom&auml;ne apache.org
    Zugriff gew&auml;hrt. Ausgenommen sind Hosts, die zu Subdom&auml;ne 
    foo.apache.org geh&ouml;ren. Alle Hosts au&szlig;erhalb der Dom&auml;ne
    apache.org domain haben infolge der Voreinstellung <code>deny</code>
    keinen Zugriff auf den Server.</p>

    <example>
      Order Allow,Deny<br />
      Allow from apache.org<br />
      Deny from foo.apache.org
    </example>

    <p>Wird die <directive>Order</directive>-Anweisung aus dem letzten
    Beispiel jedoch mit <code>Deny,Allow</code> angegeben, dann erhalten alle
    Hosts Zugriff. Dazu kommt es, weil unabh&auml;ngig von der
	tats&auml;chlichen Reihenfolge der Anweisungen in der Konfigurationsdatei,
    <code>Allow from apache.org</code> zuletzt ausgewertet wird
    und <code>Deny from foo.apache.org</code> &uuml;berschreibt.
    Allen Hosts, die nicht zur Dom&auml;ne <code>apache.org</code>
	geh&ouml;ren, wird ebenfalls Zugriff gew&auml;hrt, weil <var>allow</var> zur
	Voreinstellung wird.</p>

    <p>Das Vorhandensein einer <directive>Order</directive>-Anweisung kann
    den Zugriff auf einen Teil des Servers beeinflussen, selbst wenn eine
	begleitende <directive module="mod_access">Allow</directive>- und <directive
    module="mod_access">Deny</directive>-Anweisung fehlt, da sie
    Auswirkungen auf den standardm&auml;&szlig;igen Zugriff hat. Ein
	Beispiel:</p>

    <example>
      &lt;Directory /www&gt;<br />
      <indent>
        Order Allow,Deny<br />
      </indent>
      &lt;/Directory&gt;
    </example>

    <p>Jeder Zugriff auf das Verzeichnis <code>/www</code> wird verweigert, 
    weil standardm&auml;&szlig;ig die Einstellung <var>deny</var> gilt.</p>

    <p>Die <directive>Order</directive>-Anweisung regelt w&auml;hrend jeder Phase
    der Konfigurationsverarbeitung durch den Server die Reihenfolge f&uuml;r die 
    Verarbeitung der Anweisungen. Das f&uuml;hrt zum
    Beispiel dazu, dass eine <directive module="mod_access">Allow</directive>-
     oder eine <directive
    module="mod_access">Deny</directive>-Anweisung aus einem 
    <directive module="core" type="section">Location</directive>-Abschnitt
     unabh&auml;ngig von der
    <directive>Order</directive>-Anweisung immer nach einer <directive
    module="mod_access">Allow</directive>- oder <directive
    module="mod_access">Deny</directive>-Anweisung aus einem 
    <directive module="core" type="section">Directory</directive>-Abschnitt
	oder einer <code>.htaccess</code>-Datei ausgewertet wird. Einzelheiten
    zur Zusammenstellung der Konfigurationsabschnitte finden Sie unter <a
    href="../sections.html">Konfigurationsabschnitte</a>.</p>
</usage>
</directivesynopsis>

</modulesynopsis>


