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?
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