Encontrei algumas soluções para isso:
-
Novos arquivos criados pelo Wordpress (na verdade, PHP) são dicados pelo usuário, uma diretiva de grupo no arquivo de configuração do conjunto php-fpm no qual o PHP é executado. Então, para forçar os arquivos recém-criados a usuário do site: http propriedade, como esperava originalmente, você poderia definir usuário = site-usuário e grupo = http no seu arquivo de configuração do pool php-fpm específico do site. Isso funciona porque os arquivos recém-criados têm a propriedade de grupo que eu estava procurando. No entanto, do ponto de vista da segurança, isso em parte inviabiliza a finalidade de criar pools php-fpm separados para cada site, já que qualquer site-user poderia criar arquivos PHP que teriam acesso de leitura aos arquivos / diretórios de outro site.
-
Mais simples e mais seguro que o número 1 acima é ter todos os arquivos / diretórios de um site de propriedade do site-user: site-user (em vez de site-user : http como planejei originalmente) e, em seguida, adicionar o link usuário ao grupo site-user . Com 640 (arquivos) e 750 (pastas) permissões em todos os sites, isso efetivamente dá nginx acesso somente leitura a todos os arquivos do site conforme necessário, e ainda não permite que qualquer usuário leia os arquivos de qualquer outro site, exceto seus próprio.
A opção # 2 acima não requer nenhum uso do bit setgid que simplifica as coisas, mas requer adicionar o seguinte no seu arquivo wp-config.php :
-
define( 'FS_CHMOD_DIR', ( 0750 & ~ umask() ) );
-
define( 'FS_CHMOD_FILE', ( 0640 & ~ umask() ) );
Sem as linhas acima, o WordPress / PHP criará arquivos legíveis (644) e pastas (755).