1

私は小さなコーディングプロジェクトを持っています。

専用サーバー (debian ベース) を Web インターフェイスで管理したいと考えています。

たとえば、自分のサービスやゲーム サーバーなどを管理したいと考えています。ssh 接続でそれらを制御するためのスクリプトは既にありますが、独自のマネージャーをコーディングするのは良い練習になります。

私の質問は、phpでシェルコマンドを作成する方法です。そうする機能があることは知っていますが、www-dataアカウントを許可することは安全ではないことを読んだので、これを安全に行う方法はありますか?
(もちろん、私のプログラムはすべて別のアカウントで起動されます。)

また、インターフェイスを簡単に維持できるようにしたいと考えています (多くの変更を加えることなくサービスを追加できる可能性など)。

どうもありがとう。

4

1 に答える 1

1

質問は非常に一般的です。

PHPにはexec() shell_exec() system()passthru ()があり、詳細についてはグーグルで検索してください。

それらに共通しているのは、バイナリ ファイルを実行することだけです (Apache (あなたは Apache を使用していますか?) と仮定します) には実行する権限があります。

セキュリティ上の問題を回避するには、どのような場合/状況/コンテキストでも、どのコマンドが実行され、どのパラメーターが渡されるかを確認する必要があります。

それらが呼び出し前のコードによって 100% 適切にチェックおよび検証されている場合、そのコードは安全です。

最初に注意すべきことは、クライアント (GET または POST 要求でサーバーと通信する) に任意のコマンドを実行させたり、任意のパラメーターを渡させたりしないことです。

セキュリティを強化するために、重要なファイルとディレクトリを Apache が実行されているユーザー/グループから保護します

-また-

機密ファイル/ディレクトリに害のないユーザーグループでApacheを実行します(実行しないでください。たとえば、ルートとして...)

お役に立てれば...

于 2013-05-27T20:17:24.660 に答える