/etc/security/capability.conf でグループを指定することは可能ですか?

/etc/security/capability.conf でグループを指定することは可能ですか?

Linux の機能を再びいじり始めたくなりました。私のお気に入りのプロジェクトは、多くのバイナリの setuid を置き換えて、非ルート ユーザーに追加の特権ユーティリティへのアクセスを提供することです。これを実行するには、関連する機能 ( +ei、問題は で解決+ep) を 経由で追加し、経由でログイン時にそれらの機能がセッションに割り当てられるようにsetcap個人ユーザー アカウント ( ) を構成します。これは非常にうまくいっています。capability.conf 経由で個々のユーザーに「ping」と「kill」へのアクセスを許可できます。jdavis4pam_cap.so

しかし、私が抱えている問題は、これが実稼働システムであれば、管理者はおそらく、ユーザーを作成するたびに個々のユーザーに対してこれを行う必要がないように、何らかの集約単位で機能を割り当てたいと考えるだろうということです。この方法であれば、ユーザーを「filesystemAdmin」グループに追加して などの機能を取得したり、「CAP_DAC_OVERRIDEProcessManagement」に追加して や などの機能を取得したりできます。CAP_SYS_NICECAP_SYS_KILL

これは現在可能ですか?

答え1

でsサポート@groupに構文を追加しました。執筆時点では、pam_cap.socapability.conflibcap-2.29libcapバージョン2.49です

また、いくつかのドキュメントもありますpam_cap.so ここ

答え2

あなたがやりたいことは不可能です。pam_cap継承可能な機能のみを操作するだけでなく (したがって、実際には許可された/有効な機能はまったく付与されません)、ユーザーのみを処理し、グループ (プライマリ グループさえも) は処理しません。

答え3

capacity.conf をグループに直接割り当てることができることを記載したドキュメントは見つかりませんでした。

これは、pam_cap が認証プロセスから権限を「剥奪」する必要性から生じたものと思われます。認証プロセスは、おそらく「すべての」機能、またはそれになるのに十分な機能を持っています。これにより、すぐに「チェックできない構造」になる可能性があるため、累積的な追加マッピングを持つことは賢明ではないと思われる傾向があります。したがって、capability.conf による割り当ては累積的ではありません。一致した場合、それが取得されます。それ以上でもそれ以下でもありません。

とは言うものの:

  • pam_cap を設定して、/etc/security/capability.conf 形式の任意のファイルから機能をロードすることができます。

  • pam 設定内でスクリプトを使用することもできます。認証ユーザーのグループ メンバーシップに基づいてユーザーごとの capacity.conf ファイルを生成し、それを pam_cap モジュールに渡すのは、かなり簡単です。

これは「エレガント」でも「理想的」でもありませんが、大規模な LDAP 風のユーザー ベースの場合、有効なユーザー間の「レイヤー 8 ジェリーウェアを介した同期」や、単一の /etc/security/capability.conf 内のユーザーごとのフルテキスト エントリよりもチェックしやすい可能性があります。

関連情報