ホームサーバーからrsnapshotを使用してリモートバックアップをセットアップしようとしています。サーバーをラップトップに接続し、SSH経由でバックアップを取得します。すべてが正しく設定されていて、サーバーからラップトップに完全に接続できます。
問題は、(サーバーから)Sudo rsnapshot -v hourly
を実行すると、権限エラーが発生することです。
...
rsync: opendir "/foo/bar" failed: Permission denied (13)
...
ラップトップに別のbackup
ユーザーを作成し、sshを介してこのユーザーに接続しています。これは、rsnapshotが使用している私の~/.ssh/config
です。
Host macbookpro
HostName macbookpro
PreferredAuthentications publickey
User backup
Identity File ~/.ssh/keys/macbookpro.id_rsa
また、ラップトップのsudoersファイルに以下を追加しました。これにより、rsnapshotからリモートで呼び出されたときに、rsyncをrootとして実行できるようになります。
backup ALL=(root) NOPASSWD: /usr/bin/rsync
しかし、rsnapshotを実行するたびに、権限エラーが発生し続けます。誰かが何が悪いのか見ていますか?
わかりました。私のラップトップをぶらぶらして、rsync
コマンド(rsnapshot
は通常ssh経由で呼び出す)をbackup
ユーザーとして手動で実行しようとしましたが、ローカルで権限エラーが発生していることに気付きました同じように。
ユーザーがパスワードなしで特定のバイナリを実行することを明示的に許可するエントリがsudoersファイルにある場合でも、実際にコマンドの前にSudo
を付ける必要があります。 (私はMacbookを使用しているので、これがOSXに特有のものかどうかはわかりません)
rsnapshot.conf
でこれを行うための良い方法はないようだったので、 このチュートリアル の指示に従いました
ラップトップでrsync_Sudo.sh
というファイルを作成し、以下を追加しました。
/usr/bin/Sudo /usr/bin/rsync "$@";
次に、それを/usr/bin/
にシンボリックリンクし、サーバーに戻って、次のコードを/etc/rsnapshot.conf
に追加しました。
rsync_long_args --rsync-path=rsync_Sudo.sh --delete --numeric-ids --relative --delete-excluded
そして今、すべてが働いているようです