Mostrando entradas con la etiqueta Administración. Mostrar todas las entradas
Mostrando entradas con la etiqueta Administración. Mostrar todas las entradas

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.

miércoles, 7 de marzo de 2012

Administrando tu Servidor con Webmin - Ubuntu

Hoy estaba probando una interesante herramienta para administrar un servidor, después de haber instalado un servidor web LAMP, una buena opción es instalar "Webmin".

Webmin es una interfaz web para administrar sistemas UNIX, usando cualquier navegador moderno, puedes administrar cuentas de usuario, un servidor APACHE, un servidor de base de datos MySql, opciones del sistema, como el arranque y parada de servicios, ver y administrar que servicios se ejecutan al inicio y muchas cosas más, además de todo puedes agregarle funciones, instalando módulos de forma sencilla.

Para instalarlo solo necesitamos descargar el paquete correspondiente a nuestro sistema, en mi caso descargo el paquete DEB, y desde la terminal:

sudo dpkg -i webmin_1.580_all.deb

en mi caso marcó errores por no cumplir ciertas dependencias, si este es su caso, hagan lo siguiente:

sudo apt-get install -f

esto instalará las dependencias faltantes, y terminará de instalar Webmin

Una vez instalado podemos acceder a el a través de nuestro navegador, escribiendo:

https://localhost.com:100000

Si muestra una advertencia de seguridad, es por que no tenemos el certificado, pero no importa, es una conexión local.


Se mostrará la pantalla de login donde, accederemos con nuestro usuario y cuenta de "super usuario".

Una vez autentificados, nos mostrará la pantalla la información del sistema, y del lado izquierdo el menú con las diferentes secciones para administrar.

Las opciones que permite configurar son muchas para describirlas en un solo post, pero la mayoría son muy fáciles de comprender y manejar, una vez instalado, lo mejor es probarlo.