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