Depois de mais pesquisas, parece que outra (possivelmente a melhor maneira) de responder isso seria configurar a pasta www assim.
-
sudo usermod -a -G developer user1
(adicione cada usuário ao grupo de desenvolvedores) -
sudo chgrp -R developer /var/www/site.com/
para que os desenvolvedores possam trabalhar lá -
sudo chmod -R 2774 /var/www/site.com/
para que apenas os desenvolvedores possam criar / editar arquivos (outro / mundo pode ler) -
sudo chgrp -R www-data /var/www/site.com/uploads
para que o www-data (apache / nginx) possa criar uploads.
Como git
é executado como qualquer usuário que esteja chamando, então, desde que o usuário esteja no grupo "desenvolvedor", ele deve ser capaz de criar pastas, editar arquivos PHP e gerenciar o repositório git.
Nota: No passo (3): '2' em 2774 significa 'set Group ID' para o diretório. Isso faz com que novos arquivos e sub-diretórios criados dentro dele herdem o ID do grupo do diretório pai (em vez do grupo primário do usuário). Referência: link