Ejecutar un servidor CVS

Ejecutar un servidor CVS

Esta sección describirá cómo levantar, administrar y asegurar un servidor CVS.

Activar un servidor CVS.

Expondremos la activación de un servidor CVS utilizando OpenSSH como método de acceso remoto. Otros métodos de acceso, que incluyen :pserver: y :server:, no deberían usarse como acceso de escritura al repositorio CVS. El método :pserver: envía las contraseñas por la red en texto claro y el método :server: no está soportado en todas las versiones de CVS. Pueden encontrarse instrucciones para acceso anónimo al CVS, en modo sólo lectura, utilizando :pserver:, al final de esta sección.

La configuración de nuestro servidor CVS consta de cuatro pasos:

1. Crea un repositorio.

Crea un nuevo repositorio CVS con los siguientes comandos, siendo root:

mkdir /cvsroot &&
chmod 1777 /cvsroot &&
export CVSROOT=/cvsroot &&
cvs init

2. Importa el código fuente al repositorio.

Importa un módulo de fuentes al repositorio con los siguientes comandos, a partir de una cuenta de usuario en la misma máquina que el repositorio CVS:

export CVSROOT=/cvsroot &&
cd sourcedir &&
cvs import -m "repository test" cvstest vendortag releasetag

3. Verifica el acceso local al repositorio.

Comprueba el acceso local al repositorio CVS desde la misma cuenta de usuario con el siguiente comando:

cvs co cvstest

4. Verifica el acceso remoto al repositorio.

Comprueba el acceso al repositorio CVS desde una máquina remota usando una cuenta de usuario que tenga acceso ssh al servidor CVS con los siguientes comandos:

Nota: Sustituye [servername] con la dirección IP o el nombre de la máquina donde está el repositorio CVS. Se te preguntará la contraseña de la cuenta ssh antes de que el cvs checkout pueda continuar.

export CVS_RSH=/usr/bin/ssh &&
cvs -d:ext:[servername]:/cvsroot co cvstest

Configuración de CVS para acceso anónimo en modo sólo lectura.

CVS puede configurarse para permitir acceso anónimo en modo sólo lectura, usando el método :pserver:, ejecutando los siguientes comandos como root:

(grep anonymous /etc/passwd || useradd anonymous -s /bin/false) &&
echo anonymous: > /cvsroot/CVSROOT/passwd &&
echo anonymous > /cvsroot/CVSROOT/readers

Si utilizas inetd, el siguiente comando añadirá la entrada para pserver en /etc/inetd.conf:

echo "2401  stream  tcp  nowait  root  /usr/bin/cvs cvs -f \
        --allow-root=/cvsroot pserver" >> /etc/inetd.conf

Ejecuta killall -HUP inetd para leer los cambios en el fichero inetd.conf.

Si utilizas xinetd, el siguiente comando añadirá la entrada pserver en /etc/xinetd.conf:

cat >> /etc/xinetd.conf << "EOF"
     service cvspserver
     {
          port        = 2401
          socket_type = stream
          protocol    = tcp
          wait        = no
          user        = root
          passenv     = PATH
          server      = /usr/bin/cvs
         server_args = -f --allow-root=/cvsroot pserver
     }
EOF

Ejecuta killall -HUP xinetd para leer los cambios en el fichero xinetd.conf.

La comprobación del acceso anónimo al nuevo repositorio requiere una cuenta en otra máquina que pueda conectar con el servidor CVS a través de la red. No es necesaria una cuenta en el repositorio CVS. Para comprobar el acceso anónimo al repositorio CVS, entra en otra máquina como usuario sin privilegios y ejecuta el siguiente comando:

cvs -d:pserver:anonymous@[servername]:/cvsroot co cvstest

Nota: Sustituye [servername] con la dirección IP o el nombre del servidor CVS.

Explicación de los comandos

mkdir /cvsroot : Crea el directorio del repositorio CVS.

chmod 1777 /cvsroot : Permisos de bit pegajoso (sticky bit) para CVSROOT.

export CVSROOT=/cvsroot : Especifica el nuevo CVSROOT para todos los comandos cvs.

cvs init : Inicializa el nuevo repositorio CVS.

cvs import -m "repository test" cvstest vendortag releasetag : Todos los módulos de código fuente deben importarse al repositorio con el comando cvs import al repositorio CVS antes de usarlos. La opción -m especifica una entrada descriptiva inicial para el nuevo módulo. El parámetro "cvstest" es el nombre utilizado para el módulo en todos los comandos cvs posteriores. Los parámetros "vendortag" y "releasetag" son usados para una posterior identificación de cada módulo CVS y son obligatorios tanto si se usan como si no.

(grep anonymous /etc/passwd || useradd anonymous -s /bin/false) : Comprueba si existe el usuario anonymous y lo crea si no lo encuentra.

echo anonymous: > /cvsroot/CVSROOT/passwd : Añade el usuario anonymous al fichero de contraseñas de CVS, que no es utilizado para nada más en esta configuración.

echo anonymous > /cvsroot/CVSROOT/readers : Añade el usuario anonymous al fichero de lectores de CVS, una lista de los usuarios que tienen acceso en modo de sólo lectura al repositorio.