você está aqui: Home  → Arquivo de Mensagens

Integrando OpenLDAP, Subversion, Webdav e Apache2

Colaboração: Eder L. Marques

Data de Publicação: 27 de Julho de 2008

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.

Consegui fazer a integração. Vejamos todos os passos.

Ambiente

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

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 href="http://httpd.apache.org/docs/2.2/mod/mod_authnz_ldap.html]. 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.

Eder L. Marques é Analista de Segurança Sênior da Secretaria de Finanças, Prefeitura de Fortaleza. Além de outros hobbies, mantém os blogues http://blog.edermarques.net/ e http://administrando.net/


 

 

Veja a relação completa dos artigos de Eder L. Marques

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script