Tengo múltiples repositorios de subversión que se sirven a través de Apache 2.2 y WebDAV. Todos están ubicados en un lugar central, y utilicé este artículo de debian-administration.org como base (aunque abandoné el uso de la autenticación de la base de datos para un archivo htpasswd simple).
Desde entonces, también comencé a usar WebSVN . Mi problema es que no todos los usuarios del sistema deberían poder acceder a los diferentes repositorios, y la configuración predeterminada de WebSVN es permitir que cualquiera que pueda autenticarse.
De acuerdo con la documentación de WebSVN, la mejor manera de evitar esto es usar el sistema de acceso de ruta de Subversion, así que busqué crear esto, usando la directiva AuthzSVNAccessFile.
Sin embargo, cuando hago esto, sigo recibiendo mensajes "403 Prohibidos".
Mis archivos tienen el siguiente aspecto:
Tengo la configuración de política predeterminada en un archivo:
<Location /svn/>
DAV svn
SVNParentPath /var/lib/svn/repository
Order deny,allow
Deny from all
</Location>
Cada repositorio obtiene un archivo de política como el siguiente:
<Location /svn/sysadmin/>
Include /var/lib/svn/conf/default_auth.conf
AuthName "Repository for sysadmin"
require user joebloggs jimsmith mickmurphy
</Location>
El archivo default_auth.conf contiene esto:
SVNParentPath /var/lib/svn/repository
AuthType basic
AuthUserFile /var/lib/svn/conf/.dav_svn.passwd
AuthzSVNAccessFile /var/lib/svn/conf/svnaccess.conf
No estoy completamente seguro de por qué necesito el segundo SVNParentPath en default_auth.conf, pero lo agregué hoy porque recibía mensajes de error como resultado de agregar la directiva AuthzSVNAccessFile.
Con un archivo de acceso totalmente permisivo
[/]
joebloggs = rw
el sistema funcionó bien (y esencialmente no cambió), pero tan pronto como empiezo a tratar de agregar algún tipo de restricciones, como
[sysadmin:/]
joebloggs = rw
en cambio, vuelvo a aparecer los errores 'Permiso denegado'. Las entradas del archivo de registro son:
[Thu May 28 10:40:17 2009] [error] [client 89.100.219.180] Access denied: 'joebloggs' GET websvn:/
[Thu May 28 10:40:20 2009] [error] [client 89.100.219.180] Access denied: 'joebloggs' GET svn:/sysadmin
¿Qué necesito hacer para que esto funcione? ¿He configurado Apache incorrectamente o no entiendo bien el archivo svnaccess.conf?
Si voy por este camino equivocado, no tengo un apego particular a mi enfoque general, así que siéntase libre de ofrecer alternativas también.
ACTUALIZACIÓN (20090528-1600):
Intenté implementar esta respuesta , pero todavía no puedo hacer que funcione correctamente.
Sé que la mayoría de la configuración es correcta, ya que he agregado
[/]
joebloggs = rw
al principio y 'joebloggs' tiene el acceso correcto.
Sin embargo, cuando trato de ir al repositorio específico, hago algo como
[/]
joebloggs = rw
[sysadmin:/]
mickmurphy = rw
luego recibí un error de permiso denegado para mickmurphy (joebloggs todavía funciona), con un error similar al que ya tenía anteriormente
[Thu May 28 10:40:20 2009] [error] [client 89.100.219.180] Access denied: 'mickmurphy' GET svn:/sysadmin
Además, olvidé explicar previamente que todos mis repositorios están debajo
/var/lib/svn/repository
ACTUALIZACIÓN (20090529-1245):
Todavía no hubo suerte para que esto funcione, pero todos los signos parecen estar apuntando al problema de que el control de acceso a la ruta en subversion no funciona correctamente. Mi suposición es que no he configurado apache o svn para reconocer correctamente mi estructura de repositorio.
Esto se debe a que la entrada '[/]' parece funcionar perfectamente.
También se me ocurre que esta pregunta puede ser mejor en StackOverflow.
ACTUALIZACIÓN (20090603-1740):
En respuesta a uno de los comentarios a esta pregunta, mi configuración de WebDAV para la subversión en sí recibe la ubicación / svn / repos pero websvn está configurado en / websvn.