Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 02/09/2013, à 18:19

tintinux

les usernames ne se conservent pas avec rsync -a

Bonjour

Je lance une sauvegarde par rsync depuis un utilisateur "simple" sur une machine client, vers un serveur sur lequel rsync s'exécute en root.

La commande sur le client est du genre :

rsync -azv --delete "/home/username/Documents/Dossier" serveur.com::sauve_username/

sur le serveur il y a dans /etc/rsyncd.conf

uid = root
gid = root

[sauve_username]
   path = /home/username/Documents
   comment = Sauvegarde fichiers username
   read only = false

L'uid de l'username sur le serveur n'est pas le même que l'uid sur le client.

J'ai cru comprendre qu'avec l'option -a de rsync, qui implique -o  les username était conservés de la source vers la destination.
Pourtant, ce n'est pas du tout le cas.
Les fichiers sont créés sur le serveur avec des username propriétaires tout à fait différents de ceux du client.
Ce n'est même pas comme si se basait sur les uid, cela parait aléatoire (j'ai des propriétaires root, et aussi des propriétaires qui  existent seulement sur le serveur, pas sur le client, aussi bien en username qu'en uid...

Donc, qu'est-ce que j'ai loupé ?

Que veut dire "super user only" pour la commande -o. Quand même pas que ça ne marche que si l'user du client est le super-utilisateur ? Cela parait très restrictif !

Faut-il mieux se débrouiller pour que les uid soient identiques sur les deux machines et spécifier l'option  --numeric-ids ?

Merci pour vos lumières et retours d'expérience !


Ubuntu-MATE 22.04 sur 5 machines de la famille.
Développeur d'applications, dont Gestinux, une compta-gestion libre, multi-plateforme et multi-langues, connectable à une base MySQL, MariaDb ou PostgreSQL, locale ou distante.

Hors ligne

#2 Le 03/09/2013, à 08:06

AlexandreP

Re : les usernames ne se conservent pas avec rsync -a

Bonjour,

tintinux a écrit :

Que veut dire "super user only" pour la commande -o. Quand même pas que ça ne marche que si l'user du client est le super-utilisateur ? Cela parait très restrictif !

Non, en effet. Selon l'information qui peut être trouvée dans le manuel de rsync, il faut que sur la machine serveur, rsync fonctionne en tant que root.

       -o, --owner
              This option causes rsync to set the  owner  of  the  destination
              file  to be the same as the source file, but only if the receiv‐
              ing rsync is being run as the super-user (see also  the  --super
              and  --fake-super  options).   Without this option, the owner of
              new and/or transferred files are set to the invoking user on the
              receiving side.

              The  preservation  of ownership will associate matching names by
              default, but may fall back to using the ID number in  some  cir‐
              cumstances (see also the --numeric-ids option for a full discus‐
              sion).

Et du côté du manuel de rsyncd.conf:

LAUNCHING THE RSYNC DAEMON
       The  rsync  daemon  is  launched  by  specifying the --daemon option to
       rsync.

       The daemon must run with root privileges if you wish to use chroot,  to
       bind  to  a port numbered under 1024 (as is the default 873), or to set
       file ownership.  Otherwise, it must just have permission  to  read  and
       write the appropriate data, log, and lock files.

«La capacité d'apprendre est un don; La faculté d'apprendre est un talent; La volonté d'apprendre est un choix.» -Frank Herbert
93,8% des gens sont capables d'inventer des statistiques sans fournir d'études à l'appui.

Hors ligne

#3 Le 03/09/2013, à 13:34

tintinux

Re : les usernames ne se conservent pas avec rsync -a

Bon, merci pour cette confirmation.

Mais alors, pourquoi mes usernames ne sont pas conservés ?

Est-ce que sur mon serveur, rsync ne fonctionnerait pas en tant que root ?
Il ne suffit pas de mettre ce qui suit dans  /etc/rsyncd.conf, ou il y a autre chose à faire ?

uid = root
gid = root

Merci pour vos lumières...


Ubuntu-MATE 22.04 sur 5 machines de la famille.
Développeur d'applications, dont Gestinux, une compta-gestion libre, multi-plateforme et multi-langues, connectable à une base MySQL, MariaDb ou PostgreSQL, locale ou distante.

Hors ligne

#4 Le 04/09/2013, à 06:26

AlexandreP

Re : les usernames ne se conservent pas avec rsync -a

Re,

Je n'ai malheureusement pas d'expérience avec rsync fonctionnant en tant que service.

D'après ma lecture du manuel de rsyncd.conf:

tintinux a écrit :

Il ne suffit pas de mettre ce qui suit dans  /etc/rsyncd.conf, ou il y a autre chose à faire ?

uid = root
gid = root

Non. Ces options permettent de définir à qui attribuer la propriété des fichiers transférés lorsque le service rsync est exécuté par root.

