Erro de permissão com o git no linux com o repositório compartilhado nu

1

Eu tenho um repositório central vazio que tem essa opção ativada:

git config core.sharedRepository true

Por algum motivo, os outros usuários nesta máquina do CentOS que puxa / empurra a partir do repositório central sempre encontram um erro de permissão ao empurrar para um ramo que alguém já empurrou.

Eu olhei para o diretório de objetos e percebi que quem quer que tenha pressionado primeiro obtém seu nome de usuário definido como o proprietário E o grupo.

Eu o configurei para que todos os usuários pertençam a um grupo de "desenvolvedores" e, em seguida, chgrp -R o repositório básico para estar sob a propriedade do grupo de "desenvolvedores", mas isso ainda não corrigiu o problema.

Alguma outra sugestão?

MAIS INFORMAÇÃO:

Isso é o que acontece quando eu pressiono:

[dave@localhost wd]$ git push
Counting objects: 5, done.
Compressing objects: 100% (2/2), done.
error: insufficient permission for adding an object to repository database ./objects

fatal: failed to write object
error: pack-objects died of signal 13
error: failed to push some refs to '/gitrepos/repo.git'

Como você pode ver, as permissões dentro da pasta de objetos no repositório central vazio têm dirs com permissões diferentes que pertencem a outro usuário, jane (a lista foi abreviada para legibilidade):

[dave@localhost objects]$ ls -la
total 248
drwxrwxr-x 62 root   developers 4096 Dec 13 15:37 .
drwxrwxr-x  9 root   developers 4096 Dec 13 15:34 ..
drwxrwxr-x  2 root   developers 4096 Dec 12 16:05 01
drwxrwxr-x  2 root   developers 4096 Dec 12 16:05 2f
drwxrwsr-x  2 jane   jane       4096 Dec 13 15:37 30
drwxrwxr-x  2 root   developers 4096 Dec 12 16:19 33
drwxrwxr-x  2 root   developers 4096 Dec 12 16:05 39
drwxrwxr-x  2 root   developers 4096 Dec 12 16:19 6c
drwxrwxr-x  2 root   developers 4096 Dec 12 16:05 89
drwxrwsr-x  2 jane   jane       4096 Dec 13 15:37 8b
drwxrwxr-x  2 root   developers 4096 Dec 13 05:41 8e
drwxrwxr-x  2 root   developers 4096 Dec 12 16:19 90
drwxrwxr-x  2 root   developers 4096 Dec 12 14:32 info
drwxrwxr-x  2 root   developers 4096 Dec 12 14:32 pack
    
por lamp_scaler 13.12.2011 / 16:45

2 respostas

2

Você precisa ter certeza de que os usuários estão usando o 002 como seu umask para que os novos arquivos criados sejam g + w, ou você precisará usar as extensões de acls para definir permissões padrão para novos arquivos criados neste repositório. Umask é algo que você define no ambiente, talvez em um .bashrc ou / etc / profile ou algum arquivo de inicialização, mas afeta arquivos criados em qualquer lugar. Você não pode localizar um umask em um diretório específico. Se você precisar desse comportamento em um diretório específico, talvez precise usar ACLs de sistema de arquivos estendidos, o que requer remontar o sistema de arquivos com a opção acl e usar setfacl para alterar os acls padrão. Em ambos os casos, você deve criar todos os grupos de diretórios pertencentes a 'developers' e chmod g + s, o que fará com que novos diretórios / arquivos herdem essa propriedade de grupo

    
por 13.12.2011 / 17:09
1

Durante git init , a opção --shared=group é útil para casos como esse (faz o material g + sx)

    
por 03.02.2017 / 23:56