Linux / Shell

Linux Capability 解码看清每一位的含义

粘贴一个十六进制位集或一行 /proc Cap 字段,查看能力名称,也可勾选已知能力生成新的组合。

Linux Capability 解码

按能力名称组合位集

先解析有效输入。每次勾选会预览一位变化;未命名的位始终保留。

能力解析结果

输入仅在当前浏览器内处理,不读取本机系统,也不发送到服务器。

解释与导出选项

这里选择固定 UAPI 名称表快照,不检测本机内核,也不模拟内核的权限检查。

结果已过期,请先解析,再修改能力或导出。

Linux Capability 解码适合排查日志里的长串十六进制值。看到 CapEff 和 CapBnd 时,先保留字段名:即使两行数值相同,也不表示它们在权限模型中的作用相同。

预填示例包含 14 个已命名能力,只用于演示。它既不是浏览器所在设备的实时权限,也不能代表所有容器运行时的默认配置。核对来源与名称表后,再解释结果。

为什么使用 Linux Capability 解码

把原始数值与名称表的解释分开核对。

从置位位置追到能力名称

Linux Capability 解码把每个置位位置对应到 CAP_* 名称和简要作用。反向勾选会先显示要改变的那一位及前后掩码;确认后才替换输入,避免无意间改掉整组能力。

位集连接到能力卡片,已置位的位置用颜色突出显示

旧表不认识的位也不会消失

切到 3.16 名称表时,新加入的能力会列为未命名位;换回 5.9 后可重新识别。这个过程保留原始位集,最高到第 63 位都不会因为缺少名称而被清除。

同一个位集在两套名称表下显示,未命名的位在新表中获得名称

先核对字段,再核对版本

01

一次保留一个字段

可粘贴裸数值,也可用 CapEff: 0000000000000003 这样的单行。纯数字仍按十六进制处理,例如 10 的十进制值是 16。不同能力集应分别解析。

02

按目标资料选名称表

Linux 3.16、5.8、5.9 的快照分别到第 37、39、40 位。这里是固定名称字典,发行版可能回移功能,选项不会读取运行中的内核版本。

03

预览后再改写原值

结果有效且未过期时才能勾选。应用会同步更新输入与结果;撤销恢复原来的文本,包括字段标签。关闭自动解析后可用 Ctrl/Cmd + Enter 执行。

读懂数值、能力与集合来源

精确的 64 位计算

Capabilities 十六进制值以无符号整数处理,规范化为 16 位小写十六进制和 64 位二进制。JSON 中的掩码及十进制数采用字符串,超过常见浮点安全范围也不失真。

每一项都有编号和解释

已识别能力显示编号与用途摘要。CAP_NET_BROADCAST 会明确标为未使用;旧快照无法识别的位置单独列出。不会因一个名称听起来强大就给整个进程打风险分数。

导出保留集合上下文

文本与 JSON 报告保留名称表版本和可选字段名,并包含全部未知位。capsh 解码适合在目标主机核对名称;这里生成的文本是分析报告,不是可直接执行的 setcap 参数。

输入边界与解释范围

只接受无符号十六进制
允许 1–16 个 ASCII 十六进制数字,可带 0x 或 0X,忽略首尾空白。输入最多 256 个 UTF-16 代码单元;负号、分隔符和超长数字会报错,不自动猜进制或截断。
一次处理一个集合
接受 CapInh、CapPrm、CapEff、CapBnd、CapAmb 加冒号。整份 status、多行内容、能力名称列表和 +ep 表达式均拒绝;不提供 PID、文件或 URL 导入。
不模拟系统的权限变换
名称表不能重现 execve、用户命名空间、securebits、seccomp 或 LSM 的共同影响。仅凭一个掩码无法判断程序所需的最小权限,也不能证明容器处于特权模式或安全状态。
未知位完整保留
只有已命名位可以勾选,其他置位位置会继续出现在数值和报告里。切换旧版本不会删除新能力。不提供全选能力、清除未知位或生成授予权限命令的入口。
结果更新与替换可追溯
输入或版本一变,复制和下载立即禁用。自动解析等待 350 毫秒,关闭开关会取消等待任务。示例、清空和勾选均先预览再应用,支持一次恢复原输入与结果。

Linux Capability 解码常见问题

如何查看一个进程持有的能力?

在目标 Linux 主机读取 /proc/PID/status 的 Cap 字段,或使用可用的 getpcaps 工具。将其中一行贴入此页即可解释位号。结果只反映这一份记录,不会实时跟踪目标进程。

怎样知道程序运行需要哪些能力?

当前持有的能力不等于程序必需的最小集合。需要结合程序文档、实际调用和有代表性的工作负载来核对。本工具不跟踪系统调用,也不会从单个位集推导出安全的授权方案。

为什么 permitted 能力不总是 effective?

permitted 是线程可放入 effective 集合的能力上限,effective 才是能力检查使用的集合。线程可以持有某种 permitted 能力而暂时不启用它;执行新程序时还会受到继承和文件能力等规则影响。

能力表达式中的 ep 是什么意思?

libcap 表达式中的 p 表示 permitted,e 涉及 effective 状态。文件能力有参与执行变换的 effective 标志。cap_net_raw+ep 这样的字符串不是十六进制位集,不能直接贴进这里解析。

身处容器中,能否凭 CapEff 判断它是特权容器?

不能单凭一个字段下结论。还需要容器配置、设备访问、命名空间及其他安全机制的上下文。大量置位可以提示进一步核对,但本页不会把某个掩码标为特权容器的充分证据。

还有疑问?

核对下一份能力记录

用 Linux Capability 解码保留来源字段,检查已命名能力与未知位,再导出经过核对的组合报告。

解析成功不等于权限配置安全。