Apache2: Como restringir o acesso a um diretório, mas permitir acesso a um arquivo dentro dele?

3

Eu herdei um aplicativo da web mal projetado, que tem um determinado arquivo que precisa ser publicamente acessível, mas esse arquivo está dentro de um diretório que não deveria.

Em outras palavras, eu preciso de uma maneira de bloquear todos os arquivos e subdiretórios dentro de um diretório, mas substituí-lo por um único arquivo.

Estou tentando isso:

# No one needs to access this directly
<Directory /var/www/DangerousDirectory/>
   Order Deny,allow
   Deny from all

   # But this file is OK:
   <Files /var/www/DangerousDirectory/SafeFile.html>
      Allow from all
   </Files>
</Directory>

Mas não está funcionando - apenas bloqueia tudo, incluindo o arquivo que eu quero permitir. Alguma sugestão?

    
por Nick 26.08.2010 / 11:31

3 respostas

2

Há uma resposta no StackOverflow que deve responder a essa pergunta. Acredito que há uma Order ausente na diretiva Files aninhada?

link

    
por 06.04.2012 / 15:08
2
# No one needs to access this directly
<Directory /var/www/DangerousDirectory/>
   Order Deny,allow
   Deny from all
</Directory>
# But this file is OK:
<Files /var/www/DangerousDirectory/SafeFile.html>
   Order Deny,Allow
   Allow from all
</Files>

E se esse diretório for protegido por senha, adicione Satisfy any também.

    
por 26.08.2010 / 11:43
0

Uma resposta muito tardia, mas talvez ainda uma resposta.

A tag está no escopo do diretório e não deve ter o caminho completo. Por isso, deve ler:

<Directory "/var/www/DangerousDirectory">
   Order Deny,allow
   Deny from all

   # But this file is OK:
   <Files "SafeFile.html">
      Allow from all
   </Files>
</Directory>

Esteja ciente de que isso permitiria qualquer arquivo chamado SafeFile.html nessa árvore de diretórios.

    
por 21.07.2014 / 12:51