3

アーチ Linux を使用しています。システムのIPを変更するphpファイルを実行したい。やった

ifconfig eth0 192.168.163.137

ターミナルで、正常に動作します。私がやってみたのと同じ

shell_exec('ifconfig eth0 192.168.163.137');

phpファイルで、ルーター経由で接続された別のPCからリモートにあるWebブラウザーからページを開こうとしました。ページには何も表示されず、コードも実行されません。it.apache を実行しているユーザーに問題があると思います。だから私はそれをルートで実行したい.誰かが私のコードの実行を案内してくれる. 私もsudoをインストールして、

shell_exec('sudo ifconfig......');

それも実行されません...助けてください...ありがとう.. :)

4

3 に答える 3

3

Sudo では通常、対話型シェルでパスワードを入力する必要があります。これは明らかに、PHP スクリプトでは起こりません。自分が何をしているのかを理解しており、セキュリティの問題をカバーしている場合は、Apache ユーザーがパスワードなしで sudo を実行できるようにしてみてください。ただし、特定のコマンドに対してのみです。

たとえば、sudoers ファイルに次の行を追加すると、Apache は ifconfig コマンドに対してのみ、パスワードなしで sudo を実行できるようになります。

apache ALL=NOPASSWD: /sbin/ifconfig

必要に応じてパスを調整し、引数を追加します。

注意:

  • PHP がシェル コマンドを呼び出す方法が原因で、まだ複雑な問題が発生する可能性があります。
  • Web サーバーが root としてコマンドを実行できるようにすることは非常に危険であることを覚えておいてください!

おそらくより良い代替手段:

  • suid ビットを使用してシェル スクリプトを作成し、誰が呼び出しても root として実行されるようにします。
于 2012-03-31T20:33:20.030 に答える
0

コマンドをキューに書き込み、cronにそれらを取得させ、検証し(既知の正常な要求のみを許可)、実行してから、そのキューに日付と結果をマークします。

エンドユーザーは、ajaxを使用してクリック/更新を待つことができます。

于 2012-06-19T14:23:56.983 に答える
0

shell_exec

PHP がセーフ モードで実行されている場合、この機能は無効になります。

ドキュメント : http://php.net/manual/en/function.shell-exec.php

php.iniでは、ファイルを微調整してみてはいかがでしょうか。

于 2012-03-31T20:26:52.110 に答える