AmbientCapability 和 CapabilityBoundingSet 有什么区别?

AmbientCapability 和 CapabilityBoundingSet 有什么区别?

我正在尝试为必须绑定到端口 80 和 443 的 Web 服务器进程创建一个 systemd 服务。我发现了一些示例设置和AmbientCapabilities=CAP_NET_BIND_SERVICE设置AmbientCapabilitiesCapabilityBoundingSet示例。从文档来看,尚不清楚。系统文档:关联。 Linux 手册:关联

我应该同时设置两者还是只设置 AmbientCapability?

答案1

他们是完全相反的:

AmbientCapabilities 赠款该过程通常不会启动的功能。

CapabilityBoundingSet 限制进程被允许获得的能力。它不授予任何能力。

对于您的任务,设置 AmbientCapability 来授予权限就足够了 - 边界集默认情况下已经允许一切,因此无需更改它。

相反,后者旨在成为一项安全强化功能。即使服务实际上以 root (uid 0) 身份运行,或者调用像“su”或“sudo”这样的 setuid-root 程序,它也永远无法获得不在其边界集中的任何权限。

但是,如果您确定您的服务不会直接运行任何需要更高权限的内容,您可以(也许应该)设置两者。

相关内容