[linux] 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。

トラックバック(0)

このブログ記事を参照しているブログ一覧: rsync and sudo over SSH

このブログ記事に対するトラックバックURL: http://www.pistolfly.jp/mt/mt-tb-alt.cgi/873

コメントする