||<#ffff00>Attention : ceci est un début de documentation, par l'exemple... Ce n'est donc pas (encore) un modèle ! -- JeanChristopheAndré|| ||<#ffff00>À venir : configuration d'environnement svn collaboratif via SSH -- JeanChristopheAndré|| == Environnement svn collaboratif == Idées : * service `svn` sécurisé : * dépôt mis dans un `chroot` (par exemple `/srv/chroot/svn`) * service anonyme en `chroot` + `setuid` * service `ssh` dédié `svn` : * lancement d'un second démon `ssh` en `chroot` avec `svn` * lancement en `setuid` sur le compte `svn` si possible * le mettre sur un alias IP, sur le port standard, pour simplifier l'usage * un seul compte `ssh` avec les clés de tous les développeurs : * restriction à l'usage de `svnserve` avec les options `--tunnel` et `--tunnel-user` == Exemple : création d'un dépôt pour le ProjetDEF == * créer un dépôt : {{{svnadmin create --fs-type fsfs /var/lib/svn/def}}} * éditer un fichier {{{/var/lib/svn/def/conf/svnserve.conf}}} tel que suit : {{{ [general] anon-access = read auth-access = write password-db = passwd realm = AuF-BAP-DEF }}} * éditer un fichier `/var/lib/svn/def/conf/passwd` tel que suit : {{{ [users] test = test }}} '''NB''' : lancer svnserver : `svnserver -d` * attribuer l'utilisateur et le groupe du serveur subversion : {{{chown -R svn:svn /var/lib/svn/def}}} * donner des droits corrects/stricts sur le dépôt : {{{chmod -R u=rwX,g=rX,o= /var/lib/svn/def}}} Le dépôt est à présent utilisable « à distance ». * créer un dossier de gestion des tags : {{{svn mkdir svn://localhost/def/tags}}} * créer un dossier de gestion des branches : {{{svn mkdir svn://localhost/def/branches}}} * importer les sources actuelles du projet : {{{svn import /var/www/def.vn.auf.org/docs svn://localhost/def/trunk/docs}}} Dans le cas où on voudrait qu'un `apache` local puisse accéder à ce dépôt, par exemple pour `websvn`, on lui donnerait les droits d'accès en lecture-seule avec {{{adduser www-data svn}}}.