webブラウザ側から別サーバのシェルスクリプトを実行する方法

【前提】webブラウザからアクセスできるのは「サーバ1」である。「サーバ1」から「サーバ2」のシェルスクリプトを叩きたいが、apachedaemonユーザでは権限がない。「サーバ1」から「サーバ2」への移動が可能なのは「super」ユーザとする(ssh通信)。


下記A〜Eの4つの方法がある。


A.
1.apache専用ユーザを作成(例:test001)

user test001
group test001

daemonユーザだと他のプロセスでも使用している可能性があるため


2.ユーザtest001に「superユーザ」の鍵を持たせる
(具体的には)
/home/super/.ssh を /home/test001/にコピーする(chownでオーナーはtest001に変更)


3.test001ユーザで 「ssh -A super@サーバ2」 とすることで
superユーザとしてサーバ2にログインできます。つまりサーバ2のシェルスクリプトが実行できます。


B.上記と同様にapache専用ユーザ test001を作成し、test001の鍵を作成し、両サーバ間に用意することでapache専用ユーザでログインする。


C.daemonユーザに上記と同様にsuperの鍵を持たせるやり方


D.visudo方法
visudoに下記のように追記することで特定のスクリプトのみsuperユーザで
実行できるようにする(bbb.phpにサーバ2のシェルスクリプトを実行する
スクリプトを書いておく)

                                                                                                                    • -

Runas_Alias USER_SUPER = super
Cmnd_Alias CMD_SUPER_SCRIPT = /home/aaaa/bbb.php
daemon LOCALHOST = (USER_SUPER) NOPASSWD: CMD_SUPER_SCRIPT

                                                                                                                    • -


E.cronで10分に1回程度(superユーザで)シェルを動かし、トリガーファイルなどでシェルスクリプト実行判定を行い、実行する必要があったときのみシェルスクリプトを実行する。


上記いずれの方法も実業務での実施実績があります。

にほんブログ村 IT技術ブログへ
1票ポチッと押して下さい♪このブログのランキングが少し上がります。