last update 2014年2月24日 12:19

特定ユーザー・プログラムにのみcronでのsudoをパスワード無しで許可する設定

clock_sizeXS

Cent OS 6.5 の cron 処理内で sudo を使ったら、

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

というエラーが出たので対処。

ついでになので、「特定ユーザーが特定プログラムを実行する場合のみ、cron からパスワード無しで sudo できる設定」もまとめておきます。

まず、/etc/sudoers に、

Defaults	requiretty

があるか確認。次に、

# vi /etc/sudoers.d/01_backupuser

で、/etc/sudoers.d/ 以下にドロップインを作成。内容は以下。(ユーザー名「backupuser」やパスは自分の環境に合わせてください)

Defaults:backupuser !requiretty
backupuser ALL=(root)   NOPASSWD:    /path/to/nopass/*.sh

1行目の !requiretty で cron での sudo を許可。2行目で特定パスのみパスワード無しで sudo を許可しています。

その後、以下で文法チェック。(ドロップインもチェック対象)

# visudo –c

最後にパーミションを440に。

# chmod 440 /etc/sudoers.d/01_backupuser

以上です。

ドロップイン(/etc/sudoers.d/)でなく、visudo で直接 /etc/sudoers に書いても動作すると思います。が、個人的にはドロップインが好みです。

なお、今回の設定を入れると、特定ユーザーだけとは言え tty 無しでの sudo を許可する上、特定プログラムについてはパスワード無しで sudo できるようになってしまうため、セキュリティ面で十分注意が必要です。

 

正直、個別要素についての説明記事はあったのですが、微妙に納得がいかないモノがちょこちょことあった気がしたので、書いておきました。

コメントを記入