web-dev-qa-db-ja.com

リモートのrsnapshotが「Permission denied」エラーで失敗する

ホームサーバーから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を実行するたびに、権限エラーが発生し続けます。誰かが何が悪いのか見ていますか?

1
Timmy O'Mahony

わかりました。私のラップトップをぶらぶらして、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

そして今、すべてが働いているようです

0
Timmy O'Mahony