Hospedagem compartilhada: como evitar que um usuário veja os arquivos de outro, mas ainda tenha seus arquivos graváveis ​​pelo Apache/PHP

Hospedagem compartilhada: como evitar que um usuário veja os arquivos de outro, mas ainda tenha seus arquivos graváveis ​​pelo Apache/PHP

eu liQuais permissões os arquivos/pastas do meu site devem ter em um servidor web Linux?e aqui está uma pergunta vinculada. Digamos:

  • /var/www/bobweb/É de propriedade debob:bob

  • /var/www/eveweb/É de propriedade deeve:eve

e que cada site tenha um Apache VirtualHost, com link parabobweb. comeeveweb.com.

Cada site precisa ser gravável pelo Apache (há um uploader de imagens em ambos os sites), então leio frequentemente:

"Basta fazer chgrp -R www-data /var/www/bobweb/, idem para Eve, e isso é tudo!"

Isto dá:

drwxrwx---  3 bob    www-data 4096 Jan  9 17:45 bobweb
drwxrwx---  5 eve    www-data 4096 Feb 26  2019 eveweb

Na verdade, isso impede que Bob visite os arquivos de Eve a partir do shell/SSH e vice-versa.

Masparece que Eve poderia escrever um script PHP (executado por www-data) para ler (ou até mesmo modificar) /var/www/bobweb/wp-config.php(roubando assim a senha do banco de dados de Bob!).

Pergunta: como modificar as propriedades e permissões do usuário + grupo para evitar que Bob leia os arquivos de Eve e vice-versa, mas ainda permitir que o Apache + PHP grave dados nesses sites?

(situação típica de hospedagem compartilhada)

Responder1

Isso não pode ser feito totalmente apenas com permissões de arquivo - você deve consultar os aplicativos que está executando para criar jails. Para PHP você pode usar "open_basedir" por host virtual.

Você também desejará algo semelhante em seu servidor FTP (você não informou qual servidor está usando, mas muitos/a maioria possui uma diretiva apropriada).

É claro que se você estiver permitindo o cgis, todo o espaço do problema muda.

informação relacionada