sábado, 22 de enero de 2011

Configurar Subversión en Windows con autentificación y permisos de usuarios y grupos

Lo primero instalar subversión, una buena opción es CollabNet Subversion Edge de licencia GPL o también pueden instalar TortoiseSVN que viene integrado al explorador de Windows para hacer click derecho y crear repositorios en este post explicare la instalcion de CollabNet

Primero descargar la ultima versión de collabnet para Windows desde la siguiente URL http://www.open.collab.net/downloads/subversion/ necesitaran registrarse pero el registro es rápido, después de todo no hay mejor opción que bajarse software del proveedor oficial.

En la instalación la mayoría de cosas son siguiente y siguiente, destacando la carpeta raíz para los repositorio por defecto "C:/svn_repository" aquí se crearan los repositorios esta carpeta es modificable después en el archivo de configuracion de apache "httpd.conf"

Una vez instalado y corriendo
1)Crear un repositorio con el siguiente comando
svnadmin create C:/svn_ repository/repositorio1
la url q apache asigna a este repositorio es http:/localhost/svn/repositorio
fíjense q es localhost/ sin el puerto asumiendo que pusieron el puerto 80.
Porque svn si la carpeta se llama svn_repository la explicación esta en el archivo "httpd.conf" ubicado en
C:\Archivos de programa\CollabNet\Subversion Server\httpd\conf
Al final del archivo
Tendrá este contenido por defecto:
<Location /svn>
DAV svn
SVNParentPath C:\svn_repository

</Location>
Como se ve toma como carpeta base C:\svn_repository
Y le añade el prefijo svn es decir C:\svn_repository es equivalente a http://localhost/svn por consiguiente http://localhost/svn/repositorio1 es equivalente a C:\svn_repository\repositorio1

2)Configurar usuarios ( autentificación )
Modificar  el archivo httpd.conf ubicado en C:\Archivos de programa\CollabNet\Subversion Server\httpd\conf
Reemplace lo siguiente :

<Location /svn>
DAV svn
SVNParentPath C:\svn_repository
</Location>
Por:
<Location /svn>
DAV svn
SVNParentPath C:\svn_repository

# Autenticación básica.
AuthType Basic
AuthName "Repositorio Subversion"
AuthUserFile D:/usuarios.txt

#-----------------------------------------------------------
#Descomentar lo siguiente si quieren que los demas vean su proyecto, 
#lo bajen pero para modificarlo necesiten identificarse

    #<LimitExcept GET PROPFIND OPTIONS REPORT>
    #    Require valid-user
    #</LimitExcept>
#-----------------------------------------------------------

#Lo siguiente bloquea el acceso a lectura y escritura de
#usuarios no identificados 
  Require valid-user
#-----------------------------------------------------------

</Location>
Donde el archive D:/usuarios.txt contiene los usuarios y password encriptados con el es un algoritmo de reducción criptográfico MD5
Una alternativa a usar SVNParentPath es usar SVNPath con la diferencia que:
SVNPath : es para un solo repositorio
SVNParentPath : es para varios repositorios 
3) Crear un usuario 
Para crear un usuario hay que entrar a consola ( inicio /ejecutar /escribir cmd (enter)
Ubicarse en la carpeta bien de Collabnet :
cd C:\Archivos de programa\CollabNet\Subversion Server\httpd\bin
Y crear un usuario con el siguiente comando:
htpasswd -bc d:\usuarios.txt <usuario> <contraseña>  
donde en el -bc: la b es para crear el archivo y la c es para crear el usuario ( si no se especifica la contraseña se le pedirá que la ingrese dos veces y se visualizara con ***)
para ingrear el segundo usuario seria:
htpasswd -m d:\usuarios.txt <usuario>  
-m se usa para ingresar el segundo usuario ( el 3ro,4to ... es decir mas de un usuario ) o modificar la contraseña de uno ya existente, luego de escribir esta sentencia y presionar enter se le pedirá que ingrese la contraseña
Un ejemplo
C:\Archivos de programa\CollabNet\Subversion Server\httpd\bin>htpasswd -bc d:\usuarios.txt erik pass
Automatically using MD5 format.
Adding password for user erik

Con esto ya podrán acceder desde eclipse al repositorio con la siguiente url http://127.0.0.1/svn/repositorio1 y subir un proyecto o hacerlo manualmente desde consola.


4) Configurando grupos de usuarios y permisos por usuario y por grupo  
Lo siguiente sera agregar un archivo para configurar grupos y premisos, por ejemplo edite el archivo de repositorio1 aunque puede estar donde se desee y tener cualquier otro nombre y extensión

C:/svn_ repository/repositorio1/authz.conf

Aqui el contenido del archivo

[groups]
administradores= erik
otro= prueba

[/]
@administradores = rw
prueba= r
Esta configuración  nos dice que:

  • El grupo "administradores" tendrá los permisos r= lectura (read) y w = escritura (write)
  • El usuario "prueba" tendrá el permiso de solo lectura.

Todo esto sobre la raiz "[ / ]" es decir todo el subarbol de carpetas que esten debajo de la raiz /, en nuestro caso cualquier carpeta que este debajo de repositorio1.
También se puede añadir configuraciones para una carpeta especifica, ejemplo:

[/trunk]
@otro= rw
[/branch]
prueba = rw

Observación: cualquier otro usuario no tendrá ningún permiso
Finalmente falta enlazar este archivo de permisos con el repositorio, para esto editamos el archivo "httpd.conf" ubicado en
C:\Archivos de programa\CollabNet\Subversion Server\httpd\conf
Agregamos debajo de AuthUserFile :
AuthzSVNAccessFile C:/svn_repository/repositorio1/conf/authz.conf
Quedaria asi:
<Location /svn>
DAV svn
SVNParentPath C:\svn_repository

# Autenticación básica.
AuthType Basic
AuthName "Repositorio Subversion"
AuthUserFile D:/usuarios.txt
AuthzSVNAccessFile C:/svn_repository/repositorio1/conf/authz.conf

#-----------------------------------------------------------
#Descomentar lo siguiente si quieren que los demas vean su proyecto, 
#lo bajen pero para modificarlo necesiten identificarse
    #<LimitExcept GET PROPFIND OPTIONS REPORT>
    #    Require valid-user
    #</LimitExcept>
#-----------------------------------------------------------
#Lo siguiente bloquea el acceso a lectura y escritura de
#usuarios no identificados 
  Require valid-user
#-----------------------------------------------------------
</Location>

No hay comentarios:

Publicar un comentario