4

カスタムイーサネットタイプのデバイスと通信する必要があるアプリケーションを Linux で作成する必要があります。そのようなアプリケーションを作成する方法についても、多くの解決策があります。欠点は、このルート アクセスが必要なことです (AFAIK)。後で root 権限を解放することもできますが、プログラムが IDE で開発されているという問題が発生します。これは、root として実行したくありません。私の特別なケースでは、メイン アプリケーションは Python で書かれています。これは、Python インタープリター全体へのルート アクセスを許可することを意味します。可能な代替案を検討しています。例えば

  • TCP/UDP を介してすべての raw パケットをリダイレクトする小さな UDP/TCP サーバーを作成します。これは Python でも記述できます。この小さなアプリケーションだけが root 権限を必要とします。

  • 残念ながら、リダイレクトにsocatを使用していますが、IPパケットによってオーバーフローしないようにするために、1つのイーサネットタイプのみを気にするオプションを見つけることができません。

  • 他のアイデアはありますか?

4

1 に答える 1

1

ソケットを開くには、ルートになるか、CAP_NET_RAW を持っているだけでよいと思います。ソケットが開いたら、好きなユーザーになることができます。

したがって、次のいずれかがあります。

  • 生のソケットを開き、(必要に応じて) バインドし、root 権限を削除してメイン プログラムを実行し、ソケットを開いたままにして、何らかの方法でファイル記述子番号を渡す setuid ヘルパー プログラム (コマンド ライン? 環境変数?)
  • 別のメカニズム (例: unix ソケット) を使用して開いているファイル記述子を渡す setuid ヘルパー

  • そのようなオープンソケット記述子を要求に応じて他のプログラムに渡す root 所有のデーモン

于 2013-08-01T13:23:49.820 に答える