2012-05-06 13 views
0

私は現在のアドレスを表示したり、IPアドレスを変更するなどの設定ページを作成しようとしています。私はIPアドレスを表示するためにPHPファイルを持っていますPHPを使ったApacheサーバのIPアドレスを変更する

<?php 
    $res=shell_exec("ifconfig"); 
    echo $res; 
?> 

このコードはうまく動作し、期待される結果を表示します。 しかし、サーバーのIPアドレスを変更するコードが正しく動作していません。私はIPアドレスの変更が表示されないのipaddr使用して端末にIPアドレスをチェックしたときに、このコードを実行した後

<?php 
shell_exec("ifconfig eth0 192.168.163.136"); 
?> 

。 Plsはどこが間違っているかを指摘します。私はそれがスーパー/ rootユーザーではないというApacheの問題だと思います。その場合、私はrootユーザーとしてApacheを実行する方法がわかりません。

+0

[PHPを使用しているサーバーのIPアドレスを変更する]の複製可能性(0120-333,002) – Starx

+0

あなたの意図は不明ですやろうとする! –

答えて

0

ifconfigが動作する前に/srv/httpを追加する。必要なのはルート所有の場所だけでした。

1

IPアドレスは、PHPを実行アプリケーション層ではない、ネットワークプロトコルのネットワーク層で設定されています。 単ににアクセスすると、PHPはアクセスできず、変更できません。

可能であれば、作成できる脆弱性を想像してみてください。

+1

_サーバー上で実行されているすべてのコードは、十分な権限を与えられているサーバーのIPアドレスを変更できます。通常、PHP/Apacheサーバはそれらを持っていませんが、(セキュリティの観点からはあまり賢明ではありませんが)それらに与えられます。 IPアドレスを変更すると、おそらく、ドロップされたIPへの現在のHTTP接続が切断されます。 – Wrikken

+0

OK私はそれが賢明な動きではないことを理解していますが、まだ特定のスクリプトを実行するためにApacheの権利を取得する方法を知りたいです –

+0

@apurvnerlekar、あなたは何とかIPを変更することができますアクティブな接続はすでに切断されているため、何もしません。 – Starx

2

あなたのPHPスクリプトには、インターフェイスアドレスを変更するための十分な特権がありません。シェルスクリプトを作成し、適切な権限を与えて(たとえば、所有者をrootに変更してsuidビットを設定する)、PHPスクリプトからシェルスクリプトを実行することができます。しかし、私はそのようなことをしないように助言する。

+0

これでsuidビットを設定する方法を詳しく知ることができます。すべてのリンク?ありがとう –

+0

確かに。 [このブログの投稿](http://nixshell.wordpress.com/2007/04/21/suid-shell-scripts-setting-the-sticky-bit/)が役立つかどうかを確認してください。また、著者が提供する最初のリンク([なぜsuidシェルスクリプトは非常に悪い考えです](http://www.faqs.org/faqs/unix-faq/faq/part4/section-7.html)を必ず読んでください。 )。別の方法は、あなたのスクリプトを実行するユーザーに_sudo_特権を与えることです。これはさらに悪い考えです* - それは多くのダメージを与える可能性があります! – jweyrich

関連する問題