Systemd

AmbientCapabilities 和 CapabilityBoundingSet 有什麼區別?

  • November 2, 2021

我正在嘗試為必須綁定到埠 80 和 443 的 Web 伺服器程序創建 systemd 服務。我發現了一些範例設置和AmbientCapabilities=CAP_NET_BIND_SERVICE設置。從文件中,尚不清楚。系統文件:連結。Linux 手冊:連結AmbientCapabilities``CapabilityBoundingSet

我應該同時設置還是只設置 AmbientCapabilities?

它們是完全相反的:

AmbientCapabilities 授予流程通常不會開始的功能。

CapabilityBoundingSet 限制允許程序獲得的能力。它不授予任何。

對於您的任務,將 AmbientCapabilities 設置為授予權限就足夠了 - 預設情況下,邊界集已經允許所有內容,因此無需更改它。

相反,後者旨在成為一種安全強化功能。即使該服務實際上以 root (uid 0) 身份執行——或呼叫像“su”或“sudo”這樣的 setuid-root 程序——它也永遠無法獲得不在其邊界集中的任何特權。

但是,如果您確定您的服務不會直接執行任何需要更高權限的東西,您可以(也許應該)同時設置兩者。

引用自:https://unix.stackexchange.com/questions/580597