Cette section décrira la façon de paramétrer, administrer et sécuriser 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 dans les étapes suivantes :
Vous devrez être l'utilisateur root
pour la partie initiale de la
configuration. Créez l'utilisateur et 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écjé à 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}
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.
Avec subversion-1.1.0 et supérieur, un nouveau type de dépôt de stockage de données est disponible, FSFS. Il y a un échange pour plus de vitesse avec la nouvelle fondation, cependant on peut mettre maintenant le dépôt sur un montage réseau, et toute corruption n'a pas besoin d'admin pour récupérer le dépôt. Pour plus d'informations et par comparaison avec FSFS et BDB, voir http://svnbook.red-bean.com/svnbook-1.1/ch05.html#svn-ch-5-sect-1.2.A.
Créez un nouveau dépôt Subversion avec les commandes suivantes :
install -v -m 0755 -d /srv && install -v -m 0755 -o svn -g svn -d /srv/svn/repositories && svnadmin create --fs-type fsfs /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 présentation de
répertoire prédéfinie paramétrée ressemblant exactement à 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/ # Contient l'arborescence des sources existantes
BOOK/
bootscripts/
edguide/
patches/
scripts/
branches/ # Nécessaire pour des branches supplémentaires
tags/ # Nécessaire pour tagguer les points de versions
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." \
</chemin/vers/arborescence/source>
\
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'authentication.
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'authentication 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/
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.
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
est nécessaire. Jetez un œil sur le fichier svnserve.conf.default
pour des informations sur
l'utilisation de la méthode d'authentication de svnserve intégrée.
Il y a deux manières démarrer svnserve. La façon la plus habituelle est de le lancer comme processus inetd ou xinetd. Vous pouvez aussi utiliser un script de démarrage pour lancer le service au démarrage.
Si vous ne souhaitez pas fournir d'accès anonyme à vos dépôts svn ou si vous utilisez l'authentication intégrée de svnserve, vous n'avez pas besoin de lancer le script svnserve.
Si vous utilisez inetd, ajoutez une ligne à
/etc/inetd.conf
en utilisant les
commandes suivantes :
cat >> /etc/inetd.conf << "EOF"
svn stream tcp nowait svn /usr/bin/svnserve svnserve -i
EOF
Si vous utilisez xinetd, la commande suivante
créera le fichier serveur Subversion en tant que fichier /etc/xinetd.d/svn
:
cat >> /etc/xinetd.d/svn << "EOF"
# Début de /etc/xinetd.d/svn
service svn
{
port = 3690
socket_type = stream
protocol = tcp
wait = no
user = svn
server = /usr/bin/svnserve
server_args = -i -r /srv/svn/repositories
}
# Fin de /etc/xinetd.d/svn
EOF
Enfin, si vous souhaitez simplement démarrer le serveur au démarrage, installez le script de démarrage svn inclus dans le paquet blfs-bootscripts-20111226.
make install-svn
Last updated on 2011-11-16 05:12:05 +0100