Por que o Apache pode acessar a maioria do meu sistema de arquivos?

1

Recentemente, descobri que, desde que eu forneça um caminho completo, meu servidor da Web exibirá qualquer arquivo no meu sistema de arquivos para o qual ele tenha privilégios de leitura. Em outras palavras, algo como

http://www.example.com/Users/john/Desktop/Costa%20Rica/DSC_0058.jpg

será felizmente servido pelo servidor web. Isso é apesar de todas as configurações de DocumentRoot apontando apenas para /Library/WebServer/Documents .

Por que o Apache atende todo o sistema de arquivos? Pode ser desligado?

    
por kqr 29.04.2015 / 16:44

2 respostas

0

Ainda não tenho ideia do que causa isso.

Descobri que estava servindo apenas arquivos de /Users/john e não o restante do sistema de arquivos (além da raiz correta do documento para o servidor), então presumo que seja algo relacionado a algum arquivo inteligente do OS X compartilhando algo algo.

Eu verifiquei por mod_userdir , o que não foi ativado. Eu verifiquei todas as seções Directory e Location , nenhuma das quais parece permitir o acesso aos arquivos em /Users/john . Nada na configuração menciona john especificamente, e não consigo encontrar qualquer regex que combine com isso também. Ele não parece estar relacionado à extensão do arquivo (seria mais ou menos do tipo "servir todas as imagens" ou algo assim, mas também não era isso).

Então, o que acabei fazendo depois de muitas horas foi adicionar uma seção <Location /Users> ao meu global httpd.conf , onde desativei o acesso para todos, assim:

<Location "/Users">
        Order Deny,Allow
        Deny from all
</Location>

(que é exatamente o que a minha seção <Directory /> parece também, para o registro.)

Esta não é a melhor das soluções, mas parece negar o acesso a arquivos que não devem ser exibidos.

Como isso foi o que funcionou para mim, vou aceitá-lo como a resposta. Sou grato pela ajuda dada a mim por Safado, e se alguém mais vier no futuro e tiver alguma pista, por favor poste-as! É provável que este servidor esteja em serviço por pelo menos mais algum tempo, e eu ficaria feliz em experimentar uma solução mais adequada, se existir.

Edit: Aparentemente, alguém havia colocado um link simbólico Users -> /Users na raiz do documento (eu havia descartado isso anteriormente porque ele não servia para nenhum diretório de usuários diferente de john ). Eu estou supondo que talvez por algum motivo o usuário www-data que executa o Apache tenha permissões do sistema de arquivos para ler /Users/john , mas não os outros diretórios dentro de /Users , mas de qualquer forma, remover o symlink resolveu meu problema.

    
por 30.04.2015 / 11:32
4

Tente procurar por uma seção <Directory /> e certifique-se de que quaisquer configurações dentro dessa tag sejam restritivas.

Verifique também se o mod_userdir está ativado e configurado. Procure tags como UserDir

    
por 29.04.2015 / 16:48