Apache2: como restringir o acesso a arquivos no DocumentRoot

2

Eu escrevi essa configuração para restringir o acesso a /var/www/news.html :

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/

    <Directory /var/www/>
        Order deny,allow
        Allow from all
        Options FollowSymLinks
    </Directory>

    <Files /var/www/news.hmtl>
        Order allow,deny
        Deny from all
    </Files>
</VirtualHost>

Mas example.com/news.html ainda é aberto. Resolvi isso restringindo o acesso ao URL example.com/news.html :

<Location /news.html>
    Order allow,deny
    Deny from all
</Location>

Parece que todas as regras <Directory> e <Files> são substituídas por algum <Location> implícito ao resolver o URL para o caminho DocumentRoot relativo. É verdade e eu deveria pensar no DocumentRoot como sobre um lugar que propôs ser público visível?

    
por Kirill 08.05.2011 / 11:11

1 resposta

2

A diretiva Files não pega um caminho - mude o bloco de arquivos assim.

<Files news.hmtl>
    Order allow,deny
    Deny from all
</Files>

O acima funcionaria, mas pode não fazer exatamente o que você quer, pois qualquer arquivo chamado news.html dentro do sistema de arquivos inteiro do vhost seria bloqueado. Você pode limitar o escopo da diretiva Files, agrupando-a em uma diretiva Directory

<Directory /var/www/test>
    Order deny,allow
    Allow from all
    Options FollowSymLinks
    <Files news.hmtl>
        Order allow,deny
        Deny from all
    </Files>
</Directory>

Agora os arquivos chamados news.html dentro do diretório /var/www/test e todos os seus subdiretórios seriam bloqueados.

Dê uma olhada na seção Sistema de arquivos e espaço da Web dos documentos do Apache para obter mais informações sobre como esses diretivas interagem.

    
por 08.05.2011 / 11:38

Tags