webブラウザ側から別サーバのシェルスクリプトを実行する方法
【前提】webブラウザからアクセスできるのは「サーバ1」である。「サーバ1」から「サーバ2」のシェルスクリプトを叩きたいが、apacheのdaemonユーザでは権限がない。「サーバ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ユーザで)シェルを動かし、トリガーファイルなどでシェルスクリプト実行判定を行い、実行する必要があったときのみシェルスクリプトを実行する。
上記いずれの方法も実業務での実施実績があります。