manager
GNU / Linux (Ubuntu 14.04) で実行され、1 つのプロセスと複数のプロセスで構成されるソフトウェア (私は作成者ではありません) を拡張していworker
ます。マネージャーは、構成ファイルで指定できるコマンド ラインを使用してワーカーを開始できます。
ワーカーを開始した後、マネージャーはパイプを使用してワーカーと通信します。manager-user
セキュリティ上の理由から、ワーカーをマネージャーとは別のユーザーで実行できるようにすることにしました (ワーカーをおよび と呼びましょうworker-user
)。su
これは、ユーザーを切り替えて新しいワーカーを開始する小さなラッパー スクリプトを作成することによって実現されます。この後、マネージャーはパイプを介してワーカー プロセスと通信できます。このアプローチは、何ヶ月もの間機能しています。
の代わりに、ビットを使用してワーカーを実行するsu
ことを検討しました。そのため、マネージャーが呼び出してワーカーを開始できるラッパーをsetuid
作成しました。C
が所有するようにラッパーを構成するmanager-user
と、ワーカーは正しく開始されます (もちろん、間違った権限で)。ラッパーを所有するように構成し、ビットworker-user
を設定するとsetuid
、ワーカーは開始されますが、マネージャーに接続できないため終了します。
だから私の質問は:実行可能ファイルをsetuid
実行すると、親プロセスと子プロセスの両方によって作成されたパイプのアクセス許可にどのように影響しますか? setuid-wrapper を介して開始されたワーカー プロセスに、マネージャーのパイプを開く権限がない (またはその逆の) 可能性はありますか? これが当てはまる場合、これらのアクセス許可をどのように変更できますか?
私は使用経験がほとんどないsetuid
ため、情報/説明は大歓迎です。