1

リモート サーバー上に、データをデータベースに公開するプログラムがあります。このプログラムが正しく機能するには、root 権限で実行する必要があります。Webページから実行を開始する必要があります。つまり、イベントが発生した場合、このスクリプトの実行が開始されます (今のところ、イベントはボタンのクリックと見なされます)。

これはphpやその他のサーバーサイドスクリプト言語を使用して実行できることは知っていますが、javascriptまたはAJAX、jqueryなどのその他の関連技術を使用せざるを得ません.

セキュリティが心配だったので、これは私が計画したものです。

キー ペアを使用してサーバーに ssh 接続し、root として制御を取得してプログラムの実行を開始するシェル スクリプトを作成します。

Web ページの出力を解析または印刷したくありません。スクリプトを開始するだけで仕事ができます。

誰かがこれで私を助けてくれますか..

ありがとう!

4

2 に答える 2

0

ボックスに root として ssh できないため、ssh で接続する通常のユーザーから呼び出すことができるユーザー root として実行される実行可能スクリプトをセットアップする必要があります。これをする:

chown ルート実行可能ファイル

chgrp ルート実行可能ファイル

chmod 4755 実行可能ファイル

残念ながら、セキュリティ上の理由から、実行可能ファイルをシェル スクリプトにすることはできません (とにかく Linux では)。そのため、多くの system() 呼び出しを含む短い C プログラムを作成する必要があります。これをコンパイルすると、離れているはずです。もちろん、Cプログラムは次のように単純にすることができます

system("./executable");

とにかく、それは通常のサーバーでは大きなセキュリティホールになります. C プログラムが置換用のパラメーターを使用する場合は、それらを検証する必要があります。そうしないと、セキュリティが侵害される可能性があります。少なくとも - パラメータに「;」が埋め込まれている場合は、何もせずにチェックして終了します。

于 2013-09-01T07:54:03.417 に答える
0

問題は、JavaScript が TCP/IP ソケットをサポートしていないことです。そのため、純粋に JavaScript でこれを行うことは実際には不可能です。ただし、AJAX Web ソケット (WebShell や AnyTerm のように) を使用してこれを実現し、サーバーでセッションを処理してローカルで認証することができます。

もう 1 つのオプションは、すべてをクライアント側で実行する必要がある場合、ユーザーのブラウザで実行される Java アプレットを使用することです。明らかに、このアプレットは端末シェルとして機能できますが、必要に応じて、アプレットを非常に簡単に開き、認証し、スクリプトを実行して、スクリプトが正常に開始されたという確認を返すことができます。

于 2013-09-01T03:13:23.200 に答える