Subversion + LDAP

Fonte: TecPorto
Revisão em 15h09min de 6 de junho de 2018 por João (discussão | contribs)
Saltar para a navegação Saltar para a pesquisa

A integração de autenticação LDAP para acesso a repositórios Subversion está dependente do uso de SASL.

Este manual destina-se a instalações não baseadas no protocolo svn:// puro (sem ser por SSH ou por WebDAV) e presume a existência de um serviço LDAP em execução e correctamente configurado.

Como os caminhos podem variar e há inconsistências mesmo na mesma distribuição, há recomendações de certas ligações simbólicas que convém criar-se. De notar que, pelo menos em distribuições baseadas em Ubuntu, o svnserve não tem configurações base para uso com o systemd ou qualquer outro serviço de init alternativo. Assim sendo, também se apresenta aqui a listagem dos ficheiros necessários para que o svnserve possa ser adicionado ao arranque.

Excepto se indicado em contrário, estes comandos devem ser executados como root ou com o sudo.

/etc/systemd/system/svnserve.service:

[Unit]
Description=Subversion protocol daemon
After=syslog.target network.target

[Service]
Type=forking
RuntimeDirectory=svnserve
PIDFile=/run/svnserve/svnserve.pid
EnvironmentFile=/safe/etc/default/svnserve
ExecStart=/usr/bin/svnserve $DAEMON_ARGS
User=svn
Group=svn
KillMode=control-group
Restart=on-failure

[Install]
WantedBy=multi-user.target
Alias=svnserve.service


Na configuração padrão do serviço svnserve, deverá preencher a variável SVNROOT com o valor correcto. Poderá também alterar o caminho que se segue a "--log-file" para outro destino que lhe seja mais conveniente.

/etc/default/svnserve.conf:

SVNROOT="<caminho base dos seus repositórios>"
DAEMON_ARGS="--daemon --pid-file /run/svnserve/svnserve.pid --root $SVNROOT --log-file /var/log/svnserve/svnserve.log"


/usr/lib/sasl2/svn.conf:

pwcheck_method: saslauthd
mech_list: LDAP


Recomendamos que crie um link simbólico da pasta /usr/lib/sasl2 em /etc:

ln -s /usr/lib/sasl2 /etc


É preferível, também, ter um utilizador e um grupo "svn" no sistema, devendo substituir, nos comandos abaixo, os dados conforme necessário:

groupadd -r svn
useradd -r -d <caminho base dos seus repositórios> -g svn svn
mkdir <caminho base dos seus repositórios>
chown -R svn:svn <caminho base dos seus repositórios>
chmod 700 <caminho base dos seus repositórios>


Em algumas distribuições, há problemas de permissões que vão impedir o svnserve de correctamente contactar o serviço sasl, pelo que essas permissões devem ser corrigidas:

chmod 711 /var/run/saslauthd


De seguida, cria-se ou edita-se o ficheiro que permite ao serviço saslauthd consultar a base de dados LDAP. O modelo abaixo pode ser usado, devendo ser adaptado conforme necessário:

/etc/saslauthd.conf:

ldap_servers: ldap://localhost
ldap_port: 389
ldap_version: 3
ldap_password_attr: userPassword
ldap_auth_method: bind
ldap_filter: (uid=%u)
ldap_search_base: ou=Users,dc=dominio,dc=pt
ldap_bind_pw: <password do utilizador LDAP>
ldap_bind_dn: cn=admin,dc=dominio,dc=pt


Agora só falta editar o ficheiro de configuração de cada repositório. Dentro de um repositório subversion já criado, há um ficheiro chamado svnserve.conf na pasta conf do respositório. Eis um modelo base

<repositório>/conf/svnserve.conf:

[general]

anon-access = none
auth-access = write

[sasl]
use-sasl = true
#min-encryption = 128
#max-encryption = 256

TODO: adicionar suporte de encriptação.