Melhor maneira de configurar permissões com nginx + php-fpm em hospedagem compartilhada?

2

Estou executando um servidor de hospedagem compartilhada com nginx e php-fpm no Debian.

Tudo funciona bem, o php-fpm tem pools separados para cada usuário rodando como usuário separado e cada um tem suas próprias meias.

No entanto, o Nginx está sendo executado como www-data porque não quero ter processos nginx separados para cada usuário.

Isso significa que para que o nginx tenha acesso aos dados dos usuários, as permissões de / home precisam ser drwxr-x-x. O problema é que todos os usuários têm acesso a outros arquivos de usuários.

Qual seria a melhor maneira de conceder acesso ao nginx aos arquivos dos usuários sem conceder acesso a outros usuários? Executar o nginx como root não é uma opção. Mas o AppArmor ajudaria?

    
por dBi 05.03.2013 / 13:55

1 resposta

4

Eu prefiro usar ACLs para isso. Por exemplo:

setfacl -R -m user:www-data:rx,d:user:www-data:rx /home

Concede ao usuário www-data acesso para ler arquivos e percorrer diretórios em /home e aplica a mesma ACL a quaisquer novos arquivos ou diretórios criados posteriormente.

Uma vez aplicados, os diretórios home dos usuários não precisam mais ser executáveis em nível mundial (por exemplo, chmod o= /home/$USER ), portanto, os usuários não podem mais ler os arquivos uns dos outros, mas o nginx pode.

Observe que, se alguns diretórios precisarem ser graváveis pelo servidor da Web, você poderá defini-los caso a caso, alterando ambas as instâncias das permissões rx to rwx . Por exemplo:

setfacl -R -m user:www-data:rwx,d:user:www-data:rwx /home/user/public_html/wp-content/{cache,uploads}
    
por 05.03.2013 / 14:01