2013-09-26 8 views
5

Ho un file server e uso mod_autoindex per server i file. Ho un nome utente e una password in htaccess, quindi solo alcune persone possono accedere ai file. Ho aggiunto un altro utente a htpasswd, ma mi piacerebbe che quell'utente potesse accedere ad alcuni file/cartelle.htaccess password proteggere i file con diversi utenti

Ecco il mio file .htaccess ora:

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

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

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

Sono sicuro che sto facendo qualcosa di sbagliato, ma non riesco a trovare alcuna buona documentazione su questo.

+0

Che cos'è "filesForAnyUser"? È una cartella? –

+0

ya che è una cartella con file che dovrebbero essere disponibili per qualsiasi utente –

+0

'E: \\ percorso \\ a \\. Htpasswd' considera la possibilità di cambiarlo in' E:/percorso/a/.htpasswd' usando la barra opposta risparmiarti qualche problema in alcune situazioni specifiche. – Prix

risposta

5

Se si dispone di una cartella denominata "filesForAnyUser" e di una cartella in cui sono presenti solo file per l'amministratore, è necessario creare 2 file htaccess. Uno in "filesForAnyUser":

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

e uno in altra directory:

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

che ha funzionato, ma perché non funzionano le direttive o ? –

+0

@UziTech Entrambi [Directory] (http://httpd.apache.org/docs/current/mod/core.html#directory) e [Location] (http://httpd.apache.org/docs/current/mod /core.html#location) hanno contesti di configurazione "server" e "virtualhost". ** Not ** "htaccess", quindi queste direttive non possono essere utilizzate in un file htaccess, il che ha senso perché inserire un file htaccess in una directory è come usare un '' su quella directory. –

+0

ha senso. Grazie –

1

Quindi ecco la mia soluzione definitiva per chiunque altro.

Inserire il seguente nella cartella principale:

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

Inserire il seguente in qualsiasi cartella in cui admin e user1 possono accedere al file:

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

Se si desidera consentire user1 a solo l'accesso alcuni file è possibile utilizzare <FilesMatch>:

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> 

Questo dà amministratore accesso a tutti i file in quella cartella, ma user1 accesso solo ai file elencati in <FilesMatch>

Nota: i file in <FilesMatch> sono per la directory corrente e qualsiasi sottodirectory. Non sono sicuro di come limitarlo alla sola directory corrente.