科技 · 實用指南
systemd 顯示 status=218/CAPABILITIES?先證明管理器、核心與能力集合
程式可能根本未執行。保存第一條 journal 錯誤、讀取生效 unit、區分系統、使用者與容器邊界,只修改證據證明無效的能力轉換。

218/CAPABILITIES 表示 systemd 在執行程式前無法丟棄能力或套用 ambient capabilities,應用程式日誌可能尚未產生。
不要先刪除全部加固設定、改用 root 或授予 CAP_SYS_ADMIN。先鎖定失敗步驟與執行邊界。
保存第一條能力階段證據
保存首次 status 與 journal,區分 drop、ambient、namespace 失敗,並記錄 systemctl 或 --user。
先停快速重啟,保存 FragmentPath、DropInPaths 與管理器,避免漏掉繼承設定。
讀取生效 unit 的所有能力控制
讀取 BoundingSet、Ambient、NoNewPrivileges、SecureBits、PrivateUsers、User= 與執行檔。
比較 systemd 要建立的集合;ambient 依賴 permitted 與 inheritable,bounding 也會限制它。
定位管理器、核心與容器邊界
區分 PID 1、使用者管理器、容器或舊版本組合,只在相同邊界重現。
使用者管理器檢查命名空間支援;容器檢查外層策略與 bounding set。
只修一個已證明矛盾,不擴權
只修管理器、繼承設定、集合成員、已證明相容性或容器策略之一。
不要用全部能力或 CAP_SYS_ADMIN 取代窄需求;不需要的能力應移除並說明。
啟動一次並驗證即時能力與工作
變更 unit 後才 reload,必要時清速率限制,單次啟動並讀新 journal。
核對四個能力欄位,再完成一次真正需要能力的操作,確認未增加無關權限。
