Definiendo permisos para Subversion

Si necesitamos una gestión de permisos específica para distintos repositorios subversion desplegados sobre el mismo servidor, podemos hacer uso de la librería authz_svn de Apache2

Apoyándonos en esta librería, un fichero de password estandar de Apache (gestionado con htpasswd) y un fichero de definición de privilegios, podremos configurar los permisos de nuestros repositorios SVN del modo tan detallado como necesites.

Activar modulos necesarios

sudo a2enmod authz_svn
sudo a2enmod dav_svn

Creando nuevos usuarios

htpasswd /etc/svn-auth-users testuser

Si el fichero /etc/svn-auth-users aún no existe, deberás añadir el modificador -c para el primer usuario.

htpasswd -c /etc/svn-auth-users testuser

Fichero de definición de permisos

Ejemplo de fichero de control de acceso (/etc/svn-access-control)

# Definición de grupos de usuarios
 [groups]
 testgroup = testuser1, testuser2
 testgroup2 = testuser3, testuser4, testuser5
 testgroup3 = testuser6, testuser7

 # Definición de los permisos para cada repositorio
 # Todos los repositorios 
 [/]
 # Cualquier usuario: permisos de lectura
 * = r
 # Grupo "testgroup": permisos de lectura-escritura
 @testgroup = rw
 # Usuario "testuser4": permisos de lectura escritura
 testuser4 = rw

 # Permisos específicos para el repositorio "testrepo"
 [testrepo:/]
 @testgroup2 = rw
 testuser6 = rw

 # Permisos específicos para el directorio /trunk del 
repositorio "testrepo2"
 [testrepo2:/trunk]
 @testgroup3 = rw
 testuser5 = rw

Añadir AuthzSVNAccessFile a nuestra configuración

[…]/apache2/mods-available/dav_svn.conf

<Location /svn>
 DAV svn
 SVNParentPath /var/store/svn
 AuthType Basic
 AuthName "Subversion repositories"
 AuthUserFile /etc/svn-auth-users
 AuthzSVNAccessFile /etc/svn-access-control
 Require valid-user
 </Location>

Reiniciar Apache

service apache2 restart

Tips:

– Solo los usuarios con privilegios de (al menos) lectura para todos los repositorios podrán acceder al listado completo de los repositorios. En caso contrario, el usuario deberá acceder a la URL específica de su repositorio

– Si usas Tortoise, quizás recibas algún error relacionado con la redirecciones de Apache, añade la siguiente línea en el fichero de configuración de tu servidor Apache

BrowserMatch "TortoiseSVN" redirect-carefully

– Si la ruta configurada en SVNParentPath de tus repositorios no es siempre la misma (estás usando una organización en subdirectorios), puedes crear tantas entradas en […]/apache2/mods-available/dav_svn.conf como necesites variando los parámetros que consideres necesarios. De este modo, podrás tener distintos ficheros de configuración de permisos, distintos ParentPath, etc …

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s