Synology [Tuto] Synchro du dossier partagé / RSYNC - Préserver les permissions

Oyeee

Nouveau membre
30 Juillet 2019
11
0
0
Bonjour à tous, en préambule je souhaite exprimer ma reconnaissance pour l'aide précieuse de FX Cachem afin de pallier un bug jamais corrigé par Synology (qui se contente de dire qu'il faut utiliser 'admin' pour les synchros) : RSYNC faisant sauter les permissions définies sur un dossier cible après une première synchronisation, laissant ensuite exclusivement l'utilisateur 'admin' y accéder (alors qu'on conseille partout de désactiver ce compte), et donc ainsi interdire les synchronisations suivantes si vous n'utilisiez pas admin comme utilisateur pour cette tâche !


synchro.jpg


Je prends donc à présent le temps de contribuer en guise de remerciement, afin que les novices comme moi dans le monde linux, qui exploitent pourtant allègrement au quotidien des NAS sans toucher à une seule ligne de code, puissent gagner du temps et des cheveux quand ils n'en peuvent plus des synchronisations aléatoires et messages d'erreur inopinés ? L'objectif de ce mini tuto n'est pas de mâcher les préliminaires pour présenter les fonctions, etc.. mais simplement vous aider à l'étape "j'en ai marre, ça ne marche pas" ?


2nas.jpg


