Skip to content


Integrando OpenLDAP, Subversion, Webdav e Apache2

Essa semana recebi a missão de configurar um novo repositório subversion, então aproveitei para dessa vez utilizar o apache2 com webdav, autenticando via OpenLDAP.

Visita ao site do apache, leitura de documentação, busca no google…

“Ok, já posso por a mão na massa.”

Ledo engano. O apache2 não autenticava o usuário nem a pau. O log do openldap mostava a consulta sendo feita, o repositório estava com as permissões corretas para www-data.

“Tá bom, vou ler a documentação novamente.”

Após algumas horas de pesquisas na internet, consegui fazer a integração. Vejamos todos os passos.

Ambiente

  • Servidor Subversion e apache2;
  • Servidor OpenLDAP;
  • Svn com vários repositórios, permissões de arquivos via OpenLDAP;
  • Controle via grupos.

Configuração do repositório

O usuário www-data precisa ter acesso aos arquivos do repositório. Então supondo que sua base seja /var/svn/repo01, precisamos garantir as permissões com o comando:

cd /var/snv/repo01
chown -R www-data:grupo1
find repo01/ -type f -print -exec chmod 660 {} \;
find repo01/ -type d -print -exec chmod 2770 {} \;

Assim, apenas o www-data e os usuários do grupo terão acesso aos arquivos. Além disso, estamos setando o bit SGID nos diretórios, para que os arquivos criados também sejam do grupo.

Configuração do apache2

No apache 2.2.x, o módulo utilizado para autenticação via ldap é o mod_authnz_ldap. Iremos precisar do módulo dav_svn (pacote libapache2-svn). Habilite-os com o a2enmod.

Crie o arquivo do site em /var/apache2/sites-available/repo01. O conteúdo deve ser mais ou menos assim:

<VirtualHost *:80>
ServerAdmin administrador@seudominio.com.br
ServerName svn.seudominio.com.br
DocumentRoot /var/www/
ErrorLog /var/log/apache2/repo01/error.log
LogLevel notice
CustomLog /var/log/apache2/repo01/access.log combined
<Location /svn/repo01>
#habilita o repositorio
DAV svn
# caminho para o repositorio
SVNPath /var/svn/repo01
# tipo de autenticacao
AuthType Basic
# identificação do repositorio
AuthName "Repositorio SVN"
# provedor de autenticacao
AuthBasicProvider ldap
# Está on porque se a autenticação via ldap falhar, não deve pesquisar outras bases
AuthzLDAPAuthoritative on
# URL da base LDAP. O ?uid especifica atributo pesquisar (uid)
AuthLDAPURL "ldap://ldap.seudominio.com.br/ou=Usuarios,dc=seudominio,dc=com,dc=br?uid"
# Informa que atributo usar para verificar se o usuario faz parte do grupo ou não
AuthLDAPGroupAttribute memberUid
# especifica que a busca deve ser feita por usuario, e nao pelo DN
AuthLDAPGroupAttributeIsDN off
#usuario que irá fazer a consulta no ldap
AuthLDAPBindDN "cn=subversion,dc=seudominio,dc=com,dc=br"
#senha do usuario acima
AuthLDAPBindPassword "senha"
# grupos que terão acesso ao repositorio
Require ldap-group cn=repo01,ou=Grupos,dc=seudominio,dc=com,dc=br
</Location>
</VirtualHost>

Habilite o site com o a2ensite, recarregue o apache2 e pronto, seu apache2 está acessando o repositório svn e autenticando via openldap. :D

Agradecimentos ao faw, que me ajudou a debugar o problema e a encontrar a solução.

Posted in Admin. de Sistemas, Aplicativos, Comunidade, Software Livre.

Tagged with , , , .


5 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. Amilton says

    Eder, publiquei no meu blog esse seu artigo. tem algum problema? É que achei bem útil sua dica que foi enviada pela Lista Dicas-L.
    Também incuí seu site em meu blogroll.
    Abs,

  2. Frolic says

    Nenhum problema Amilton. A única ressalva seria os créditos para o autor original, e você fez isso. :)

    Abraços.

  3. Andreyev says

    Ops, cuidamos de alguns repos e recomendamos que desligue o SVNPathAuthz para melhorar a performance das requisições, ou, ainda melhor, use o svnserve em vez do apache. Se quiser conversar mais sobre isso me procure.

    []s e boa sorte,

    Andreyev

  4. Frolic says

    Oi Andreyev,

    De fato, se o repositório é uniforme (todos os usuários tem acesso a todos os arquivos do repositório), realmente deixar o SVNPathAuthz desabilitado (que vem habilitado por padrão) é a melhor opção.

    Com relação a utilizar o svnserve, a opção pelo apache é devido a integração com o openldap e a utilização do trac.

    O acesso cotidiano aos arquivos é via ssh+svn (que também usa a base openldap para autenticar).

    []’s

Continuing the Discussion

  1. Instalação do Subversion no Ubuntu 7.04 - Feisty Fawn « Beyond Click linked to this post on 26/07/2008

    [...] Colocar o controle de autorização Usar um servidor LDAP para controlar as permissões de acesso aos projetos do Subversion; [...]



Some HTML is OK

or, reply to this post via trackback.