Faire tourner un serveur CVS

Faire tourner un serveur CVS

Cette section décrira comment le mettre en place, administrer et sécuriser un serveur CVS.

CVSserver dépend de
cvs-1.11.5 et openssh-3.6.1p1.

Mettre en place un serveur CVS.

Nous allons discuter comment mettre en place un serveur CVS en utilisant OpenSSH en tant que méthode d'accès à distance. D'autres méthodes d'accès, incluant :pserver: et :server:, ne seront pas utilisées pour des accès en écriture au dépôt CVS. La méthode :pserver: envoie les mots de passe en clair sur le réseau et la méthode :server: n'est pas supportée sur tous les ports CVS. Des instructions pour l'accès anonyme, en lecture seule, utilisant :pserver:, peuvent être trouvées à la fin de cette section.

La configuration de notre serveur CVS consiste en quatre étapes:

1. Créer le dépôt.

Créez le nouveau dépôt CVS avec les commandes suivantes, connecté en tant que root:

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

2. Importer le code source dans le dépôt.

Importez un module source dans le dépôt avec les commandes suivantes, envoyé à partir du compte utilisateur sur la même machine que le dépôt CVS:

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

3. Vérifier l'accès local au dépôt.

Testez l'accès au dépôt CVS pour le même compte utilisateur avec la commande suivante:

cvs co cvstest

4. Vérifier l'accès distant au dépot.

Testez l'accès au dépot CVS d'une machine distante en utilisant un compte utilisateur qui a un accès ssh au serveur CVS avec les commandes suivantes:

Note : Remplacez "nom_serveur" avec l'adresse IP ou le nom d'hote de la machine du dépot CVS. Le nom du compte utilisateur va vous etre demandé avant que le CVS checkout puisse continuer.

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

Configurer CVS pour un accès anonyme en lecture seul.

CVS peut etre configuré pour permettre l'accès anonyme en lecture seule en utilisant la méthode :pserver: pour se connecter en tant que root et exécuter les commandes suivantes:

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

Si vous utilisez inetd, la commande suivante ajoutera l'entrée pserver à /etc/inetd.conf:

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

Envoyez un killall -HUP inetd pour relire le fichier inetd.conf modifié.

Si vous utilisez xinetd, la commande suivante ajoutera l'entrée pserver à /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

Envoyez un killall -HUP xinetd pour relire le fichier xinetd.conf modifié.

Testez l'accès anonyme pour le nouveau dépot requiert un compte sur une autre machine qui peut atteindre le serveur CVS via le réseau. Aucun compte est nécessaire dans le dépot CVS. Pour tester l'accès anonyme au dépot CVS, connectez-vous sur une autre machine en tant qu'utilisateur non privilégié et exécutez la commande suivante:

cvs -d:pserver:anonymous@nom_serveur:/cvsroot co cvstest

Note : Remplacez "nom_serveur" avec l'adresse IP ou le nom d'hote du serveur CVS.

Explication des commandes

mkdir /cvsroot : Créez le répertoire du dépôt CVS.

chmod 1777 /cvsroot : Permission 'Sticky bit' pour CVSROOT.

export CVSROOT=/cvsroot : Spécifie le nouveau CVSROOT pour toutes les commandes cvs.

cvs init : Initialise le nouveau dépôt CVS.

cvs import -m "repository test" cvstest vendortag releasetag : Tous les modules de code source doivent être importés dans le dépôt CVS avant utilisation, avec la commande cvs import. L'option -m spécifie une entrée initiale de descriptions pour le nouveau module. Le paramètre "cvstest" est le nom utilisé pour le module dans toutes les commandes cvs subséquentes. Les paramètres "vendortag" et "releasetag" sont utilisés pour mieux identifier chaque module CVS et sont nécessaires qu'ils sont utilisés ou non.

(grep anonymous /etc/passwd || useradd anonymous -s /bin/false) : Vérifie l'existence d'un utilisateur anonyme et en crée un si nécessaire.

echo anonymous: > /cvsroot/CVSROOT/passwd : Ajoute l'utilisateur anonyme dans le fichier passwd de CVS, qui est inutilisé pour tout autre chose dans cette configuration.

echo anonymous > /cvsroot/CVSROOT/readers : Ajoute l'utilisateur anonyme dans le fichier readers de CVS, une liste d'utilisateurs qui ont un accès en lecture seule au dépôt.