1

PHP でコントロール パネルを開発しています。PHPsecLib ライブラリがインストールされており、それを使用してリモート サーバーにコマンドを発行しています。

例えば;

$ssh->exec("cd /home/{$user}/{$id}; screen -S {$id} -A -d -m  java -Xmx768M -jar minecraft_server.jar nogui -nojline;"); 

今私の質問は、コマンドをルートとして発行しているため、実行されるすべてのコマンドが事前に作成/ハードコードされており、ユーザー入力からではない場合でも、これはセキュリティ上の脅威ですか?

これが問題である場合、誰かがそれを行う最善の方法をアドバイスできますか?

ありがとう、ハリー

4

4 に答える 4

1

ここで説明されているように、phpseclib で sudo を実行できます。

http://phpseclib.sourceforge.net/ssh/examples.html#sudo

于 2012-09-09T19:27:40.933 に答える
1

別の方法をお勧めします:

1/ あなたの php はコマンドを実行しませんが、それらをファイルに書き込みます

2/ クローン化された php ファイルまたはデーモンがこのファイルを定期的にチェックし、ルートとしてコマンドを実行します。

コマンドを実行するために静的なものを使用している場合でも、UI に自信を持ってはいけません。

于 2012-09-09T18:15:12.757 に答える
1

root として実行したくないでしょう。むしろ、sudo を使用している場合にプラットフォームを少し強化するには:

username    ALL = NOPASSWD: /bin/screen, PASSWD: ALL

これにより、user:usernameは sudo/パスワードを必要とせずに screen を実行できますが、プラットフォーム上の残りの実行可能ファイルには認証が必要です。

于 2012-09-09T18:41:33.090 に答える
0

1 つの方法があります。

root としてコマンドを実行しないでください。

それは悪い習慣です。

于 2012-09-09T18:05:08.790 に答える