web-dev-qa-db-fra.com

Échec du rsnapshot à distance avec l'erreur "Autorisation refusée"

J'essaie de configurer des sauvegardes à distance avec rsnapshot à partir de mon serveur domestique. Je veux que mon serveur se connecte à mon ordinateur portable et effectue des sauvegardes via SSH.Tout est correctement configuré et je peux me connecter parfaitement de mon serveur à l'ordinateur portable.

Le problème est que j'obtiens une erreur d'autorisation lorsque j'exécute Sudo rsnapshot -v hourly (depuis le serveur):

...
rsync: opendir "/foo/bar" failed: Permission denied (13)
...

J'ai créé un utilisateur backup distinct sur mon ordinateur portable et je me connecte via ssh avec cet utilisateur. C'est mon ~/.ssh/config que rsnapshot utilise:

Host macbookpro
    HostName macbookpro
    PreferredAuthentications publickey
    User backup
    Identity File ~/.ssh/keys/macbookpro.id_rsa

J'ai également ajouté ce qui suit à mon fichier sudoers sur mon ordinateur portable qui devrait permettre à rsync de s'exécuter en tant que root lorsqu'il est appelé à distance par rsnapshot:

backup  ALL=(root)      NOPASSWD:       /usr/bin/rsync

pourtant, chaque fois que je lance rsnapshot, je continue à recevoir des erreurs d'autorisation. Quelqu'un voit-il ce qui ne va pas?

1
Timmy O'Mahony

Ok, on dirait que je l'ai compris. En fouillant sur mon ordinateur portable, j'ai essayé d'exécuter manuellement la commande rsync (que rsnapshot invoquerait normalement sur ssh) en tant qu'utilisateur backup et j'ai remarqué que j'obtenais des erreurs d'autorisation localement ainsi que.

Il semble que même si vous avez l'entrée dans votre fichier sudoers pour autoriser explicitement un utilisateur à exécuter un certain binaire sans mot de passe, vous devez toujours préfacer votre commande avec Sudo. (Je suis sur un macbook donc je ne sais pas si c'est particulier à OSX)

Il ne semblait pas y avoir de bon moyen de le faire dans rsnapshot.conf donc j'ai suivi les instructions de ce tutoriel

J'ai créé un fichier sur mon ordinateur portable appelé rsync_Sudo.sh et a ajouté ce qui suit:

/usr/bin/Sudo /usr/bin/rsync "$@";

puis l'a lié à /usr/bin/ et de retour sur mon serveur, j'ai ajouté ce qui suit à /etc/rsnapshot.conf:

rsync_long_args         --rsync-path=rsync_Sudo.sh --delete --numeric-ids --relative --delete-excluded

et maintenant tout semble fonctionner

0
Timmy O'Mahony