Mise en place des ACLs pour CVS

From Deimos.fr / Bloc Notes Informatique
Jump to: navigation, search

1 Installation

Télécharger la derniere version pré-patchée de CVSACL sur internet (http://cvsacl.sourceforge.net), puis l'éxtraire.

wget http://switch.dl.sourceforge.net/sourceforge/cvsacl/cvs-1.11.22-cvsacl-1.2.5-patched.tar.gz
tar -xzvf cvs-1.11.22-cvsacl-1.2.5-patched.tar.gz

Configuration, compilation et installation

cd cvs-1.11.22-cvsacl-1.2.5-patched.tar.gz
./configure
make
make install

Si cvs est bien installé avec son Patch cvsacl, la commande "cvs --version" devrait donner :

Concurrent Versions System (CVS) 1.11.22 (client/server)
with CVSACL Patch 1.2.5 (cvsacl.sourceforge.net)

2 Configuration

2.1 Preparation du repository

2.1.1 Si le repository n'éxiste pas encore

  • Créer le repertoire du repository (le répertoire peut etre créé n'importe où, de préference dans un endroit avec suffisament de place)
mkdir -p /home/cvsadmin/cvsroot
  • Créer le lien symbolique vers le repository
ln -s /home/cvsadmin/cvsroot /usr/local/cvsroot
  • Definir la variable $CVSROOT et initialiser le repository
export CVSROOT=/usr/local/cvsroot
cvs -d $CVSROOT init

Après cette operation, un repertoire CVSROOT sera créé à la racine du repository.
Ce repertoire, vu comme le premier module du repository, contient tous les fichiers de configuration de CVS.

2.1.2 Si le repository existe

  • Copier le fichier "aclconfig.default" depuis les sources vers le dossier CVSROOT à la racine du repository.
sudo cp /root/cvs-1.11.22-cvsacl-1.2.5-patched.tar.gz/aclconfig.default $CVSROOT/CVSROOT
  • Renomer le fichier en "aclconfig"
sudo mv $CVSROOT/CVSROOT/aclconfig.default $CVSROOT/CVSROOT/aclconfig

2.2 Configuration des Lockfiles

Créer un repertoire ".lock" à la racine du repository (/usr/local/cvsroot) et permettre l'acces total à tout utilisateur

mkdir /usr/local/cvsroot/.lock
chmod 777 /usr/local/cvsroot/.lock

Editer le fichier "config" dans /usr/local/cvsroot/CVSROOT/ et modifier comme ceci :

# Put CVS lock files in this directory rather than directly in the repository.
LockDir=/home/cvsadmin/cvsroot/.lock

2.3 Configuration des utilisateurs

CVSACL offre la possibilité de gerer les droits d'acces par groupe soit en utilisants les groupes du Systeme (/etc/group), soit en utilisant son propre fichier de groupes.
Il est préferable d'utiliser cette derniere methode car elle permet d'avoir une gestion des droits CVS completement independante du systeme Pour cela il faut editer le fichier "aclconfig" dans /usr/local/cvsroot/CVSROOT et le modifier comme ceci :

# Set `UseSystemGroups' to yes to use system group definitions (/etc/group).
#UseSystemGroups=yes
# Set `UseCVSGroups' to yes to use another group file.
UseCVSGroups=yes

puis créer le fichier "group" dans /usr/local/cvsroot/CVSROOT

touch /usr/local/cvsroot/CVSROOT/group

le fichier groupe doit etre de la forme "groupe:user1, user2, user3 ..."
les groupes sont totalement independants des groupes systemes et peuvent porter n'importe quel nom.
les users sont ceux du systeme.Il faudra donc créer les créer avec useradd ainsi que leur home.

2.4 Configuration des ACL

Tout d'abord, il faut definir "root" en tant que proprietaire CVS.
il pourra ainsi effectuer toutes les taches de CVS et administrer l'acces au repository.

cvs -d /usr/local/cvsroot racl root:p -r ALL ALL

2.4.1 Definition des droits

Syntaxe de la commande d'attribution des droits :

cvs -d </Chemin/du/repository> racl <user ou groupe>:<droit> <TAG> <BRANCHE>
  • no access
 Command line character: n

aucune action possible sur le repository

  • read
 Command line character: r

Lecture seule. Avec ces droits seules les actions suivantes sont possible: annotate, checkout, diff, export, log, rannotate, rdiff, rlog, status.

  • write
 Command line character: w

cette permission n'autorise que les action cvs commit/checkin. Elle ne permet pas d'ajouter/supprimer un fichier depuis/vers le repository, d'autres permissions sont definies pour cela.

  • tag
 Command line character: t

cette permission autorise les sous-commandes cvs tag et rtag ainsi il est possible de controler les operations de Tag et Untag. la permission "t" inclus la permission "r" car pour tagger la lecture est obligatoire. Cependant, "t" n'inclus pas l'écriture, il n'est pas possible de Commiter juste avec cette permission.

  • create
 Command line character: c

La permission "c" autorise la création/suppression de fichier depuis/vers le repository mais une fois de plus cette permission n'inclue pas "w", on ne peux que importer ou exporter des fichiers. Après avoir effectuer un ajout de fichier, il faut effectuer un commit qui sera excepté car on Ajoute un fichier, on ne le modifie pas.

  • delete
 Command line character: d

"d" autorise la suppression et n'inclue pas "w"

  • full access except admin rights
 Command line character: a

"a" inclue toutes les permissions listées plus haut sauf les droits de gestion des ACL.

  • acl admin
 Command line character: p

"p" indique que l'utilisateur est proprietaire.Il a le controle total du repository et peut gerer les ACL.

2.5 Exemple d'ACL

cvs -d /usr/local/cvsroot group1:r -r ALL ALL
cvs -d /usr/local/cvsroot group2:n -r ALL module1
cvs -d /usr/local/cvsroot user1:w -Rr ALL module2

La premiere ligne autorise la lecture sur tout les repertoires du repository pour le groupe "group1"
La deuxieme ligne interdit l'acces au "module1" pour le groupe "group2"
la troisieme ligne permet a "user1" de modifier des fichiers dans TOUS les sous-dossiers et fichiers de "module2" ( -R = recusivement )