3

すでに実行中のプロセスには、SO_RCVBUFFORCE ソケット オプションを使用するなどの特権命令が必要です。このプロセスは、通常のユーザー プロセスとして実行されています。

このプロセスに機能/許可を与える方法は? ファイルベースの機能設定はまだ夢ですか?

/usr/sbin/setpcapslibcap パッケージとcap_set_proc()apiのユーティリティを試しましたCAP_SETPCAPが、システム (カーネル 2.6.20 の Fedora 4 に基づくレガシー システム) で機能がブロックされているため、別の自己の機能を付与/削除できません。処理する。

そのプロセスに一時的なルート uid を設定することを考えましたが、外部の既に実行中のプロセスの有効な UID を変更する方法はありますか? setuid()/ seteuid()/... 関数は、現在のプロセス (関数を呼び出している人) を変更するだけです。

4

1 に答える 1

4

できません。機能 (「許可された一連の機能」) の背後にあるセキュリティ モデルは、それらがプロセスによって削除され、追加されることはありません。

機能がプロセスの親から適切に継承されるようにアーキテクチャを設定できない場合は、ファイル記述子の受け渡しを使用して別のプロセスで setsocktopt() 呼び出しを実行してみてください。つまり、必要な特権レベルで実行する「sockopt デーモン」をセットアップし、新しいソケットでそれに接続し、sendmsg() でファイル記述子を渡し、必要な呼び出しを実行させます。これは醜い API であり、ソリューションは不必要に複雑です。ただし、アプリの起動と初期化の構造を再設計するよりも望ましい場合があります。

于 2009-09-14T17:22:09.340 に答える