Ainsi le but est de réussir à cloner (synchroniser) un dossier sur deux NAS : donc que "MONDOSSIER" sur le NAS 1 soit répliqué sur le NAS 2, et qu'à chaque fois que je rajoute des fichiers ou réorganise "MONDOSSIER" sur le NAS 1, ce soit répercuté sur le NAS 2. A noter tout de suite que lorsqu'on supprime un fichier sur le NAS 2 (alors qu'il est encore sur le NAS 1), rsync ne le rajoutera pas à nouveau ensuite lors des prochaines synchronisations. Il faut donc considérer ce système comme une synchronisation unidirectionnelle et ne pas toucher le dossier cible répliqué ensuite (sauf pour vérifier que tout va bien dedans). Évidemment pour éviter les pertes, on ne peut pas se satisfaire d'un dossier synchronisé, puisque si vous supprimez un fichier ou qu'un virus / ransomware infecte le NAS 1, alors le NAS 2 propagerait machinalement les dégâts ensuite ! C'est pourquoi il faudra sur le NAS 2 régulièrement effectuer des sauvegardes avec HyperBackup, ne serait-ce que localement (sans support externe), au minimum.

Pour finir cette intro, je précise que rsync reste la solution (hélas) la plus fiable à ce jour, contrairement à Cloud Station et compagnie qui parfois ne synchronisent rien et sans rien dire... Et non, on ne veut pas passer par Windows ou autre logiciel PC, il s'agit là de rester sur le NAS :-|

Concrètement il faut faire ainsi déjà pour s'assurer de la réussite de la synchronisation :

  • créer un utilisateur avec droits d'administrateur (exigé par rsync), par exemple "BOB", sur le NAS 2 (appareil cible)
  • donner l'autorisation (Panneau de configuration -> Privilèges) pour rsync à cet utilisateur "BOB", toujours sur le NAS 2
  • créer un dossier partagé, par exemple "MONDOSSIER", sur le NAS 1 (appareil source) et y mettre quelques fichiers de test uniquement*
  • ne surtout PAS créer le même utilisateur "BOB" sur le NAS 1, sinon les permissions du dossier cible sauteront à chaque sync (bug Synology jamais résolu)
  • ne PAS créer le dossier cible sur le NAS 2, laisser rsync le créer lors de la première synchronisation effectuée par le NAS 1
  • après la première synchronisation manuelle faite pour tester (bouton "synchronisation complète" ou "synchronisation", depuis le NAS 1 donc) monter le dossier cible sur le NAS 2
  • et toujours sur le NAS 2 donner les permissions pour le dossier cible à l'utilisateur de rsync ("BOB" dans notre exemple)
  • sur le NAS 1 ne plus jamais faire de "synchronisation complète" (bouton dans la rubrique dédiée sur le NAS 1) !
  • une "synchronisation complète" écrase le dossier cible et fait sauter les permissions (il faudrait alors les redéfinir sur le NAS 2 après avoir remonté le dossier)
  • avec une "synchronisation" (manuelle ou planifiée), donc pas "complète", les permissions sont préservées (pour la première exécution, mais voir plus loin la solution), et le dossier cible reste monté (obligatoire pour l'accès Hyperbackup en parallèle)
  • synchroniser sur modification semble gêner parfois, privilégier une planification quotidienne la nuit dans ce cas
  • activer la compression semble poser problème avec les gros fichiers de plusieurs gigas, il faut essayer sans compression alors
  • quand tout votre système fonctionne (ajoutez des fichiers sur le NAS 1, synchronisez manuellement, et vérifiez que tout est ok sur le NAS 2), vous pouvez utiliser le tout
  • si vous aviez déjà un dossier partagé rempli et que votre intention était de le synchroniser, alors c'est le moment de déplacer ses fichiers dans votre nouveau dossier prêt à l'emploi*
  • mettre en place une sauvegarde hyperbackup multi version (donc pas "mono version") pour faire une copie régulière du dossier synchronisé et avoir plusieurs exemplaires au cas où
  • créer pour cela un dossier partagé chiffré sur le NAS 2 afin d'y sauvegarder le dossier synchronisé
  • ne pas "chiffrer client" puisque dossier de stockage déjà chiffré malgré le message du syno - enfin, c'est vous qui voyez
  • avec hyperbackup les fichiers sont explorables uniquement sur le NAS via l'explorateur spécifique de l'application. Donc c'est galère, mais vos fichiers sont bien accessibles en clair et copiables / restaurables

* l'idée c'est de s'assurer que tout fonctionne avant de faire du réel, car si vous avez des téras de données, bonjour le temps qu'il faudrait pour être sûr que tout est ok lors des tests

Problème : après la première exécution par le planificateur, les permissions sautent donc ! C'est là qu'il y a deux astuces au choix pour rétablir la donne :-D La première est de passer par un CHOWN + CHMOD, mais avec la frustration de ne pas voir cocher les ptites cases dans l'interface du DSM sur le dossier concerné. La seconde est finalement LA solution : passer par une commande peu connue (et là c'est un scoop, puisque moi qui n'y connais rien, j'ai pu trouver ça tout seul comme un grand) : synoacltool ! Voilà donc le code magique qui fait ce qu'on attendait* :

Code:
synoacltool -add /volume1/MONDOSSIER user:BOB:allow:rwxpdDaARWc--:fd--
synoacltool -add /volume1/MONDOSSIER user:MAX:allow:rwxpdDaARWc--:fd--

* comme visible dans l'aide fournie par FX Cachem (voir lien en haut de ce tuto), le code est à mettre dans le troisième onglet de la tâche planifiée

NB : plus d'infos pour connaître les options ici ou simplement en faisant un synoacltool -help ** et je précise qu'il n'y a pas besoin d'activer sur le NAS les autorisations avancées puisque depuis DSM 6 les dossiers sont en ACL directement (à noter que j'ai lu quelque part que ce n'est pas le cas si on est en ext3 (les experts comprendront - ce qui implique un reformatage de partition et compagnie) et que si à l'origine le dossier a été créé sous DSM 5 ça peut poser souci, même si vous avez fait la conversion en ACL dans les paramètres du dossier).

** idem : à faire dans une tâche planifiée avec envoi du rapport par email, vous aurez ainsi le résultat de l'opération sans ouvrir je ne sais quelle console SSH / Putty et compagnie :cool:

L'objectif étant donc de réassigner les droits en lecture et écriture pour notre utilisateur BOB, voire pour MAX aussi dans la foulée, et avoir à nouveau ce résultat après le passage perturbateur de rsync :


permissions.jpg


Bon, sur la capture on voit que j'ai viré manuellement les autorisations pour admin, vu que rsync les remet à chaque fois. Si vous voulez le même résultat il suffit d'ajouter une ligne de code pour enlever les permissions. Logiquement (je n'ai pas testé - à utiliser prudemment) ça donnerait :

Code:
synoacltool -add /volume1/MONDOSSIER user:admin:deny:rwxpdDaARWcCo:fd--

Voilà, il suffit donc, sans sortir de l'interface du DSM, d'utiliser le planificateur de tâches pour repasser derrière rsync à chaque fois automatiquement ;) Ce tuto était modeste, si quelqu'un veut l'améliorer et l'illustrer d'avantage, à votre bon coeur !

:geek:
 
Bonjour,
belle lecture
donc si je comprend bien, deux taches pour rsync si synchro quotidienne
1/ tache de synchro à 3h du matin
2/ tache de reaffectation des droits en suivant

ArnaudBD
 
Bonjour,
A ce jour, j'ai un DS213+ en DSM 6.2 et un DS918+ en DSM7.

J'ai activé le serveur rsync sur mon 213+, et je fais une réplication depuis mon 918+ vers mon 213+.
A la fin de la réplication, je constate que seul les administrateurs peuvent lire le dossier sur la cible.
Je positionne les droits pour un groupe dans les permissions avancées du dossier, et là tout fonctionne... Jusqu'à la réplication suivante...

La commande synoacltool semble gérer les droits sur le dossier, mais pas les droits avancés.
Quelle est la commande pour positionner ces droits avancés svp ?

Merci d'avance.