cron処理内で別ユーザ権限でコマンドを実行する方法

バックアップ用のシェルスクリプトを書きました。

でも、、

直接実行した場合は想定通りに動きましたが
cronで実行した場合に途中で処理が失敗してしまいます。。


調べてみると

/var/log/secure に

sorry, you must have a tty to run sudo

というエラーメッセージが出力されてました。


どうやらデフォルトの設定では
tty上でしかsudoは使えないようです。

使うためには /etc/sudoers を下記のように
変更する必要があるようです。

※visudo で編集

# 下記をコメントアウトする
# Defaults requiretty

今回は上記sudoの設定変更ではなく
下記のようにsuを使うようにして対処しました。

sudo rsync rsync -avz -e ssh ...

su rsync -c "rsync -avz -e ssh ..."

に変更。

rsyncユーザになって -c で指定したコマンドを実行する
という処理です。

環境

CentOS 5.5