Un exemple trouvé sur le Net et qui met davantage en lumière les effets de ces options: imaginons un utilisateur juan qui souhaite partager le répertoire Documents/ de son dossier personnel (donc /home/juan/Documents/).

[documents]
    path = /home/juan/Documents
    comment = The documents folder of Juan
    uid = juan
    gid = juan

Si le service rsync est exécuté par root, alors les options uid et gid indiqueront à rsync d'attribuer la propriété de tous les fichiers téléchargés dans le dossier à l'utilisateur et au groupe juan.



Autre point que je remarque:

tintinux a écrit :

J'ai cru comprendre qu'avec l'option -a de rsync, qui implique -o  les username était conservés de la source vers la destination.

Quelqu'un pourra sans doute confirmer (comme je dis, je n'ai pas d'expérience en la matière), mais je crois comprendre que le compte d'utilisateur doit exister aussi dans le serveur, même s'il n'a pas le même UID. Si je décode bien le manuel:
- rsync tente d'associer les usernames s'ils existent. Si les UID diffèrent, rsync va mettre à jour l'UID sur le serveur pour faire correspondre avec le username;
- si le username n'existe pas, rsync tente d'associer avec le UID identique côté client et serveur;
- sinon, il tente d'associer le fichier à root.
(Sous toute réserve que j'aie bien décodé le manuel...)


«La capacité d'apprendre est un don; La faculté d'apprendre est un talent; La volonté d'apprendre est un choix.» -Frank Herbert
93,8% des gens sont capables d'inventer des statistiques sans fournir d'études à l'appui.

Hors ligne

#5 Le 07/09/2013, à 19:15

tintinux

Re : les usernames ne se conservent pas avec rsync -a

AlexandreP a écrit :

Non, en effet. Selon l'information qui peut être trouvée dans le manuel de rsync, il faut que sur la machine serveur, rsync fonctionne en tant que root.

J'ai vérifié que le process rsync s'exécute bien en tant que root.

root      3381     1  0 Aug28 ?        00:00:00 /usr/bin/rsync --no-detach --daemon --config /etc/rsyncd.conf

La documentation n'est toutefois pas très claire. Elle ne parle pas de root mais de super-user, je suppose que c'est la même chose.
Elle mentionne une option --super, mais qui ne s'applique pas au mode serveur. est-elle implicite en mode serveur ?

Et pourtant l'option -o n'est correctement prise en compte. Je précise bien que les fichiers copiés sont attribués à des utilisateurs parfois différents de root, et généralement différents du propriétaire sur la source.

Si elle n'était pas du tout prise en compte, tous les fichiers copiés seraient attribués à root, non ?

Donc si quelqu'un peut m'éclairer, il est le bienvenu !


Ubuntu-MATE 22.04 sur 5 machines de la famille.
Développeur d'applications, dont Gestinux, une compta-gestion libre, multi-plateforme et multi-langues, connectable à une base MySQL, MariaDb ou PostgreSQL, locale ou distante.

Hors ligne

#6 Le 08/09/2013, à 00:38

AlexandreP

Re : les usernames ne se conservent pas avec rsync -a

Peut-être pourrais-tu donner un exemple d'un dossier synchronisé dont les fichiers sont attribués à des utilisers différents? La première commande pour afficher une liste longue est fichiers avec les informations textuelles concernant les propriétaires et groupes; la seconde commande pour afficher une liste longue est fichiers avec les informations numériques concernant les propriétaires et groupes.

ls -l /chemin/vers/dossier
ls -l --numeric-uid-gid  /chemin/vers/dossier

À faire sur la source et la destination, afin de comparer.


«La capacité d'apprendre est un don; La faculté d'apprendre est un talent; La volonté d'apprendre est un choix.» -Frank Herbert
93,8% des gens sont capables d'inventer des statistiques sans fournir d'études à l'appui.

Hors ligne

#7 Le 08/09/2013, à 11:07

tintinux

Re : les usernames ne se conservent pas avec rsync -a

Bon, après vérification, il semble que le mapping se fasse uniquement sur l'uid, pas sur le  nom d'utilisateur.
J'ai changé certains uid et gid sur le serveur, pour qu'il y ait les mêmes que sur le client, et maintenant ça colle.
Pourtant la documentation indique qu'il y a par défaut un mapping sur le nom, et je ne mets pas l'option qui force le mapping numérique.
Dans d'autres cas de synchronisation, sans serveur, mais avec des différences d'uid, le problème ne se produit pas.

Affaire classée pour moi, mais non résolue.
Merci pour ton aide.


Ubuntu-MATE 22.04 sur 5 machines de la famille.
Développeur d'applications, dont Gestinux, une compta-gestion libre, multi-plateforme et multi-langues, connectable à une base MySQL, MariaDb ou PostgreSQL, locale ou distante.

Hors ligne