Installer un serveur rsync
Auteur : Olivier BOYER - oboyer () ajoute ! org
Mots clés
rsync, rsyncd, serveur, daemon, OpenBSD
Introduction
Ce document présente comment installer et configurer rsync pourqu'il s'exécute en mode serveur. Le produit est installé sur un système OpenBSD.
L’outil rsync, développé par Andrew Tridgell (initiateur du projet SAMBA) et Paul Mackerras du Département Informatique de l'Université Nationale Australienne à Canberra, est l’implémentation client-server du protocole de même nom. Son développement a commencé en 1997 et se continue toujours.
rsync(1) est un remplaçant simple et flexible de rcp(1). Le protocole RSYNC permet de ne transférer que la différence entre deux jeux de fichiers, la reprise sur erreurs, … Les connexions réseaux sont établies par défaut sur le port TCP 873.
Présentation de la maquette
- Un serveur rsync sur un système OpenBSD 4.1
Note
Toutes les commandes présentées ici, sont à exécuter, sauf mention contraie, en tant qu'administrateur de la machine.
Pré-requis
- Le système OpenBSD installé et fonctionnel.
Installer rsync
Installer le package
Pour installer rsync via les packages binaires d'OpenBSD, exécutez les commandes suivantes :
# PKG_PATH="ftp://ftp.irisa.fr/pub/OpenBSD/$(uname -r)/packages/$(uname -m)/" # export PKG_PATH # pkg_add rsync
Créer un utilisateur dédié
Dans cette maquette, rsync s'exécute sous l'identité d'un utilisateur dédié : _rsyncd. Pour créer cet utilisateur, procédez comme suit :
# useradd -m -c "rsync pseudo-user" -b "/var/empty" \ -s /sbin/nologin -u 873 -g =uid _rsyncd
Configurer rsync
Editer le fichier /etc/rsyncd.conf
#/etc/rsyncd.conf
# see rsyncd.conf(5)
#
## Global settings
uid = _rsyncd
gid = _rsyncd
use chroot = yes
read only = yes
max connections = 4
syslog facility = daemon
pid file = /var/run/rsyncd.pid
secrets file = /etc/rsyncd.secrets
strict modes = yes
#
## Shares
[foo]
path = /share/foo
comment = "foo share"
auth users = userfoo
[bar]
path = /share/bar
comment = bar
auth users = "bar share"
#EOF
Créer le fichier /etc/rsyncd.secrets
Ce fichier contient les utilisateurs du service de transferts de fichiers, et les mots de passe en clair.
Créez comme suit le fichier /etc/rsyncd.secrets :
#/etc/rsyncd.secrets # see rsyncd.conf(5) #user:password userfoo:pa$$w0rd # EOF
Fixer les permissions
# chown root:wheel /etc/rsyncd.conf # chmod 644 /etc/rsyncd.conf # # chown root:_rsyncd /etc/rsyncd.secrets # chmod 640 /etc/rsyncd.secrets
Intégrer le service au système
Créer un script de démarrage
Pour arrêter et redémarrer rsynd de manière simple, créez un script de démarrage.
Pour ce faire, créez le répertoire /etc/rc.d comme suit :
# mkdir /etc/rc.d # chown root:wheel /etc/rc.d # chmod 750 /etc/rc.d
Puis, créez comme suit, le fichier de démarrage /etc/rc.d/rsyncd.
Et enfin, positionnez les permissions :
# chown root:wheel /etc/rc.d/rsyncd # chmod 740 /etc/rc.d/rsyncd
Modifier le fichier /etc/rc.conf.local
Pour gérer le service, ajoutez la ligne suivante à la fin du fichier /etc/rc.conf.local :
# Start rsyncd rsyncd_flags="--daemon -4" # for normal use: "--daemon"
Modifier le fichier /etc/rc.local
Pour lancer automatiquement le service au démarrage de la machine, ajoutez les lignes suivantes au début du fichier /etc/rc.local :
# Start rsyncd
if [ -x /etc/rc.d/rsyncd ]; then
echo -n ' rsyncd'; /etc/rc.d/rsyncd start >/dev/null
fi
Modifier le fichier /etc/rc.shutdown
Pour arrêter le service à l'arrêt de la machine, ajoutez les lignes suivantes à la fin du fichier /etc/rc.shutdown :
# Stop rsyncd
if [ -x /etc/rc.d/rsyncd ]; then
echo -n ' rsyncd'; /etc/rc.d/rsyncd stop >/dev/null
fi
Modifier le fichier /etc/changelist
Pour que le système OpenBSD surveille les modifications apportées au script de démarrage et aux fichiers de configuration du service, ajoutez les lignes suivantes au fichier /etc/changelist :
/etc/rc.d/rsyncd /etc/rsyncd.conf /etc/rsyncd.secrets
Exemples d'utilisation
Sur une machine distante, pour copier le contenu d'un partage, exécutez la commande suivante :
rsync <options> <utilisateur>@<serveur_rsync>::<nom_du_partage>
Par exemple :
$ cd /tmp $ rsync -av userfoo@<serveur_rsync>::foo .
Si vous avez déjà une copie locale du partage, et que vous voulez le mettre à jour, utilisez la commande ci-dessous :
$ cd /tmp $ rsync -av --delete userfoo@<serveur_rsync>::foo .