Ein Verzeichnis mit einem Passwort schützen, aber nicht die Dateien dieses Verzeichnisses?

8

Ich habe mich nur gefragt, ob es möglich ist, ein Verzeichnis mit einer Kombination aus Benutzername und Kennwort mithilfe von .htaccess- und .htpasswd-Dateien zu schützen, aber die darin enthaltenen Dateien nicht zu schützen. Das heißt, man kann beispielsweise Bilder in diesem Verzeichnis mit Freunden verknüpfen, aber das Durchsuchen des Verzeichnisses selbst wäre ohne einen Benutzernamen / ein Kennwort nicht zulässig. Vielen Dank an alle im Voraus.

Ivo Flipse
quelle

Antworten:

9

Versuchen Sie dies in Ihrem .htaccess:

Require valid-user

<Files ?*>
    Order allow,deny
    Allow from all
    Satisfy any
</Files>

Hier ist Require valid-userein bekannter Login erforderlich. Anschließend ändern Sie diese Einschränkung für Dateien mit mindestens einem Zeichen im Namen - dies entspricht dem Glob-Muster ?*für den <Files>Abschnitt -, was effektiv bedeutet, dass die beigefügten Regeln für Dateien gelten, nicht jedoch für Verzeichnisse.

In den geänderten Regeln für Dateien lautet der Schlüssel Satisfy any. Dadurch kann die Autorisierung entweder durch Anmeldeinformationen oder IP-Adresse erfüllt werden . Anschließend lassen Sie eine beliebige IP-Adresse zu, sodass Anfragen immer autorisiert sind.

Das Durchsuchen dieses Verzeichnisses oder eines seiner Unterverzeichnisse erfordert nun eine Anmeldung, das direkte Abrufen einer Datei jedoch nicht.

Welches ist, was Sie wollten.

Aristoteles Pagaltzis
quelle
0

Ja, Sie können Dateien und Verzeichnisse nach Name oder Muster sichern. Sie sollten dies bereits verwenden, um den Zugriff auf die .ht * -Dateien einzuschränken. Überprüfen Sie Ihre Apache-Konfiguration. Das erforderliche Dateimuster ist wahrscheinlich '/ $'.

BillThor
quelle
0

Verwenden Sie LocationMatchdiese Option, um das Authentifizierungsmaterial auf den Verzeichnisindex zu beschränken.

Marian
quelle
<LocationMatch "/ images"> AuthUserFile /home/asdasd/public_html/user5678/pictures/.htpasswd AuthGroupFile / dev / null AuthName "Eingeschränktes Verzeichnis" AuthType Basic </ LocationMatch> <Limit GET POST> erfordert gültigen Benutzer </ Limit> Dies ist meine aktuelle .htaccess-Datei in / images. Gibt es etwas, was ich falsch mache? Dies scheint einen 500 Internal Server Error zurückzugeben.
a) Lesen Sie darüber LocationMatch, es erfordert eine Regex. b) Sie müssen das require valid-userInnere des LocationMatchBlocks natürlich setzen (warum die LimitAussage überhaupt?)
Marian
0

Sie möchten nur die Anzeige des Index des Ordners für Apache deaktivieren. Fügen Sie dies in den .htaccess ein:

Options -Indexes

Auf diese Weise erhalten Benutzer beim Besuch http://www.url.com/folder/einen Fehler, bei dem die Verzeichnisliste abgelehnt wurde . Aber wenn sie besuchen http://www.url.com/folder/file.jpg, können sie die Datei sehen.

Pascal
quelle
1
Dies wurde nicht gefragt, diese Auflistung deaktivieren, nicht Passwort schützt sie
Krzysztof Bociurko
-1

Wenn Sie möchten, dass die Verzeichnisliste nur für autorisierte Benutzer sichtbar ist, aber jeder das Herunterladen einer Datei zulässt (damit Sie Personenlinks senden können), benötigen Sie ein Skript (PHP, ASP usw.), nach dem der Benutzer gefragt wird ein Passwort und wenn sie es richtig machen, zeigt der Inhalt des Verzeichnisses. Sie würden dieses Skript in das Verzeichnis einfügen und es als index.php benennen, damit es bereitgestellt wird, anstatt dass Apache einen Verzeichnisindex generiert.

Daisetsu
quelle
-1

Ja. Fügen Sie eine index.html-Datei hinzu, die den Inhalt des Ordners auflistet, und beschränken Sie den Zugriff auf diese Datei mit .htaccess. Wenn der Index dynamisch sein soll, müssen Sie ein Skript (oder ein serverseitiges Include) verwenden, um den Index zu generieren.

Chris Nava
quelle
-2

Führen Sie einen chmod 777 für die Dateien aus, jedoch nicht für den Hauptordner.

Christoffer Madsen
quelle
2
Nein, nicht das.
Ignacio Vazquez-Abrams