Mise en place des ACLs pour CVS
Contents
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 )