Table des matières
Rsync sous ubuntu avec sudo des deux cotés
Ubuntu ne propose pas de compte root donc pour faire un “rsync [options] root@machine1:/chemin1/ root@machine2:/chemin2/” les choses se compliquent un peu.
rsync ne permet pas ce fonctionnement ou la source et la destination sont deux machines distinctes, il s'agit d'une commande conceptuelle :p
Pas de panique, c'est tout de même possible de faire ce rsync :
Methode 1 - sudo temporaire
Préparation
Se logguer sur la machine cible, et s'accorder les droits de sudo sur rsync avec son utilisateur :
- lancer la commande sudo visudo :
monUser@machine-cible:~$ sudo visudo
- Ajouter la ligne :
monUser ALL=NOPASSWD: /usr/bin/rsync
- Enregistrer et quitter l'editeur
Copie des données
- Se connecter sur la machine source
- Lancer la commande suivante pour lancer le transfert :
monUser@machine-source:~$ sudo rsync -avrp -t -e 'ssh -l monUser' --rsync-path "sudo rsync" /chemin1/ machine-cible:/chemin2/
Il faut bien sur adapter les options et les chemins à ce que vous voulez faire
Ca y est on a réussi a rsync des fichiers locaux que seul l'utilisateur root peut lire vers une machine distante ou seul l'utilisateur root peut ecrire
Merci ubuntu
Methode 2 - ssh-agent
Utiliser ssh-agent pour faire ce rsync :
- se connecter a la machine cible en forwardant l'authentification la connexion a l'agent SSH depuis son poste :
ssh monUser@machine-cible -A
- sur la machine cible, récupérer et exporter le chemin du socket ssh-agent :
monUser@machine-cible:~$ env | grep SSH_AUTH_SOCK
- lancer un shell root en sudo :
monUser@machine-cible:~$ sudo -s
- faire un export de cette variable, comme par exemple :
machine-cible:~# export SSH_AUTH_SOCK=/tmp/ssh-LaSyd12725/agent.12725
- il suffit ensuite de faire le rsync come si de rien n'etait :
machine-cible:~# rsync -avrp -t machine-source:/chemin1/ /chemin2/
Cette méthode a l'avantage de ne pas devoir mettre un sudo temporaire pour ce rsync