it-swarm.com.de

Apache - Wie verweigert man ein Verzeichnis, lässt aber eine Datei in diesem Verzeichnis zu

Ich versuche, meine Apache-.conf-Datei so zu konfigurieren, dass die Auflistung aus einer bestimmten Kategorie abgelehnt wird, aber ich möchte eine bestimmte Datei in dieser Kategorie zulassen. Es scheint, dass die Verzeichnisregel "stärker" ist als die Dateiregel, also Wenn Sie beide verwenden, kann ich nicht auf diese bestimmte Datei zugreifen.

Das versuche ich:

<Directory /var/www/denied_directory>
     order deny,allow
     Deny From All
</Directory>

<Files safefile.php>
    Order Allow,Deny
    Allow from All
</Files>
22
Maor Barazany

Es funktioniert perfekt, wenn es richtig konfiguriert ist:

   <Directory /var/www/denied_directory>
        Order allow,deny
        <Files test.php>
           Order deny,allow
        </Files>
   </Directory>
20
akond

In Apache 2.4 mit einem zusätzlichen Test einer Umgebungsvariablen für ein gutes Maß:

Siehe auch: Richtlinie fordern

<Directory "/wikis/foswiki">

    Require all denied

    # Allow access to toplevel files ending in .html (in particular index.html) only 
    # (comment out if you don't care for this)

    <Files ~ "\.html$">

       <RequireAll>
          Require all granted
          Require not env blockAccess
       </RequireAll>

    </Files>

</Directory>
8
David Tonhofer

fügen Sie Ihre Datei-Direktive in Ihre Verzeichnis-Direktive ein.

3
David Chan

In der Antwort von @ acond fehlt eine Zeile. Ich denke, es braucht Allow:

<Directory /var/www/denied_directory>
     order deny,allow
     Deny from All
    <Files safefile.php>
        order deny,allow
        Allow from All
    </Files>
</Directory>

Da es in jeder Direktive nur eine Regel gibt, vermute ich, dass die order -Zeilen irrelevant sein könnten. Obwohl vielleicht die äußerste erforderlich ist, weil mehr als eine Regel verschachtelt ist. (Ich bin neu in der Apache-Konfiguration)

1
RufusVS

So lassen Sie eine bestimmte Datei zu, wenn der Zugriff durch das HTTP-Kennwort eingeschränkt ist. Seien Sie vorsichtig, der Passwortschutz wird auf Dateisystembasis definiert und die zulässigen Dateien werden durch den URI definiert. Für Apache 2.4 aktualisiert.

<Directory /path/to/directory/>
    AuthName SecureArea
    AuthType Basic
    AuthUserFile /path/to/passwd-file
    Require user my-user

    SetEnvIf Request_URI "path/to/uri-allowed-1.php" allowedURL
    SetEnvIf Request_URI "path/to/uri-allowed-2.php" allowedURL
    Require env allowedURL
</Directory>
0
David