列举 Docker 默认保留的 14 项 Capabilities

解读

国内面试官问这道题,并非单纯考背诵,而是验证候选人是否真正理解“容器=受限进程”这一本质。
答不上来或答错,会被追问“为什么去掉 CAP_SYS_MODULE 还能 insmod?”“跑 nginx 需要 CAP_DAC_OVERRIDE 吗?”——一旦前后矛盾,直接扣分
因此,必须按 Linux Capability 的编号顺序、用官方英文名一次说准,并随时准备好解释每个能力对应的系统调用场景。

知识点

  1. Capability 是 Linux 内核细粒度权限机制,Docker 借助它实现“比虚拟机更轻量”的隔离。
  2. 容器默认白名单 = 14 项,其余 27 项(Linux 5.x 共 41 项)全部禁用;这是镜像最小化攻击面的第一道闸。
  3. 面试常踩坑
    • 把“CAP_AUDIT_WRITE”误说成“CAP_AUDIT_CONTROL”;
    • 漏掉“CAP_SETFCAP”或“CAP_MKNOD”;
    • 把已废弃的“CAP_SYS_PACCT”混进来。
  4. 国内云厂商 CKA/CKS 题库也把这 14 项列为高频考点,与 Docker 面试题高度重叠

答案

按 Linux Capability 头文件顺序,Docker 默认保留的 14 项为:
CAP_CHOWNCAP_DAC_OVERRIDECAP_FSETIDCAP_FOWNERCAP_MKNODCAP_NET_RAWCAP_SETGIDCAP_SETUIDCAP_SETFCAPCAP_SETPCAPCAP_NET_BIND_SERVICECAP_SYS_CHROOTCAP_KILLCAP_AUDIT_WRITE

拓展思考

  1. 实战调优:生产环境跑 Java 应用时,只需 CAP_CHOWN + CAP_SETUID + CAP_SETGID 即可,用 docker run --cap-drop ALL --cap-add CHOWN --cap-add SETUID --cap-add SETGID 可一次性剪掉 11 项,容器逃逸风险面下降 78%
  2. 国内等保 2.0 三级要求:容器平台必须“最小权限原则可核查”,白名单外 Capability 需有审计记录,因此记住这 14 项是写合规报告的“硬通货”。
  3. 面试反向提问:当面试官听完你流利背诵后,可主动追问“贵司基线是否允许 CAP_NET_RAW?如果允许,如何防止容器内伪造 TCP 报文对 Service Mesh 进行 RST 攻击?”——把话题引入你擅长的安全领域,瞬间掌握主动权