Mostrando entradas con la etiqueta svnserve. Mostrar todas las entradas
Mostrando entradas con la etiqueta svnserve. Mostrar todas las entradas

viernes, 1 de marzo de 2013

Crear y agregar un servicio a SystemD en Manjaro (Archlinux) - Subversion

Hora de configurar un servidor de desarrollo en el trabajo, y hora de mover los repositorios SVN a este nuevo servidor, para este caso instalaremos subversion en Manjaro 0.8.4, tan fácil como hacer desde una terminal:

$ sudo pacman -S subversion

Y tendremos instalado subversion!

Configuramos un directorio donde estarán nuestros repositorios:

$ mkdir /home/usuario/SVN

Muy bien, si quisiéramos iniciar el demonio de Subversion desde una terminal haríamos los siguiente:

$ svnserve -d -r /home/usuario/SVN

Con los parámetros -d indicamos que se inicie como demonio, y con -r indicamos el directorio raíz que alojará nuestros repositorios.
Pero en este caso queremos que subversion se inicie al bootear el sistema, para esto crearemos un archivo para iniciar el servicio, en SystemD que es el gestor de servicios de Archlinux y por lo tanto de Manjaro, creamos un archivo en la siguiente ruta:

$ sudo nano /etc/systemd/system/svn.service

Y agregamos las siguientes lineas:
[Unit]
Description=Subversion Service
After=network.target

[Service]
Type=forking
User=tuusuario
ExecStart=/usr/bin/svnserve -d -r /home/tuusuario/SVN

[Install]
WantedBy=multi-user.target

Aquí las lineas mas importantes son "After=network.target" para indicarle que sea iniciado después del servicio de red, "Type=forking" para iniciar el servicio como un demonio y permitir monitorear su estado a systemd, "User=tuusuario" para indicar con que cuenta de usuario será lanzado el servicio.

Guardamos los cambios y rehabilitamos el servicio y lo agregamos al inicio del sistema:

$ sudo systemctl reenable svn.service

Iniciamos el servicio:

$ sudo systemctl start svn.service

Y podemos revisar su estado:

$ systemctl status svn.service

Y si todo salió bien, nos deberá mostrar algo así:
svn.service - SVN Server
 Loaded: loaded (/etc/systemd/system/svn.service; enabled)
 Active: active (running) since vie 2013-03-01 07:32:14 MST; 1h 33min ago
Process: 310 ExecStart=/usr/bin/svnserve -d -r /home/tuusuario/SVN (code=exited, status=0/SUCCESS)
Main PID: 319 (svnserve)
 CGroup: name=systemd:/system/svn.service
 └─319 /usr/bin/svnserve -d -r /home/tuusuario/SVN

mar 01 07:32:10 manjaro systemd[1]: Starting SVN Server...
mar 01 07:32:14 manjaro systemd[1]: Started SVN Server.

Y listo!

Ahora leo que fedora cambió a SystemD, me da gusto ver que están tomando este gestor de servicios.

referencias:
Escribir los archivos .service personalizados (Wiki Arch)

viernes, 26 de octubre de 2012

Build Authz 1.0 - Ayuda visual para construir el archivo "authz"

Este es el primer release de esta pequeña aplicación que nació para facilitar la configuración y creación del archivo "authz" para los repositorios de Subversion. Esta desarrollada en Lazarus 1.0.2.



Para recordar ver el post

SVN - Control de acceso con Authz


Esta aplicación es liberada bajo licencia GPL, es Software Libre y pueden descargar el código fuente desde el siguiente repositorio:


para modificarlo, leerlo y compilarlo a su gusto.

O pueden descargar los binarios precompilados para las diferentes plataformas:
  • Windows
  • Linux/Gtk
  • OsX

La documentación y manual se encuentra en la lista de descarga.

martes, 11 de septiembre de 2012

SVN - Control de acceso con Authz

Actualmente utilizamos en la empresa SVN como sistema de control de versiones para nuestros proyectos, es práctico y nos ha servido bastante bien, hasta ahora hemos utilizado el método del archivo "passwd" para dar acceso a los repositorios de los proyectos, no habíamos necesitado de nada más.

Actualmente ha surgido la necesidad de buscar una manera de crear un repositorio común para toda la organización pero con acceso limitado por carpetas para los diferentes usuarios.
Leyendo un poco acerca de las diferentes formas de control de acceso para SVN encontré que usando  svnserve, y configurando el archivo "authz" se puede configurar el acceso a directorios, en base a usuario o grupos de usuarios.

