O Apache não está criando diretórios com o sgid habilitado

0

Adicionei sgid recursivamente à raiz do documento do meu site wordpress. Eu posso criar arquivos e diretórios dentro com grupo herdado. Mesmo diretórios criados pelo FTP também funcionam bem com o sgid. Mas qualquer diretório criado pelo apache (www-data) não está com o bit sgid habilitado, então qualquer coisa dentro dele será criada com o padrão www-data: www-data.

Por exemplo, no diretório uploads / 2017, o apache criou o diretório 09 sem sgid. Mesmo se eu criar qualquer diretório com usuário root aqui, ele terá o sgid habilitado.

drwxrwsr-x+ 10 www-data myuser  4096 Sep 19 20:44 . 
drwxrwsr-x+ 16 www-data myuser  4096 Sep 19 20:48 ..    
drwxrwxr-x+  2 www-data myuser  4096 Sep 19 19:23 09 
drwxrwsr-x+  2 root     myuser  4096 Sep 19 21:04 test

Como podemos forçar o apache a usar o sgid ao criar novos diretórios?

    
por Saqib Iqbal 20.09.2017 / 09:21

1 resposta

0

Esta é uma coisa do WordPress, certo? Eu estava tendo o mesmo problema, e estava culpando o Apache também, mas a solução que encontrei na verdade era uma configuração do WordPress.

Veja link

No meu servidor particular, o WordPress estava usando suas próprias configurações de permissão de arquivo (e ignorando o bit SGID) da mesma maneira que você estava descrevendo. Eu não sei qual é a razão, mas parece intencional. A solução para mim foi adicionar a máscara de permissão específica ao arquivo wp-config.php:

define( 'FS_CHMOD_DIR', 02775 );
  • 0 == octal

  • 2 == conjunto SGID

  • 755 == rwxrw-rw- permissões

Com os arquivos e diretórios existentes do WordPress com a permissão correta (incluindo SGID em todos os diretórios), novos arquivos e diretórios criados pelo WordPress (plugins, temas, uploads) usaram a máscara de arquivo 02755 e herdaram a propriedade de grupo correta. OBSERVE que o usuário do Apache www-data deve estar no grupo também.

Mais detalhes:

  1. grupo criado para ser usado por todos os usuários SFTP e Apache: sudo groupadd sftp-grp.

  2. adicione o Apache ao grupo sftp-grp: sudo usermod -a -G sftp -grp www-data

  3. adicione usuários regulares ao grupo sftp-grp, como acima.

  4. defina todos os arquivos do WordPress pertencentes ao Apache, mas com o grupo compartilhado: sudo chown -R www-data: sftp-grp / var / www / caminho-para-wordpress

  5. certifique-se de que todos os arquivos do WordPress são de leitura / gravação em grupo (talvez queira reconsiderar para .htaccess e wp-config.php): sudo chmod -R g + rw / var / www / caminho-para- wordpress

  6. adicione o bit SGID ao diretório principal do WordPress: sudo chmod g + s / var / www / caminho-para-wordpress

  7. ... e todos os subdiretórios: sudo encontre / var / www / caminho-para-wordpress -tipo d -exec chmod g + s '{}' \;

  8. adicionado ao wp-config.php: define ('FS_CHMOD_DIR', 02775);

por 28.04.2018 / 02:45