jueves, 15 de marzo de 2007

Subversion + UBUNTU - Parte 3

En la ultima parte nos encontramos con el problema de que no teníamos acceso al repositorio usando el protocolo svn. Para solventar esto debemos modificar la configuración de repositorio editando el archivo svnserve.conf ubicado en el directorio conf del repositorio.

$ cd ~/svn_repos/prueba/conf
$ vi svnserve.conf

Este archivo permite definir los accesos al repositorio. Fijense que esto se hace por repositorio y no de forma global. Este archivo contiene una sección general donde se definen las siguientes propiedades

[general]
#
# Acceso anonimo (read|write|none)
anon-access = read
#
# Acceso autorizado (read|write|none)
auth-access = write
#
# Archivo de claves de usuarios. Por defecto se usa passwd
# en el mismo directorio de configuracion pero se puede usar un
# archivo maestro para todos los repos
password-db = passwd
#
# Archivo de definicion de autorizaciones. Por defecto es authz
# en el mismo directorio de configuracion pero se puede usar un
# archivo maestro para todos los repos
authz-db = authz
#
#
realm = Autenticacion a repo prueba

Los archivos de passwords y de autorizaciones son similares al de configuración.

El de password contiene una entrada por cada usuario en formato texto. No muy seguro por cierto.

$ cat passwd
# Users
[users]
user1=pass1
user2=pass2
user3=pass3

El de autorización permite agrupar usuarios y asignarles accesos de lectura (r), escritura (rw) o ninguno (blanco). En el siguiente ejemplo vemos que solo el usuario user1 puede modificar el repositorio en su totalidad, y todos los usuarios del grupo 1 (user1, user2) pueden modificar lo que esta bajo /security en el repositorio. El resto de los usuarios o no tienen acceso o solo tienen acceso de lectura.

$ cat authz

[groups]
group1 = user1, user2
group2 = user3

[/]
user1 = rw
group2 = r

[/security]
group1 = rw
group2 =

Ahora ya estamos listos para subir algo al repositorio.

$ svn import . svn://localhost/prueba --message "Cambio"
Authentication realm: Autenticacion a repo prueba
Password for 'user1':
Adding prueba
Adding prueba/delete_svn_user.sh
Adding prueba/create_svn_user.sh
Adding prueba/create_svn_repo.sh
Committed revision 4.

En una siguiente parte voy a explicar como configurar subversion con apache para poder usar los protocolos http/https y para poder usar un tipo de autenticacion mas segura (evitar passwords en texto).


2 comentarios:

jfibarra dijo...

Hola:
Tengo un problema. Te cuento. He montado el servidor subversion en un ubuntu y me gustaría poder acceder por medio de Tortoise. He seguido tu tutorial para montarlo todo y desde otro ordenador que tengo con windows y tortoise puedo ver el repositorio. Además puedo arrastrar carpetas directamente al tortoise y me las acepta, al igual que crear carpetas en el repositorio.
Mi problemas viene cuando hago un checkout sobre por ejemplo esa carpeta que he subido, tras un tiempo me sale el siguiente mensaje en el tortoise: No se está autorizado a abrir la raiz de la operación de edición.
La verdad es que no se a qué se debe ese mensaje. Pego aquí los ficheros de configuración del repositorio
authz

[groups]
Developers = jfrank,ripham

[/]
jfrank = rw
ripham = rw
# * =

[/]
@Developers = rw
# * = r


passwd

[users]
jfrank = pass
ripham = pass


svnserve.conf

[general]
### These options control access to the repository for unauthenticated
### and authenticated users. Valid values are "write", "read",
### and "none". The sample settings below are the defaults.
# anon-access = read
auth-access = write
### The password-db option controls the location of the password
### database file. Unless you specify a path starting with a /,
### the file's location is relative to the conf directory.
### Uncomment the line below to use the default password file.
password-db = passwd
### The authz-db option controls the location of the authorization
### rules for path-based access control. Unless you specify a path
### starting with a /, the file's location is relative to the conf
### directory. If you don't specify an authz-db, no path-based access
### control is done.
### Uncomment the line below to use the default authorization file.
authz-db = authz
### This option specifies the authentication realm of the repository.
### If two repositories have the same authentication realm, they should
### have the same password database, and vice versa. The default realm
### is repository's uuid.
realm = Repository


No se si podreis ayudarme.

Unknown dijo...

EL problema parece estar en authz. Veo que defines 2 veces la raiz del repo [/], intenta definirlo una sola vez. Otra cosa que veo es que en la segunda definicion haces referencia al grupo con @ ( @Developers ). Esa sintaxis es usada cuando se trabaja con el esquema de seguridad de mod_dav_svn. Quitale el @ y trata de usar un solo grupo a ver si te funciona.