Exécuter un serveur subversion

Exécuter un serveur subversion

Cette section décrira la façon de paramétrer, administrer et sécuriser un serveur Subversion.

Dépendances de Subversion Server

Requises

Subversion-1.9.7 et OpenSSH-7.6p1

Paramétrage d'un serveur Subversion.

Les instructions suivantes installeront un serveur Subversion, qui sera paramétré pour utiliser OpenSSH comme méthode sécurisée à distance, avec svnserve disponible pour un accès anonyme.

La configuration du serveur Subversion consiste en les étapes suivantes :

1. Régler l'utilisateur, le groupe et les droits

Vous devrez être l'utilisateur root pour la partie initiale de la configuration. Créez l'utilisateur et le groupe svn avec les commandes suivantes :

groupadd -g 56 svn &&
useradd -c "SVN Owner" -d /home/svn -m -g svn -s /bin/false -u 56 svn

Si vous envisagez d'avoir plusieurs dépôts, vous devriez avoir un groupe dédié à chaque dépôt pour faciliter l'administration. Créez le groupe svntest pour le dépôt de test et ajoutez l'utilisateur svn au groupe avec les commandes suivantes :

groupadd -g 57 svntest &&
usermod -G svntest -a svn

En outre, vous devriez régler umask 002 pendant que vous travaillez avec un dépôt pour que tous les nouveaux fichiers soient accessibles en écriture au propriétaire et au groupe. Ceci est rendu obligatoire par la création d'un script enveloppe pour svn et svnserve :

mv /usr/bin/svn /usr/bin/svn.orig &&
mv /usr/bin/svnserve /usr/bin/svnserve.orig &&
cat >> /usr/bin/svn << "EOF"
#!/bin/sh
umask 002
/usr/bin/svn.orig "$@"
EOF
cat >> /usr/bin/svnserve << "EOF"
#!/bin/sh
umask 002
/usr/bin/svnserve.orig "$@"
EOF
chmod 0755 /usr/bin/svn{,serve}
[Note]

Note

Si vous utilisez Apache pour travailler avec le dépôt par HTTP, même pour un accès anonyme, vous devriez envelopper /usr/sbin/httpd dans un script similaire.

2. Créer un dépôt Subversion.

Il y a de nombreuses manières d'initialiser un répertoire subversion. Il est recommandé de regarder le chapitre correspondant du Livre SVN. Un répertoire de base peut être initialisé avec les instructions ci-dessous.

Créez un nouveau dépôt Subversion avec les commandes suivantes (en tant qu'utilisateur root) :

install -v -m 0755 -d /srv/svn &&
install -v -m 0755 -o svn -g svn -d /srv/svn/repositories &&
svnadmin create /srv/svn/repositories/svntest

Maintenant que le dépôt est créé, vous devriez le peupler avec quelque chose d'utile. Vous devrez avoir une disposition de répertoires prédéfinie paramétrée comme ce à quoi vous voudriez que votre dépôt ressemble. Par exemple, voici un modèle du paramétrage de BLFS avec une racine de svntest/. Vous devrez paramétrer une arborescence de répertoire ressemblant à ce qui suit :

svntest/            # The name of the repository
   trunk/           # Contains the existing source tree
      BOOK/
      bootscripts/
      edguide/
      patches/
      scripts/
   branches/        # Needed for additional branches
   tags/            # Needed for tagging release points

Une fois que vous avez créé votre aménagement de répertoire, comme indiqué ci-dessus, vous êtes prêt à faire l'importation initiale :

svn import -m "Initial import." \
    </path/to/source/tree>      \
    file:///srv/svn/repositories/svntest

Maintenant modifiez les informations de propriétaire et de groupe du dépôt et ajoutez un utilisateur non privilégié aux groupes svn et svntest :

chown -R svn:svntest /srv/svn/repositories/svntest    &&
chmod -R g+w         /srv/svn/repositories/svntest    &&
chmod g+s            /srv/svn/repositories/svntest/db &&
usermod -G svn,svntest -a <username>

svntest est le groupe affecté au dépôt svntest. Comme indiqué plus haut, cela facilite l'administration de plusieurs dépôts lors de l'utilisation de OpenSSH pour l'authentification. En anticipant, vous devrez ajouter votre utilisateur non privilégié et n'importe quel utilisateur supplémentaire auquel vous pouvez vouloir donner accès en écriture au dépôt, aux groupes svn et svntest.

En outre, vous remarquerez que le nouveau répertoire du dépôt db est set-groupID. Si le raisonnement n'est pas immédiatement évident, quand on utilise une méthode d'authentification externe (telle que ssh), le bit sticky est réglé de sorte que tout les nouveaux fichiers appartiendront à l'utilisateur, mais au groupe svntest. Quiconque dans le groupe svntest peut créer des fichiers, mais donnez encore l'accès en écriture à tout le groupe à ces fichiers. Ceci évite d'exclure d'autres utilisateurs du dépôt.

Maintenant, repassez en accès pour utilisateur non privilégié, et jetez un œil sur le nouveau dépôt en utilisant svnlook :

svnlook tree /srv/svn/repositories/svntest/
[Note]

Note

Il se peut que vous deviez vous déconnecter et y revenir pour rafraîchir vos appartenances au groupe. 'su <nom_utilisateur>' devrait aussi fonctionner.

3. Configurer le Serveur

Comme indiqué précédemment, ces instructions configureront le serveur pour n'utiliser que ssh pour un accès en écriture au dépôt et pour fournir un accès anonyme en utilisant svnserve. Il y a plusieurs autres manières de fournir un accès au dépôt. Ces configurations supplémentaires sont mieux expliquées sur http://svnbook.red-bean.com/.

La configuration de l'accès doit se faire pour chaque dépôt. Créez le fichier svnserve.conf pour le dépôt svntest en utilisant les commandes suivantes :

cp /srv/svn/repositories/svntest/conf/svnserve.conf \
   /srv/svn/repositories/svntest/conf/svnserve.conf.default &&

cat > /srv/svn/repositories/svntest/conf/svnserve.conf << "EOF"
[general]
anon-access = read
auth-access = write
EOF

Il n'y a pas grand à chose du tout avoir avec le fichier de configuration. Vous remarquerez que seule la section générale est nécessaire. Jetez un œil sur le fichier svnserve.conf.default pour des informations sur l'utilisation de la méthode d'authentification de svnserve intégrée.

4. Démarrage du Serveur

Pour démarrer le serveur au démarrage, installez l'unité svnserve.service du paquet blfs-systemd-units-20180105.

make install-svnserve

En outre, vous devriez régler umask 002 pendant que vous travaillez avec un dépôt pour que tous les nouveaux fichiers soient accessibles en écriture au propriétaire et au groupe. Ceci peut être accompli en créant un fichier de surcharge d'unité systemd en lançant la commande suivante :

mkdir -p /etc/systemd/system/svnserve.service.d 
echo "UMask=0002" > /etc/systemd/system/svnserve.service.d/99-user.conf

Les options passées au démon svnserve peuvent être changées dans /etc/default/svnserve.

Last updated on 2016-06-09 05:56:23 +0200