読者です 読者をやめる 読者になる 読者になる

cronの中でsudo を使う方法

サーバー管理

http://upload.wikimedia.org/wikipedia/commons/thumb/b/b0/NewTux.svg/200px-NewTux.svg.png

訳あって、root で動くcron の中で sudo を含むスクリプトを動かしたのですが

sudo: sorry, you must have a tty to run sudo

というエラーが出て動きませんでした(OSは Centos5)。
しかし検索してみると解決策が見つかりました。

その1 (セキュリティー上、望ましくない)

/etc/sudoers の 以下の行をコメントアウトする

Defaults    requiretty

検索すると、こう書かれた記事がみつかります。
しかし、なぜデフォルトでtty(コンソール)と繋がってないsudoを実行出来ないようにしているのはクラッキング目的で進入したソフト等からsudoされないようにする為です。
なので無闇にこれを無効にしてしまうのは望ましくありません。

その2

Defaults の指定は以下のように特定のユーザーのみttyに繋がってなくともsudoを許可できるので、こちらの方が良いと思います。

Defaults:root !requiretty