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。