Crear un repositorio
Para crear un repositorio debes tener algunas herramientas instaladas, para instalarlas debes ejecutar como root lo siguiente:
# aptitude install subversion
luego, para crear el repositorio debes ejecutar lo siguiente:
# mkdir /home/svn # cd /home/svn # svnadmin create repoDeEjemplo # chown -R www-data:www-data repoDeEjemplo
el primer comando crea la carpeta /home/svn, el segundo comando cambia de directorio al directorio recién creado, en ese directorio se supone que uno debería colocar los repositorios svn, perfectamente este directorio podría ser cualquier otro (por comodidad yo elijo este y no otro ya que generalmente utilizo una partición distinta para /home, pero en tu caso podría ser otro). El tercer comando crea el repositorio repoDeEjemplo, y el último comando le dice al sistema operativo que ese directorio va a pertenecer al usuario www-data (este usuario es el que ejecuta el servidor web, por este motivo, si queremos acceder y modificar desde webdav a los repositorios, debemos hacer que la carpeta del repositorio pertenezca a este usuario).
Conectar un repositorio con apache
Para conectar un repositorio al apache lo que se debe hacer es instalar el apache junto con un módulo especial para svn:
# aptitude install apache2 libapache2-svn
y luego configurar un dominio virtual con algo parecido a esto:
<Location /svn/repoDeEjemplo>
DAV svn
SVNPath /home/svn/repoDeEjemplo/
AuthzSVNAccessFile /home/svn/repoDeEjemplo/conf/authz
AuthType Digest
AuthDigestProvider file
AuthUserFile /home/svn/passwd
AuthName "midominio.cl"
Require valid-user
Order allow,deny
Allow from all
</Location>se supone que los usuarios se crean con htdigest, y se encuentran en el archivo /home/svn/passwd, y los permisos de acceso a cada usuario se configuran en el archivo /home/svn/repoDeEjemplo/conf/authz
Especificando los usuarios
Los usuarios se mantienen en un archivo de usuarios, que en nuestros ejemplos será /home/svn/passwd, los usuarios y sus contraseñas pueden estar especificados con uno y sólo uno de los siguientes tipos de seguridad:
AuthType Basic:
Cuando se elige este tipo de seguridad los usuarios pueden ser especificados en texto plano, es decir, almacenando sus contraseñas en el archivo sin ningún tipo de hash, por ejemplo:
usuario1:PalabraSecretaDelUsuario1 usuario2:PalabraSecretaDelUsuario2
Sin embargo, también es posible almacenar las contraseñas con la función hash proporcionada por la herramienta htpasswd, para esto, debemos tener un poco de cuidado, ya que para crear el archivo se le da una opción y para agregar un usuario se le da otra opción:
Creamos el archivo especificando el primer usuario, que en nuestro ejemplo será usuario1:
# htpasswd -c /home/svn/passwd usuario1
Si queremos añadir otro usuario (que en nuestro ejemplo se llamará usuario2) lo realizamos de la siguiente forma:
# htpasswd /home/svn/passwd usuario2
Como se observa, la única diferencia es la opción -c que significa algo así como "crear".
AuthType Digest:
El módulo de este tipo de autenticación no viene habilitado por defecto, para habilitarlo manualmente:
# a2enmod auth_digest
Cuando se elige este tipo de seguridad las contraseñas de los usuarios sólo se pueden crear con la función de hash proporcionada por la herramienta htdigest, en la cual además del nombre del usuario debemos especificar un nombre del ámbito de autenticación. Su uso es muy similar al uso de htpasswd:
creamos el archivo especificando el primer usuario y el nombre del ámbito de autenticación, que en nuestro ejemplo serán usuario1 y midominio.cl:
# htdigest -c /home/svn/passwd midominio.cl usuario1
Si queremos añadir otro usuario, digamos usuario2, con el mismo ámbito de autenticación, lo realizamos de la siguiente forma:
# htdigest /home/svn/passwd midominio.cl usuario2
Como se observa, la única diferencia con la herramienta htpasswd es que htdigest es capaz de administrar también distintos ámbitos de autenticación para los usuarios, este nombre del ámbito, para el repositorio, debe ser configurado en el dominio virtual con la variable AuthName.
El tipo de seguridad debe ser configurado en el dominio virtual con la variable AuthType.