cronの中などでsudoを実行する方法

投稿者: | 2013年12月2日

cronで実行するスクリプトやPHPなどのスクリプトの中で、sudoを使用して特定のユーザーでコマンドを実行したい場合に、通常sudoコマンドは、コンソール上でパスワードの入力を求められるのでコマンドを実行できない。

どうしても、sudoを使用する必要があったので、上記を実現する方法を調べてみた。

■ 特定のユーザーでのみパスワードなしでsudoできるようにする設定

# visudo
admin2 ALL=(admin) NOPASSWD: /home/admin/test.sh

上記の設定をした場合、admin2ユーザーがパスワードなしで、adminユーザーの権限でNOPASSWDで指定したプログラムのみを実行できるようになる。

■ コンソールなしでsudoを実行できるようにする設定

パスワードなしで、sudoを実行できるようにしても、デフォルトの設定では、コンソールなしでは、sudoすることができないのでcronやPHPのスクリプトなどの中ではコンソールがないのでsudoを実行することができないので下記の設定をする。

端末なしで、sudoを実行できるようにする設定を調べてみると、visudoで/etc/sudoersファイルの下記の行をコメントにすればいいと出てきたが、この設定だとすべてのユーザーがコンソールなしでsudoを実行できてしまうのでセキュリティ上、好ましくなさそう。

# visudo
#Defaults requiretty

下記のように、特定のユーザーのみ、コンソールなしでのsudoの許可をしたほうがセキュリティ上好ましいと思われる。

# visudo
Defaults requiretty
Detaults:admin2 !requiretty


コメントを残す

メールアドレスが公開されることはありません。

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください