2010-11-05 13 views
17

Problema: Ho alcuni file in/var/www/file/che voglio loro di accedere da indirizzi IP specifici senza richiedere utente/password. Tuttavia, mi piacerebbe che qualsiasi altro indirizzo IP DOVREBBE richiedere l'accesso per accedere.Apache autenticazione di base ad eccezione di quelli ammessi

Questo è a mio httpd.conf:

<Directory /var/www/files/> 
     Order deny,allow 
     Deny from all 
     Allow from 192.168 
     AuthUserFile /etc/apache2/basic.pwd 
     AuthName "Please enter username and password" 
     AuthType Basic 
     Require user valid-user 
</Directory> 

Ma, se ho capito bene, questo significa che qualsiasi client provenienti da 192.168 * avranno accesso a tale directory ma richiederà una valida-utente. vedere il suo contenuto. E qualsiasi altro indirizzo IP verrà negato. destra?

Grazie in anticipo.

+0

Nega tutto è sintassi sbagliata vero? Ho dovuto usare "Deny From All" –

+0

Sì, hai ragione. Io lo aggiusterò. – lepe

risposta

11

modifica: questo può essere accettato risposta, ma vecchio. Per le nuove installazioni di Apache, utilizzare Brians answer here

Aggiungere questo: Satisfy Any (che significa che uno di questi due deve essere passato).

E la sintassi è o:

Require valid-user 

Oppure:

Require user <userid> 
+1

Grazie! Questo è successo! Ecco il link per coloro che sono interessati: http://httpd.apache.org/docs/2.0/mod/core.html#satisfy – lepe

22

Questo è come è fatto per Apache 2.4+ (dal Satisfy Any non è più supportato).

<Directory /var/www/files/> 

    AuthType Basic 
    AuthName "Please enter your username and password" 
    AuthUserFile /var/www/files/.htpasswd 

    <RequireAny> 
     Require ip 22.33.44.55 
     Require valid-user 
    </RequireAny> 

</Directory> 

Se si desidera richiedere sia l'indirizzo IP -e- Login/password, modificare <RequireAny>-<RequireAll>

Spero che questo aiuta qualcuno - come mi c'è voluto un po 'per capirlo.

+1

Buono a sapersi. Grazie. – lepe

+0

Wow! Questo dovrebbe essere più popolare. Questo è stato difficile da trovare per una risposta! Mi chiedo se questo è possibile per Hostname piuttosto che per IP. – ApertureSecurity

+0

Per utilizzare il nome host anziché l'IP, utilizzare questo formato: Richiedere l'host example.com –

1

Se il server si trova dietro un proxy, non si può contare sul Require ip direttamente. Tuttavia, è possibile utilizzare il Require env:

<Directory /var/www/files/> 

    AuthType Basic 
    AuthName "Please enter your username and password" 
    AuthUserFile /var/www/files/.htpasswd 

    SetEnvIF X-Forwarded-For "22.33.44.55" AllowIP 

    <RequireAny> 
     Require env AllowIP 
     Require valid-user 
    </RequireAny> 

</Directory> 

The source of the idea

+0

Il collegamento sorgente non funziona o richiede un account. – phansen

1
SetEnvIF X-Forwarded-For "192.168.135.159" AllowIP 
SetEnvIF X-Forwarded-For "192.168.135.135" AllowIP 

AuthType Basic 
AuthName "admin" 
AuthUserFile "/var/www/domain.com/cms/.htpasswd" 

<RequireAll> 
Require env AllowIP 
require valid-user 
</RequireAll> 

Ho anche controllato molte varianti. questo codice üorks con versione 2.4 di apache 100%

Problemi correlati