Integrando OpenLDAP, Subversion, Webdav e Apache2

por Eder L. Marques em techbits.edermarques.net

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