Table des matières
- Enseignants : SourceSup, fourni et maintenu par RENATER.
Le principe
Utiliser l'infrastructure SSH existante de nos serveurs pour l'identification.
NB : pas d'accès possible par navigateur.
Dans ce qui suit, un utilisateur - USER1 - gère un dépôt dans son arborescence personnelle et donne accès à ce dépôt à un autre utilisateur - USER2 -.
Identification via SSH
Création du dépôt par USER1 (propriétaire du dépôt)
USER1> mkdir ~/forge_html/SVN/ USER1> cd ~/forge_html/SVN/ USER1> svnadmin create mondepot USER1> chmod 700 mondepot
Clés ssh de USER2 (le client)
- S'il n'en a pas déjà un, le 2eme utilisateur créé un jeu de clés SSH personnel avec protection de la clé privée par passphrase, .
USER2> ssh-keygen -t rsa
Transmisssion à USER1 de la clé publique ~USER2/.ssh/id_rsa.pub ainsi créée.
- ou, sous Ubuntu, utiliser seahorse
Le fichier authorized_keys de USER1
USER1 ajoute la clé publique spéciale de USER2 à ~USER1/.ssh/authorized_keys et
la modifie comme suit.
NB : si USER1 est son propre client, il a juste besoin d'ajouter sa clé publique créée sur sa machine cliente au fichier ~/.ssh/authorized_keys sur sirius.
clé publique USER2 d'origine :
ssh-rsa AAAA...blabla..reste_de_la_clé...
dans authorized_keys de USER1 :
command="/usr/bin/svnserve -t --tunnel-user=USER2",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa AAAA...blabla..reste_de_la_clé...
le tout sur une seule ligne.
explications :
- command=“” : indique à ssh la commande à utiliser avec cette clé
- /usr/bin/svnserve -t : svnserve en mode tunnel ssh
- –tunnel-user=USER2 : les modifications apportées au dépôt seront attirbuées à USER2
- le reste : quelques précautions de sécurité
Utilisation par USER2
Format de base des URL à utiliser par USER2 pour les commandes svn :
Pour un dépôt situé ailleurs que sur sirius :
svn+ssh://USER1@serveur/chemin/home/USER1/son/depot
Pour un dépôt créé sur sirius avant le 19/03/10 :
(Tiens compte de la mise en place de la nouvelle organisation des dépôts)
svn+ssh://USER1@janus.info.univ-angers.fr/chemin/home/USER1/forge_html/SVN
Pour un dépôt créé sur sirius après le 19/03/10 :
(Tiens compte de la mise en place de la nouvelle organisation des dépôts)
svn+ssh://USER1@janus.info.univ-angers.fr/chemin/home/USER1/forge_html/SVN/mondepot
sirius, janus et forge désignent la même machine, mais l'accès ssh à forge.info.univ-angers.fr n'est plus possible.
depuis l'extérieur du réseau du département, janus.info.univ-angers.fr ne répond pas aux pings ⇒ utiliser ssh pour vérifier qu'une connexion est possible.
On voit que USER2 se connecte en tant que USER1. Toutes les restrictions nécessaires à la
sécurité et l'attribution des modifications dans le dépôt sont gérées dans le fichier
~/.ssh/authorized_keys de USER1, comme on l'a vu.
gestion des passphrase par USER2 (ou tout client)
On utilise un agent SSH afin que cette passphrase ne soit pas demandée à chaque commande svn.
Utiliser seahorse, ou, le cas échéant, les commandes suivantes dans un terminal :
USER2> ssh-agent $SHELL USER2> ssh-add USER2> clientsvn
Si le serveur utilise un port SSH autre que celui par défaut (22)
Pour le client svn en ligne de commande sous Linux.
Dans le fichier ~/.subversion/config, dans la section [tunnels], ajouter une ligne comme :
ssh<xy> = ssh -p <xy>
Remplacer <xy> par le numéro de port SSH par lequel la machine distante est accessible, et utiliser le format de base d'URL suivant :
svn+ssh<xy>://USER1@janus.info.univ-angers.fr/chemin/home/USER1/forge_html/SVN/mondepot
Autorisations
Gestion des permissions d'accès par USER1 (propriétaire du dépôt)
fichiers de configuration
Ils sont dans le sous-répertoire conf du répertoire de dépôt de USER1.
svnserve.conf
Modifier les paramètres auth-access, anon-access et authz-db
Exemple de fichier svnserve.conf :
[general] ### These options control access to the repository for unauthenticated ### and authenticated users. Valid values are "write", "read", ### and "none". anon-access = none auth-access = write authz-db = authz
authz
C'est dans ce fichier que sont configurés les droits d'accès (si authz est la valeur donnée à authz-db dans svnserve.conf).
Exemple de fichier authz :
[groups] lesautres = toto,titi [/] # droits de lecture/écriture moi = rw elle = rw # droits de lecture lui = r # droits de lecture pour le groupe "lesautres" @lesautres = r # aucun droit pour tous le reste du monde * =
Voir Path-Based Authorization pour plus de détails.
Documentation
sur une commande
man <commandesvn>
<commandesvn> help <commandesvn> help <sous-commande>
globale
/usr/share/doc/subversion/ : Particulièrement “Débuter avec Subversion” (/usr/share/doc/subversion/french/getting_started.html)
http://fr.wikipedia.org/wiki/Subversion_(logiciel)
http://en.wikipedia.org/wiki/Subversion
http://svnbook.red-bean.com/
http://dev.nozav.org/intro_svn.html (fr)
Clients
Voir aussi Comparaison des clients pour Subversion
Clients subversion Linux :
Installés sur sirius et/ou facilement installables sur les portables :
- svn (ligne de commande)
- esvn
- rapidsvn
- kdesvn
- svn-workbench
- subcommander