Unison

De Wiki doc

EN CHANTIER

Article en cours d'écriture et/ou de test. Certains éléments peuvent être incomplets et mener à un résultat non fonctionnel.
Merci de ne pas rager.

Unison est un outil permettant la synchronisation bi-directionnelle de fichiers via SSH (entre deux machines donc). Il est utilisé pour faire un miroir des fichiers de nos dépôts entre le site https://doc.ycharbi.fr et https://doc.lesmorin.fr.

La procédure suivante explique comment mettre en place la même architecture que sur notre Wiki. À adapter à vos besoins.

Sur les deux machines

Préparation

Création d'un utilisateur unison.

adduser unison

Création et échange des clés SSH

Se référer à l'article dédié.

Installation et configuration

Installation du paquet

apt install unison

ATTENTION

Les versions d'Unison doivent être identique des deux cotés du serveur.

Se connecter à l'utilisateur unison

su - unison -s /bin/bash

INFORMATION

Des deux machines, une seul exécutera la commande unison, nous l’appellerons maître et l'autre esclave.

Fichier de configuration machine maître

mkdir ~/.unison
vim ~/.unison/default.prf
#j'indique le chemin racine à synchroniser
root = /var/www/
#Je limite la synchronisation à ces deux répertoires
path = ./fichiers/
path = ./mediawiki/images/
#j'indique le chemin du dossier distant
root = ssh://unison@mediawiki2//var/www/

# Options du journal
log = true
logfile = /home/unison/.unison/logunison

#zap les permissions
perms = 0

#synchro des dates
times = true

batch = true

Exécuter la première synchronisation

Cela aura pour effet de créer les fichiers nécessaires tant du coté maître que esclave dans leur ~/.unison respectifs.

unison

Droit d'accès

Nous utilisons les ACL afin d'autoriser l'utilisateur unison et www-data à accéder aux images synchronisés (car Mediawiki exige d'avoir tout les droits sur ces fichiers).

Installation du paquet

apt install acl

Application des acl sur les répertoires à synchroniser

setfacl -bR /var/www/mediawiki/images/
setfacl -dRm g:www-data:rwx,g:unison:rwx,o:--- /var/www/mediawiki/images/
setfacl -Rm g:www-data:rwx,g:unison:rwx,o:--- /var/www/mediawiki/images/

Sécurisation

Authentification

Shell de connexion

Afin d'empêcher la connexion à l'utilisateur unison pour autre chose que la synchronisation de nos fichiers, nous allons limiter leur shells respectifs. Machine maître

vim /etc/passwd

Dans le dernier champ Gecos de l'utilisateur unison, changer /bin/bash par /usr/sbin/nologin.

unison:x:1000:1000:,,,:/home/unison:/usr/sbin/nologin

Nous allons également supprimer le mot de passe afin d'être sur de désactiver l'authentification sur cet utilisateur.

vim /etc/shadow

Dans le deuxième champ Gecos de l'utilisateur unison, supprimer l'ancien mot de passe hashé et le remplacer par un *.

unison:*:17422:0:99999:7:::

Machine esclave

Parler de LSHELL.

Session SSH

Nous allons limiter les accès SSH au seul utilisateur unison afin de ne pas avoir de surprise.

vim /etc/ssh/sshd_config

Ajouter cette directive

AllowUsers unison

Recharger le service SSH

systemctl reload ssh.service