Linuxカーネルにはきめ細かい機能がサポートされているようです。これにより、プロセスに権限を付与して、たとえば、プロセスのルート権限を付与せずにrawソケットを開いたり、スレッドの優先度を上げたりすることができます。
ただし、ユーザーごとの機能を付与する方法があるかどうかを知りたいのですが。つまり、rootおよびsuid以外のプロセスがこれらの機能を取得できるようにします。
Linuxカーネルにはきめ細かい機能がサポートされているようです。これにより、プロセスに権限を付与して、たとえば、プロセスのルート権限を付与せずにrawソケットを開いたり、スレッドの優先度を上げたりすることができます。
ただし、ユーザーごとの機能を付与する方法があるかどうかを知りたいのですが。つまり、rootおよびsuid以外のプロセスがこれらの機能を取得できるようにします。
はい、setcap
実行可能ファイルの機能セットを指定するために使用できます。これにより、実行可能ファイルの実行時に特定の機能を付与できます。
capabilities(7)のマニュアルページから:
ファイル機能 カーネル 2.6.24 以降、カーネルは setcap(8) を使用して機能セットを実行可能ファイルに関連付けることをサポートしています。ファイル機能セットは、security.capability という名前の拡張属性 (setxattr(2) を参照) に格納されます。この拡張属性への書き込みには、CAP_SETFCAP 機能が必要です。ファイル機能セットは、スレッドの機能セットと連携して、execve(2) 後のスレッドの機能を決定します。
ユーザーごと (またはグループごと) に機能を付与する方法は、PAM モジュールを使用することです。 sqweek's answerは、 を使用してこれを行う方法を示していますpam_cap
。
確認はしていませんが、SELinuxのこの側面があなたの答えかもしれないと思います:
http://www.lurking-grue.org/writingselinuxpolicyHOWTO.html#userpol5.1
CapOverを見てください- それはあなたが望むことをするはずです。
注: これは (まだ?) 2.6.30ish カーネル API に移植されていないため、使用していません。