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}