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}