Configure o servidor GIT sobre HTTP usando LDAP

1

Sou bastante novo no GIT e, no geral, não sou muito experiente em configuração de infraestrutura. No entanto, o que estou tentando fazer parece ser muito básico e eu não sou capaz de fazê-lo.

Estou tentando criar um servidor GIT exposto por meio de HTTPS no Apache. Eu tenho a seguinte configuração do meu repositório GIT (no sistema CentOS):

SetEnv GIT_PROJECT_ROOT /opt/repo-git/my-custom-repo.git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/
SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER

<Directory "/opt/repo-git/my-custom-repo.git">
  Options -Indexes FollowSymLinks
  AllowOverride AuthConfig FileInfo
  Order allow,deny
  Allow from all
</Directory>

<Directory "/usr/libexec/git-core">
  AllowOverride None
  Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
  Order allow,deny
  Allow from all
</Directory>

<Location /git>
  Order deny,allow
  Allow from all
  Dav on
  AuthType Basic
  AuthzLDAPAuthoritative on
  AuthName "Trac"
  Require valid-user
  AuthBasicProvider ldap
  AuthLDAPURL "ldap://my-ldap-configuration-that-works"
  AuthLDAPBindDN "my-ldap-dn"
  AuthLDAPBindPassword "my-password"
</Location>

Com essa configuração, posso fazer o checkout do código usando git clone https://<my-ip>/git . No entanto eu não sou capaz de empurrar recebo o seguinte erro no TortoiseGit:

Counting objects: 3, done.
Writing objects: 100% (3/3), 207 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: error: insufficient permission for adding an object to repository database ./objects
remote: fatal: failed to write object
error: unpack failed: unpack-objects abnormal exit
To https://<my-ip>/git
! [remote rejected] master -> master (unpacker error)
error: failed to push some refs to 'https://<my-ip>/git'

Esse erro é relatado em aqui , aqui , aqui e muitos mais lugares

Nenhuma dessas fontes é útil para mim - elas praticamente propõem a mesma coisa. O que não consigo obter é o grupo e o proprietário que devo definir para o repositório. No momento, estou definindo apache , que é o usuário que executa o servidor Apache. No entanto, tenho a suspeita de que a mágica do GIT na configuração do Apache usa algum outro usuário para minha confirmação (por exemplo, meu usuário LDAP). Isso não faz sentido, no entanto, devo alterar as permissões de arquivo em todos os servidores sempre que a alteração no LDAP aparecer?

Existe algum usuário git padrão especial para ser usado em tal configuração?

Eu confirmo que o usuário e grupo apache tem controle total no meu repositório GIT.

    
por Boris Strandjev 25.02.2014 / 09:58

1 resposta

0

Consegui que a configuração do Git funcionasse para mim.

Minha configuração de destino era configurar o GIT para repositório, GERRIT sobre ele para revisões de código e integrar tudo isso com meu LDAP da empresa.

Você pode ver que eu demorei quase 3 semanas para fazer tudo funcionar, mas agora finalmente consegui tudo.

O GERRIT foi o marco mais importante - ele fornece a funcionalidade que eu precisava - ele fornece uma interface http para o repositório e, em seguida, usa uma conta do sistema para executar ações reais no repositório.

O GERRIT também se integra perfeitamente ao LDAP, permitindo que você configure grupos LDAP para permissões de acesso a projetos e use usuários LDAP para interações de repositórios.

A única coisa pequena é que é necessário usar a senha gerada por GERRIT com seu usuário LDAP para acessar os repositórios. No entanto, isso não é uma grande desvantagem, porque você faz logon na interface do usuário do GERRIT usando suas credenciais LDAP completas e, em seguida, é capaz de gerar essa senha para si mesmo, o que significa que você tem controle total sobre ela.

    
por 15.03.2014 / 08:26