Na verdade, essa foi a abordagem errada. Depois de pesquisas adicionais, descobri que, no meu caso, eu tenho que usar os recursos de buildin do git do usuário para manipular os direitos do sistema de arquivos no repositório.
Basicamente é feito com a opção shared
de git init
, que pode ter (entre outros) os seguintes valores:
-
group
: inicializa o repositório para que os arquivos e diretórios tenham acesso de gravação de usuário e grupo, e todos os outros tenham acesso de leitura
-
0660
: mesmo, mas sem acesso de leitura para os outros.
Os diretórios e arquivos recém-criados têm automaticamente as permissões corretas. Você também pode usar git init
em um repositório existente para reconfigurá-lo sem perder seu conteúdo.
Então, no final, o que eu tive que fazer:
- Crie um grupo
mygitrepo
- Adicionar usuários a ele
- chmod -R o repositório git para
root:mygitrepo
E agora todos os usuários do grupo podem puxar / empurrar, e ninguém mais pode, e isso sem mexer nos direitos do sistema de arquivos.
git init --bare --shared=0660
link para obter mais informações.