2013-09-26 6 views
5

Ich habe einen Dateiserver und ich benutze mod_autoindex, um die Dateien zu Server. Ich habe einen Benutzernamen und ein Passwort in htaccess, so dass nur bestimmte Personen auf die Dateien zugreifen können. Ich habe einen weiteren Benutzer zu htpasswd hinzugefügt, aber ich möchte nur diesen Benutzer auf einige der Dateien/Ordner zugreifen.htaccess Passwort schützen Dateien mit verschiedenen Benutzern

Hier ist meine .htaccess-Datei jetzt:

AuthType Basic 
AuthName "restricted" 
AuthUserFile E:\\path\\to\\.htpasswd 

<Files "filesForAnyUser\\*"> 
    Require valid-user 
</Files> 

<Files "*"> 
Require user admin 
</Files> 

Ich bin sicher, dass ich etwas falsch mache, aber ich kann keine gute Dokumentation zu diesem Thema finden.

+0

Was ist "filesForAnyUser"? Ist das ein Ordner? –

+0

ya das ist ein Ordner mit Dateien, die für jeden Benutzer verfügbar sein sollten –

+0

'E: \\ path \\ zu \\. Htpasswd' erwägen, es zu' E:/path/to/.htpasswd' zu ändern, indem man den umgekehrten Schrägstrich benutzt speichern Sie einige Probleme in bestimmten Situationen. – Prix

Antwort

5

Wenn Sie einen Ordner namens "filesForAnyUser" und einen Ordner haben, in dem Sie nur Dateien für admin haben, müssen Sie 2 htaccess-Dateien erstellen. Ein in "filesForAnyUser":

AuthType Basic 
AuthName "restricted" 
AuthUserFile E:\\path\\to\\.htpasswd 
Require valid-user 

und eine im anderen Verzeichnis:

AuthType Basic 
AuthName "restricted" 
AuthUserFile E:\\path\\to\\.htpasswd 
Require user admin 
+0

das hat funktioniert, aber warum funktionieren die oder Direktiven nicht? –

+0

@UziTech Both [Verzeichnis] ​​(http://httpd.apache.org/docs/current/mod/core.html#directory) und [Location] (http://httpd.apache.org/docs/current/mod /core.html#location) haben Kontexte von "server" und "virtualhost" config. ** Nicht ** "htaccess", daher können diese Direktiven nicht in einer htaccess-Datei verwendet werden, was sinnvoll ist, da das Einfügen einer htaccess-Datei in ein Verzeichnis eine Art "" in diesem Verzeichnis ist. –

+0

macht Sinn. Vielen Dank –

1

hier So ist meine endgültige Lösung für alle anderen.

die folgenden im Stammordner Put:

AuthType Basic 
AuthName "restricted" 
AuthUserFile E:\\path\\to\\.htpasswd 
Require user admin 

folgendes in einem beliebigen Ordner Legen Sie in dem Server-Betreiber und user1 auf die Datei zugreifen können:

AuthType Basic 
AuthName "restricted" 
AuthUserFile E:\\path\\to\\.htpasswd 
Require user admin user1 #users separated by space or "Require valid-user" if all users 

Wenn Sie user1, um den Zugriff ermöglichen wollen bestimmte Dateien können Sie <FilesMatch> verwenden:

AuthType Basic 
AuthName "restricted" 
AuthUserFile E:\\path\\to\\.htpasswd 
Require user admin 
<FilesMatch "^(doc1.pdf|doc2.txt|doc3.docx)$"> 
    Require user admin user1 #or valid-user 
</FilesMatch> 

Dies gibt Admin Zugriff auf alle Dateien in diesem Ordner, aber Benutzer1 nur Zugriff auf die Dateien in <FilesMatch>

Hinweis: Die Dateien in <FilesMatch> sind für das aktuelle Verzeichnis und ein beliebiges Unterverzeichnis. Ich bin mir nicht sicher, wie ich es auf das aktuelle Verzeichnis beschränken soll.