Integrando OpenLDAP, Subversion, Webdav e Apache2

Republicação de dicas-l.com.br, com adaptações...
Integrando OpenLDAP, Subversion, Webdav e Apache2

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:

  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
  
  #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
  
  
Habilite o site com o a2ensite, recarregue o apache2 e pronto, seu apache2 está acessando o repositório svn e autenticando via openldap.

Comentários