非特権プロセス (Python など) が自身の特権を昇格させる方法はありません。これは、この特権ユーザー/非特権ユーザー全体を扱うための土台のようなものです。 raw ソケットに関しては、マニュアル ページ raw(7) から:
<ブロック引用>0 の実効ユーザー ID または CAP_NET_RAW 機能を持つプロセスのみが raw ソケットを開くことができます。
ユーザー ID 0 は root を意味します。 Linux での raw ソケットに関する情報については、こちらを参照してください。
Faust's answer/comments で指摘されているように、Python インタープリターによって実行されるスクリプトであるため、Python プログラムの CAP_NET_RAW 機能を直接設定することはできませんが、できるソリューションが Web 上にある可能性があります。この制限を回避してください。
ご指摘のとおり、raw ソケットには通常のユーザーよりも高い権限が必要です。この問題は次の 2 つの方法で回避できます。
<オール>chmod +s file
のようなコマンドでファイルの SUID ビットを有効にする その所有者を root
に設定します chown root.root file
で .これにより、スクリプトを実行した有効なユーザーに関係なく、スクリプトが root として実行されます。もちろん、スクリプトに何らかの欠陥がある場合、これは危険です。setcap cap_net_raw+ep file
のようなコマンドを使用して、特定のファイルに CAP_NET_RAW 機能を設定する .これにより、raw ソケットを開くために必要な権限のみが付与され、それ以外は何も付与されません。編集:
@Netch で指摘されているように、指定されたソリューションは、解釈された言語 (Python など) では機能しません。それを機能させるには、いくつかの「ハック」が必要になります。 グーグルしてみてください 「Python SUID」の場合、何かが見つかるはずです。