Ceci est une ancienne révision du document !
Gitolite
Gitolite est une réécriture de Gitosis, par Sitaram Chamarty. Il permet de gérer des dépôts Git sur un serveur en leur attribuant des utilisateurs ou groupes d'utilisateurs, des droits spécifiques comme la lecture, écriture, etc. Il possède un fichier de configuration complètement diffèrent qui permet le contrôle d'accès sur chaque branche, incluant des spécifications comme qui peut ou ne peut pas revenir sur une branche donnée.
Gitolite utilise évidement les clés publiques ssh pour l'ajout d'utilisateur, mais il est intéressant car il interdit ses utilisateurs de se connecter à un shell de l'utilisateur des dépôts. C'est l'un des points importants de sécurité auxquels répond Gitolite.
Pré-requis
Gitolite utilise un utilisateur spécifique sur le serveur pour gérer les dépôts.
Dans cette documentation nous considérerons les termes suivants :
server
: serveur ;admin
: administrateur du serveur ;git
: utilisateur Git du serveur (s'il n'est pas créé, il peut l'être avecsudo adduser git
).
Nous considérons donc que les utilisateurs admin
et git
sont sur server
.
admin
doit avoir un accès ssh autorisé sur le compte de l'utilisateur git
. Si ce n'est pas le cas, sur server
, créez une paire de clés (publique et privée) pour admin
avec :
ssh-keygen
Puis ajoutez la clé publique aux clés autorisées de git
avec :
ssh-copy-id -i ~/.ssh/id_rsa.pub git@localhost
Cette commande a pour effet d'ajouter votre clé au fichier ~/.ssh/authorized_keys
de git
.
Gitolite nécéssite évidement Git. Si ce n'est pas fait, installez donc le paquet git-core.
Installation
L'installation se fera depuis le dossier personnel de l'utilisateur admin
de votre serveur server
.
Récupérez les sources de Gitolite sur Github, avec :
git clone git://github.com/sitaramc/gitolite.git
Déplacez-vous dans le dossier des sources :
cd gitolite
Lancez à présent le script d'installation de Gitolite :
src/gl-easy-install git localhost admin
Cela signifie que vous lancez l'installation en utilisant git
comme utilisateur contenant les dépôts Git, sur votre serveur (ici la machine sur laquelle vous êtes connectée, donc localhost
représente server
) et utilisez admin
comme administrateur des dépôts.
Il vous sera demandé plusieurs choses au cours de l'exécution du script. Si vous n'êtes pas familié avec Git, utilisez les propositions par défaut.
Configuration
La configuration de Gitolite est simple. Elle crée un dépôt de configuration nommé gitolite-admin
sur le serveur, et son clône dans le répertoire personnel de admin
. C'est dans celui-ci que nous configurerons nos dépôts. cette configuration comprend un fichier et un dossier :
conf/gitolite.conf
: fichier de configuration de Gitolite, contenant les dépôts, leurs utilisateurs/groupes et leurs droits associés ;keydir/
: dossier contenant les clés publiques des utilisateurs, sous la formeuser_name.pub
.
La configuration de Gitolite utilisant un dépôt Git spécifique, il sera nécessaire de commiter les changements effectués pour qu'ils prennent effet, c'est pour cela qu'il est nécessaire de se situer dans le dossier de configuration pour appliquer des changements.
Rendez-vous donc dans le dépôt gitolite-admin
de votre utilisateur admin
:
cd ~/gitolite-admin
Créer un dépôt
Pour créer un dépôt, éditez votre fichier conf/gitolite.conf
. Ce fichier se présente sous la forme :
repo repo1 RW+ = admin
ce qui signifie que le dépôt repo1
(repository en anglais) admet un utilisateur (admin
) qui possède les droits de lecture (R
) et d'écriture (W
).
Pour ajouter un dépôt my_repo, ajoutez donc :
repo my_repo RW+ = user1 user2 user3
Une fois votre fichier édité, sauvegardé puis commitez les changements :
git add conf/gitolite.conf git commit -m "add repository my_repo" git push
my_repo sera automatiquement créé après le push dans /home/git/repositories/
.
Ajouter un utilisateur
Pour ajouter un utilisateur, il suffit d'ajouter sa clé publique au dossier keydir/
dans un fichier nommé username.pub
.
Pour ajouter par exemple l'utilisateur user1
, crééz le fichier keydir/user1.pub
contenant sa clé publique.
ssh-keygen
(executée depuis le poste de l'utilisateur à ajouter) et est contenue dans le fichier ~/.ssh/id_rsa.pub
de l'utilisateur.
Une fois son fichier ajouté, commitez les changements :
git add keydir/user1.pub git commit -m "add user user1" git push
admin
est le nom utilisé pour l'administration deserver
, mais aussi le nom utilisé sur une machine de développement ;- un utilisateur peut développer sur plusieurs machine, par exemple son pc et son portable.
Vous pouvez donc définir plusieurs clés pour un même utilisateur en créant des fichiers user1.pub
, user1@laptop.pub
, user1@foo.pub
, etc.
Ajouter un groupe
Pour ajouter un groupe, il suffit de le définir dans le fichier gitolite.conf
. Éditez donc le fichier conf/gitolite.conf
et ajoutez-y un groupe au début du fichier comme ceci :
@group1 = user1 user2 user3
@all
est un groupe déjà définit, représentant tout le monde.
Pour assigner un groupe à un dépôt, il suffit de le définir comme pour un utilisateur :
repo my_repo RW+ = @group1
Puis commitez les changements avec :
git add conf/gitolite.conf git commit -m "add group group1 and assign it to repo my_repo" git push
Utilisation
Accès à un dépôt
Après avoir ajouter un utilisateur, celui-ci peut cloner un dépôt avec :
git clone git@server:my_repo
admin
veut développer sur server
, il doit cloner un dépôt avec :
git clone gitolite:my_repo