0

system()を使用せずにトレースルートを実行するphpスクリプトがあります。SOCK_RAWとICMPを使用します。

CAP_NET_RAWを使用して、rootユーザーがいなくても、またはsudoersで何かを変更しなくても、このスクリプトを実行することができました。

重要なのは、スクリプトは、ブラウザではなく、シェルを介して呼び出された場合にのみ機能するということです。ブラウザを使用すると、次のエラーが発生します。socket_create():ソケットを作成できません[1]:操作は許可されていません。ですから、ここで何かがうまくいかないのです。

グーグルとグーグルの後、apacheを介して呼び出されたときに同じスクリプトが機能しない理由を理解できません。CAP_NET_RAWをapache構成ファイルにも追加する必要がありますか?

これに関するアドバイスをいただければ幸いです。

ジェイソン

4

1 に答える 1

0

典型的な Apache + PHP インストールは、別のシステム ユーザー (通常は www-data) の下で実行されます。私の推測では、この疑似ユーザーは厳しく制限されています。www-data ユーザーとしてシェルから実行してみてください。私の考えが正しければ失敗するはずです。

于 2011-11-30T14:29:50.037 に答える