2012年8月3日金曜日

sudoをスクリプトの中で使うとき

sudoはデフォルトではtty(制御端末)を持っていないプロセスから呼び出されると
`sudo: sorry, you must have a tty to run sudo'というエラーを吐く。

普通にログインしてシェルからスクリプトを起動する分にはttyがあるから何もないけど、
これをcronなりinitなりdisownしてdaemonぽくしたシェルにしたりすると大問題。

標準エラー出力には出されるから、cronならメールで飛んでくるかな?
お手製スクリプトをdisownするなら、標準エラー出力をログしておくこと必須。
initスクリプトには是非使わないで欲しい。


ちなみに回避策は"sudo tty"で検索すればさっくり見付かります。

0 件のコメント :

コメントを投稿