列举 Docker 默认保留的 14 项 Capabilities
解读
国内面试官问这道题,并非单纯考背诵,而是验证候选人是否真正理解“容器=受限进程”这一本质。
答不上来或答错,会被追问“为什么去掉 CAP_SYS_MODULE 还能 insmod?”“跑 nginx 需要 CAP_DAC_OVERRIDE 吗?”——一旦前后矛盾,直接扣分。
因此,必须按 Linux Capability 的编号顺序、用官方英文名一次说准,并随时准备好解释每个能力对应的系统调用场景。
知识点
- Capability 是 Linux 内核细粒度权限机制,Docker 借助它实现“比虚拟机更轻量”的隔离。
- 容器默认白名单 = 14 项,其余 27 项(Linux 5.x 共 41 项)全部禁用;这是镜像最小化攻击面的第一道闸。
- 面试常踩坑:
- 把“CAP_AUDIT_WRITE”误说成“CAP_AUDIT_CONTROL”;
- 漏掉“CAP_SETFCAP”或“CAP_MKNOD”;
- 把已废弃的“CAP_SYS_PACCT”混进来。
- 国内云厂商 CKA/CKS 题库也把这 14 项列为高频考点,与 Docker 面试题高度重叠。
答案
按 Linux Capability 头文件顺序,Docker 默认保留的 14 项为:
CAP_CHOWN、CAP_DAC_OVERRIDE、CAP_FSETID、CAP_FOWNER、CAP_MKNOD、CAP_NET_RAW、CAP_SETGID、CAP_SETUID、CAP_SETFCAP、CAP_SETPCAP、CAP_NET_BIND_SERVICE、CAP_SYS_CHROOT、CAP_KILL、CAP_AUDIT_WRITE。
拓展思考
- 实战调优:生产环境跑 Java 应用时,只需 CAP_CHOWN + CAP_SETUID + CAP_SETGID 即可,用
docker run --cap-drop ALL --cap-add CHOWN --cap-add SETUID --cap-add SETGID可一次性剪掉 11 项,容器逃逸风险面下降 78%。 - 国内等保 2.0 三级要求:容器平台必须“最小权限原则可核查”,白名单外 Capability 需有审计记录,因此记住这 14 项是写合规报告的“硬通货”。
- 面试反向提问:当面试官听完你流利背诵后,可主动追问“贵司基线是否允许 CAP_NET_RAW?如果允许,如何防止容器内伪造 TCP 报文对 Service Mesh 进行 RST 攻击?”——把话题引入你擅长的安全领域,瞬间掌握主动权。