Watch at Ease看见世界,读懂生活。

科技 · 实用指南

systemd 报 status=218/CAPABILITIES?先证明管理器、内核与能力集

程序可能根本没有运行。保存第一条 journal 错误,读取生效 unit,区分系统、用户和容器边界,只修改证据证明无效的能力转换。

systemd 报 status=218/CAPABILITIES?先证明管理器、内核与能力集
原创示意图:保存首次 status 与 journal,区分 drop、ambient 或 namespace 失败,并记录 systemctl 还是 --user。 Watch at Ease

218/CAPABILITIES 表示 systemd 在程序执行前无法丢弃能力或应用 ambient capabilities。应用日志可能尚未产生。

不要先删除全部加固项、改用 root 或授予 CAP_SYS_ADMIN。先确定失败步骤、管理器、命名空间、内核和能力集。

保存第一条能力阶段证据

保存首次 status 与 journal,区分 drop、ambient 或 namespace 失败,并记录 systemctl 还是 --user。

先停掉快速重启循环,再保存 FragmentPath、DropInPaths 与管理器,避免把继承的 drop-in 当成主文件。

读取生效 unit 的全部能力控制

从合并 unit 读取 BoundingSet、Ambient、NoNewPrivileges、SecureBits、PrivateUsers 等,并记录 User= 与程序。

比较 systemd 必须构建的能力集;ambient 依赖 permitted 和 inheritable,bounding set 也可能截断请求。

定位管理器、内核与容器边界

区分 PID 1、用户管理器、容器或旧内核/旧 systemd,只在相同边界复现。

用户管理器要核非特权用户命名空间;容器要核外层策略和 bounding set。

不扩大权限,只修一个已证明矛盾

只修一个证据明确的错配:管理器范围、继承指令、集合成员、已证实兼容性或容器策略。

不要用全部能力或 CAP_SYS_ADMIN 代替窄需求;不再需要的能力应删除并记录理由。

启动一次,核对能力集与真实工作

unit 改动后才在同一管理器 reload,必要时清速率限制,再启动一次并看新 journal。

核对 PID 的四个能力字段,再完成一次真实绑定、tun/tap 或其他所需操作,确认没有额外权限。

systemd 报 status=218/CAPABILITIES?先证明管理器、内核与能力集
原创示意图:核对 PID 的四个能力字段,再完成一次真实绑定、tun/tap 或其他所需操作,确认没有额外权限。 Watch at Ease