web-dev-qa-db-ja.com

AmbientCapabilitiesとCapabilityBoundingSetの違いは何ですか?

ポート80と443にバインドする必要があるWebサーバープロセス用のsystemdサービスを作成しようとしています。AmbientCapabilities=CAP_NET_BIND_SERVICEを設定し、AmbientCapabilitiesCapabilityBoundingSetの両方を設定する例が見つかりました。文書からは明らかではありません。 Systemdドキュメント: link 。 Linux manドキュメント: link

両方を設定するか、AmbientCapabilitiesのみを設定する必要がありますか?

それらは正反対です:

AmbientCapabilitiesgrantsプロセスが通常は開始しなかった機能。

CapabilityBoundingSetlimitsプロセスが取得できる機能。それは何も許可しません。

タスクでは、特権を付与するようにAmbientCapabilitiesを設定するだけで十分です。境界セットでは、デフォルトですべてが許可されているため、変更する必要はありません。

代わりに、後者はセキュリティ強化機能であることを意図しています。サービスが文字通りroot(uid 0)として実行されている場合、または 'su'や 'Sudo'などのsetuid-rootプログラムを呼び出している場合でも、境界セットに含まれていない特権を取得することはできません。

ただし、サービスがより高い特権を必要とするものを直接実行しないことが確実な場合は、両方を設定できます(おそらくそうする必要があります)。

1
user1686