cronの中でsudoを使う方法
jenkins(実行ユーザ:jenkins)のcronでsudoを使う必要があり、/etc/sudoersの設定を変えたのでメモ。
ユーザ:jenkinsをtty(コンソール)無しでsudoさせるため、こんな感じで設定しました。
sudo /usr/sbin/visudo
#Defaults requiretty # tty無しの場合sudoさせない(コメントアウト)
Defaults:jenkins !requiretty # ユーザjenkinsはtty無しでsudo可能
jenkins ALL=(ALL) NOPASSWD:ALL # ユーザjenkinsはパスワード無しでsudo可能
ちょっと解説
sshコマンドやcronの中でsudoを使うスクリプトを使う場合によくあるケースなんですが
sudo: sorry, you must have a tty to run sudo
こんなエラーで止まることがあります。これは、/etc/sudoersの設定でtty(コンソール)とつながってないsudoが禁止されているためです。
/etc/sudoersの下の行をコメントアウトするか、!requirettyを指定するとこの設定を無効化できます。
Defaults requiretty
が、クラッキング目的で進入したソフト等からsudoされないようにするのが目的なので、安易に外すのもいかがなものかと思うわけです。(効果があるかどうかは置いといて)
というわけで、今回は特定のユーザのみsudoを許可する設定を行いました。