Negar recursivamente o acesso, mas permitir o acesso via htpasswd a um arquivo no subdiretório?

2

Estou atualmente negando o acesso a todos os subdiretórios e arquivos com exceção do arquivo /var/www/subdir/file.php

<Directory /var/www/*>
    Allow from None
    Order allow,deny
</Directory>

<Location /subdir/file.php>
      Order allow,deny
      allow from all
</Location>

Como posso proteger este arquivo com htpasswd ? Eu tentei a seguinte sintaxe, mas não funcionou:

<Directory /var/www/*>
    Allow from None
    Order allow,deny
</Directory>

<Location /subdir/file.php>
      Order allow,deny
      allow from all

      AuthType Basic
      AuthName "Restricted Access"
      AuthUserFile /var/www/private_html/passwords/allowed-users
      Require user me
</Location>

EDITAR Aqui está todo o meu arquivo httpd.conf

<Directory /var/www/public_html/*>
        Allow from None
        Order allow,deny
</Directory>

<Location /hello1.php>

        AuthType Basic
        AuthName "Restricted Access"
        AuthUserFile /var/www/private_html/passwords/allowed-users
        Require user me

        SetEnvIf Request_URI "(/hello1.php)$" allow

        Order allow,deny
        Allow from env=allow
        Satisfy any

</Location>
    
por user784637 14.06.2012 / 04:13

3 respostas

3
    <FilesMatch "^(?!protected\.html)$">
       deny from all
    </FilesMatch>
    <Files "protected.html">
       AuthName "Username and password required"
       AuthUserFile /www/sites/testcase.com/.htpasswd
       Require valid-user
       AuthType Basic
    </Files>

Você receberá um proibido por tudo, menos o arquivo em questão. Mas quando você tenta acessar protected.html ou qualquer outro nome que você queira, ele lhe dará uma caixa de diálogo de autenticação básica.

    
por 14.06.2012 / 06:38
2
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /home/path/.htpasswd
AuthGroupFile /dev/null
Require valid-user
SetEnvIf Request_URI "(path/to/file\.php)$"  allow
Order allow,deny
Allow from env=allow
Satisfy any

Você pode colocar o acima em seu arquivo .htaccess

    
por 14.06.2012 / 04:31
1

Tente negar acesso por endereço IP. Isso deve funcionar em torno de satisfy any , mas nenhum acesso seria permitido com satisfy all .

<Location /subdir/file.php>
      Order allow,deny
      deny from all

      AuthType Basic
      AuthName "Restricted Access"
      AuthUserFile /var/www/private_html/passwords/allowed-users
      Require valid-user
</Location>

Ou tente usar qualquer um para exigir senha de endereços não confiáveis.

<Location /subdir/file.php>
      Order allow,deny
      allow from 127.0.0.1
      deny from all
      satisfy any

      AuthType Basic
      AuthName "Restricted Access"
      AuthUserFile /var/www/private_html/passwords/allowed-users
      Require user me
</Location>

Verifique seu log de erros para ver se algo está registrado lá. Eu encontrei a solução lá em alguns casos onde eu recebi diretivas erradas.

    
por 14.06.2012 / 06:13

Tags