
Eu tenho um aplicativo da web em uma máquina de hospedagem compartilhada Linux. Digamos que eu tenha um .htpasswd
arquivo, algumas configurações que armazenam uma senha de banco de dados e geralmente não querem que as pessoas bisbilhotem meu código-fonte em busca de vulnerabilidades.
O servidor web (apache) precisa de acesso de leitura (e gravação em alguns casos) aos arquivos acima. No entanto, não quero que outras pessoas no mesmo host compartilhado tenham acesso.
Nunca entendi muito bem como isso deveria funcionar. A questãoaquié semelhante, mas parece apontar mais para impedir que o aplicativo da web hospede acidentalmente um arquivo de senhas.
AFAIK, tudo que tenho para trabalhar são permissões básicas do Linux. Em um servidor, espera-se que eu conceda permissões a "outros" para o Apache. Em seguida, remover as permissões do grupo em que todos os outros usuários estão, nega-lhes o acesso. Isso parece bastante indireto. Em outro servidor, há um nobody
grupo ativado public_html
apenas com permissões de grupo definidas.
Uma preocupação é que se o usuário do Apache tiver acesso aos meus arquivos, um script simples poderá ser escrito e executado para obter acesso de outro usuário:
<?php
header("Content-Type: text/plain");
include $_GET['f'];
?>
TLDR: Preciso que o Apache tenha acesso aos arquivos de origem e senhas, mas não a outros usuários na mesma máquina (exceto administradores ofc).
Qual é uma configuração comum?
Perguntas relacionadas:
- Como permitir o acesso do Apache a um arquivo, mas impedir que outras pessoas o visualizem?
- https://unix.stackexchange.com/questions/30879/what-user-should-apache-and-php-be-running-as-what-permissions-should-var-www
- https://askubuntu.com/questions/26848/permissions-issue-how-can-apache-access-files-in-my-home-directory
Responder1
Crie um grupo, adicione apache/www-data ao grupo. Então:
chown -R apache:nome do grupo /var/www/mywebapp/ && \ chmod -R 640 /var/www/mywebapp
Isso concederá ao proprietário permissões de leitura e gravação (6) e de leitura do grupo (4) para a pasta e todos os subdiretórios e arquivos. O usuário do apache poderá acessar os arquivos, assim como o proprietário, mas outros não. Você deve garantir que eles não possam enviar para o usuário do Apache.
Use blocos de diretório na configuração do vhost para restringir o acesso no nível da pasta. http://httpd.apache.org/docs/2.0/misc/security_tips.html#Veja Proteger arquivos do servidor http://www.anchor.com.au/hosting/dedicated/Security_Hardening_of_an_Apache_Virtual_Host