Table des matières

Page obsolète, utilisez plutôt :

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)

USER2> ssh-keygen -t rsa

Transmisssion à USER1 de la clé publique ~USER2/.ssh/id_rsa.pub ainsi créée.

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 :

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.

Si le mot de passe de USER1 est demandé, c'est qu'il manque quelque chose à la configuration : en aucun cas USER1 ne doit donner sont mot de passe à USER2.

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)

Important pour un dépôt partagé

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.

Ce sont les seuls fichiers à modifier manuellement dans un répertoire de dépôt. Le reste ne doit être modifié que via des commandes/clients svn.

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 :

Intégration à Nautilus

Clients subversion Windows :