En este caso lo mejor es crear el árbol de directorios que se usará para que en base a ese árbol configuremos el archivo "authz", aunque siempre se puede modificar si se agregan mas directorios y se quiere mantener el acceso restringido a estos.

NOTA es importante definir bien la estructura del directorio, desde los niveles mas bajos a los mas altos.

Primero creamos un repositorio, lo llamaremos "Proyectos", editamos el archivo svnserve.conf que se crea, buscamos y descomentamos las siguientes lineas:


#    anon-access = read #    auth-access = write .
.
.
#   password-db = passwd

para que queden sin la almoadilla "#"

anon-access = read

auth-access = write
.
.
.
password-db = passwd

Y añadimos los usuarios que vayan a utilizar el repositorio en el archivo "passwd"

para este ejemplo agregaré 4 usuarios:

[users]
admin = adminssecret
devchief = chiefssecret
developer1 = devs1secret
developer2 = devs2secret
developer3 = devs3secret

Después creamos la estructura de directorios:

Voy a poner un ejemplo simple de estructura de directorios:

Directorio Raiz: --Proyectos
                              --Web
                                 --PERL
                                 --PHP
                                 --RUBY








importamos a nuestro repositorio el directorio raiz con los subdirectorios:
ya sea que lo hagan con un cliente gráfico como VCSRabbit o Tortoise
o desde la terminal, que sería así:

$ svn import -m "estructura" --username admin --password adminssecret Proyectos/  svn://tuserver/Proyectos 

Así queda creada la estructura de directorios base en el repositorio.

Ahora si! es hora de configurar el archivo "authz"
Abrimos el archivo authz que se encuentra en el directorio de nuestro repositorio y buscamos la sección [groups] que es donde configuraremos los grupos con los usuarios que definimos en el archivo "passwd"

deberá quedar algo así:


[groups]
Admins = admin, devchief
Developersphp = developer1, developer3
Developersperl = developer2
Developersruby = developer2, developer3

después de esta sección vamos a configurar el acceso a los directorios de la siguiente manera:

primero tenemos que dar acceso a todos los usuario a la raíz del repositorio, pero solo daremos permiso de escritura al grupo de administradores. No se le puede otorgar un permiso de escritura a un usuario/grupo si no tiene acceso de lectura al directorio padre.

[/]
@Admins = rw   #con esto damos acceso de lectura y escritura a el grupo Admins
* = r    #con esto damos acceso a todos acceso de lectura

[/Web] #Ahora configuramos los accesos para el siguiente nivel, que es el directorio "Web"
* = r    #con esto damos acceso a todos acceso de lectura
@Admins = rw   #con esto damos acceso de lectura y escritura a el grupo Admins

[/Web/PHP]  #Ahora configuramos los accesos para el siguiente sub-nivel,  de Web, que es el directorio "PHP"
@Developersphp = rw   #con esto damos acceso de lectura y escritura a el grupo Developersphp, entonces SOLO el usuario developer1, developer3 podrán ver y escribir este directorio
@Admins = rw #con esto damos acceso de lectura y escritura a el grupo Admins
* =   #Con esto se asegura que nadie mas tenga ningún tipo de acceso al directorio

[/Web/PERL] #Ahora configuramos los accesos para el siguiente sub-nivel,  de Web, que es el directorio "PERL"
@Developersperl = rw #con esto damos acceso de lectura y escritura a el grupo Developersperl, entonces SOLO el usuario developer2 podrá ver y escribir este directorio
@Admins = rw
* =


[/Web/RUBY] #Ahora configuramos los accesos para el siguiente sub-nivel,  de Web, que es el directorio "RUBY"
@Developersruby = rw #con esto damos acceso de lectura y escritura a el grupo Developersruby, entonces SOLO los usuarios developer2 y developer3 podrán ver y escribir este directorio
@Admins = rw
* =


 #Nota si se desea puede darse acceso a usuarios por separado de a siguiente forma:
#[/Web/PERL] 
#developer2 = rw
#devchief  = r
#* =

Guardamos y cerramos el archivo.
Ahora hay que descomentar una linea más en el archivo "svnserve.conf"
Buscamos la siguiente linea:

# authz-db = authz

lo descomentamos y lo dejamos así:


authz-db = authz


Guardamos y cerramos el archivo, y reiniciamos el demonio o servicio de svnserve.

Ahora cuando el usuario "admin" haga un checkout del repositorio podrá ver y escribir en todos los directorios. Y cuando el usuario developer1 solo podrá ver y escribir en el directorio "PHP" y así para cada uno de los diferentes usuarios que configuramos en el archivo authz.