Configuração do usuário
Então, vamos começar adicionando o usuário principal ao grupo de usuários do Apache:
sudo usermod -a -G www-data demo
Isso adiciona o usuário 'demo' ao grupo 'www-data'. Certifique-se de usar as opções -a e -G com o comando usermod mostrado acima.
Você precisará fazer logout e login novamente para habilitar a mudança de grupo.
Verifique os grupos agora:
groups
...
# demo www-data
Portanto, agora sou membro de dois grupos: My own (demo) e o grupo Apache (www-data).
Configuração de pasta
Agora precisamos garantir que a pasta public_html pertence ao usuário principal (demo) e faz parte do grupo Apache (www-data).
Vamos configurar isso:
sudo chgrp -R www-data /home/demo/public_html
Já que estamos falando sobre permissões, acrescentarei uma nota rápida sobre o comando sudo: É um bom hábito usar caminhos absolutos (/ home / demo / public_html) como mostrado acima em vez de caminhos relativos (~ / public_html). Ele garante que o sudo esteja sendo usado no local correto.
Se você tiver uma pasta public_html com links simbólicos, tome cuidado com esse comando, pois ele seguirá os links simbólicos. Nos casos de uma pasta public_html funcional, altere cada pasta manualmente.
Setgid
Bom até agora, mas lembre-se que o comando que acabamos de dar afeta apenas as pastas existentes. Que tal algo novo?
Podemos definir a propriedade para que qualquer coisa nova também esteja no grupo 'www-data'.
O primeiro comando mudará as permissões do diretório public_html para incluir o bit "setgid":
sudo chmod 2750 /home/demo/public_html
Isso irá garantir que quaisquer novos arquivos recebam o grupo 'www-data'. Se você tiver subdiretórios, você desejará executar esse comando para cada subdiretório (este tipo de permissão não funciona com '-R'). Felizmente, novos subdiretórios serão criados com o bit 'setgid' definido automaticamente.
Se precisarmos permitir acesso de gravação ao Apache, a um diretório de uploads, por exemplo, defina as permissões para esse diretório da seguinte forma:
sudo chmod 2770 /home/demo/public_html/domain1.com/public/uploads
As permissões só precisam ser definidas uma vez, pois os novos arquivos receberão automaticamente a propriedade correta.