Existem duas perguntas separadas, uma sobre a configuração do Apache e outra sobre a configuração do git.
Em relação ao Apache: não há necessidade de dar acesso a /var/www
a todos, o Apache suporta os diretórios da web do usuário , portanto, depois de ativar os diretórios por usuário com uma única linha na configuração, os usuários devem poder adicionar arquivos ao diretório public_html
em seu diretório inicial e tê-lo exibido em http://example.com/~username/
Com relação ao Git: o truque aqui é incluir todos os usuários em um grupo e, então, garantir que o repositório no servidor seja criado com --shared
flag e seja de propriedade desse grupo. Estou usando um script para isso:
#!/bin/bash
REPONAME=
BASE=/var/www/git
echo "Creating new repository: "
mkdir $BASE/$REPONAME
cd $BASE/$REPONAME
git --bare init --shared
git update-server-info
chown -R apache:apache $BASE/$REPONAME
echo "Done."
echo "SSH clone URL is ssh://example.com/www/git/$REPONAME"
Esse repositório precisa ser criado por um usuário superadministrador, mas depois disso todos poderão fazer push e pull dele. Se um usuário precisar de um repositório privado, ele poderá criar apenas um em seu diretório inicial.