GNU/Linux >> Linux の 問題 >  >> Linux

root 権限なしで Python で raw ソケットを作成する

非特権プロセス (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」の場合、何かが見つかるはずです。


    Linux
    1. root アクセスなしで zsh をインストールしますか?

    2. C raw ソケットの sendto アドレスの目的は?

    3. root 権限なしでシェルから KDE セッションを適切に終了する方法

    1. シェルスクリプトでルート権限を削除する方法は?

    2. root 権限なしで Linux にソフトウェアをインストールする

    3. apt-get、dpkg、またはルート アクセスなしで .deb をローカルにインストールする方法は?

    1. SuなしでSudoによってrootパスワードを変更しますか?

    2. 方法:Pythonでのソケットプログラミング

    3. Python raw ソケット:プロトコルがサポートされていません