2

Python 2.6 で UDP traceroute ソリューションを実装しようとしていますが、オペレーティング システムに付属の traceroute ユーティリティと同じようなアクションを実行するためにルート権限が必要な理由を理解できません。

このコードが実行される環境が root 権限を持っていることは非常に疑わしいので、Python の実装をやめて、OS traceroute の出力を UDP モードで解析するために何かを書かなければならない可能性が高くなりますか? または、のように構成されたソケットを開くことについて、私が見逃していることがありますかself.rx = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_UDP)。ルート権限がないとアクセスできないようですsocket.SOCK_RAW。これにより、これをPythonで実装するために必要なデータを効果的に消費できなくなります。

4

1 に答える 1

0

私が到達した結論は、tracerouteusingの出力を解析することに制限されているということですsubprocess。コードの一部を効果的に使用して、コードのその部分をルートとして実行tracerouteできるようにすることで、ルート要件を克服できます。root 権限がないとこれらの権利を確立できないため、2 つの状況のうち可能性が高いため、setuidroot 権限の存在に頼らざるを得ません。traceroute

于 2013-06-11T13:52:37.437 に答える