rsync and sudo over SSH

rsync and sudo over SSH « crashingdaily
sudo + rsync | きぬろぐ
rsyncでリモートサーバのバックアップを取る場合に、バックアップするユーザに権限がないファイルやディレクトリのバックアップが取れない。
取れるようにするためには、rsyncをsudoで実行すればよい。
まずバックアップされるサーバ側で、バックアップユーザがsudoできるようにする。

# visudo

で、/etc/suduersに以下を加える。

backup ALL= NOPASSWD:/usr/bin/rsync

バックアップされるサーバ側で、.ssh/authorized_keysのcommandオプションでsshで実行できるコマンドを制限している場合は、
sudo\ rsync\ --server
も許可するようにする。
そして、rsync実行時のオプションに

--rsync-path="sudo rsync"

を追加する。
さて、これで設定はOKなはずなので、この状態でバックアップサーバからバックアップを実行すると、、、

sudo: sorry, you must have a tty to run sudo

というエラーになる。
これは、バックアップされるサーバ側の/etc/sudoers ファイルで、'requiretty' フラグがデフォルトで設定されているから。このフラグが設定されている場合、ログインしているユーザ以外はsudoできない。つまり、sshやrsh経由のリモートでのsudoコマンドの実行が許可されない。
Red Hat Knowledgebase: ssh 経由で sudo コマンドを実行すると、tty エラーとなります。
これを回避するには、sudoersでrequirettyフラグを設定しないようにする。

# visudo

で、/etc/sudoers の以下の行をコメントアウト。

#Defaults    requiretty

これで、OK。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください