#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,
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:
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:
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
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