Docker的更新版本有--cap-add选项,可以添加哪些CAP权限?

24
较新版本的Docker(我认为是1.2及以上)具有--cap-add功能。 这提供了细粒度的功能控制,而不需要使用--privileged=true打开所有功能。 我已经搜索过了,但找不到功能清单以及它们的含义。有人可以帮忙吗?
2个回答

25
有趣的是...我花了一个小时在谷歌上搜索,但找不到答案。我在这里提问,两秒钟就找到了答案。

http://man7.org/linux/man-pages/man7/capabilities.7.html

当将这些内容传递给Docker时,您需要在名称中删除CAP_。
例如,允许在Docker容器内挂载。
docker run --cap-add SYS_ADMIN ...

2
我认为应该使用带连字符的 --cap-add - Michał Lepczyński
较新版本的Docker允许您在前面使用CAP_。 - hookenz

15
以下内容可能会有所帮助:https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities
以下内容摘自上述页面(2022年2月3日):

默认情况下,Docker 有一个默认的功能列表。 以下表格列出了 Linux 能力选项,这些选项默认情况下是允许的,并且可以被丢弃。

能力键 能力描述
AUDIT_WRITE 将记录写入内核审计日志。
CHOWN 对文件UID和GID进行任意更改(参见chown(2))。
DAC_OVERRIDE 绕过文件读取、写入和执行权限检查。
FOWNER 绕过通常需要进程的文件系统UID与文件UID匹配的操作的权限检查。
FSETID 在修改文件时不清除设置用户ID和设置组ID权限位。
KILL 绕过发送信号的权限检查。
MKNOD 使用mknod(2)创建特殊文件。
NET_BIND_SERVICE 将套接字绑定到Internet域特权端口(端口号小于1024)。
NET_RAW 使用RAW和PACKET套接字。
SETFCAP 设置文件能力。
SETGID 对进程GID和附加GID列表进行任意操作。
SETPCAP 修改进程能力。
SETUID 对进程UID进行任意操作。
SYS_CHROOT 使用chroot(2),更改根目录。
下表显示了默认情况下未授予的功能,可以进行添加。
能力键 能力描述
AUDIT_CONTROL 启用和禁用内核审计;更改审计过滤规则;检索审计状态和过滤规则。
AUDIT_READ 允许通过多播 netlink 套接字读取审计日志。
BLOCK_SUSPEND 允许阻止系统挂起。
BPF 允许创建 BPF 映射、加载 BPF 类型格式(BTF)数据、检索 BPF 程序的 JIT 代码等。
CHECKPOINT_RESTORE 允许检查点/还原相关操作。在内核 5.9 中引入。
DAC_READ_SEARCH 绕过文件读取权限检查和目录读取和执行权限检查。
IPC_LOCK 锁定内存(mlock(2)、mlockall(2)、mmap(2)、shmctl(2))。
IPC_OWNER 绕过对 System V IPC 对象操作的权限检查。
LEASE 在任意文件上建立租约(参见 fcntl(2))。
LINUX_IMMUTABLE 设置 FS_APPEND_FL 和 FS_IMMUTABLE_FL i-node 标志。
MAC_ADMIN 允许 MAC 配置或状态更改。实现了 Smack LSM。
MAC_OVERRIDE 覆盖强制访问控制(MAC)。实现了 Smack Linux 安全模块(LSM)。
NET_ADMIN 执行各种与网络相关的操作。
NET_BROADCAST 进行套接字广播,并侦听多播。
PERFMON 使用 perf_events、i915_perf 和其他内核子系统进行系统性能和可观察特权操作
SYS_ADMIN 执行一系列系统管理操作。
SYS_BOOT 使用 reboot(2) 和 kexec_load(2),重新启动并加载新内核以供后续执行。
SYS_MODULE 加载和卸载内核模块。
SYS_NICE 提高进程优先级值(nice(2)、setpriority(2)),并更改任意进程的优先级值。
SYS_PACCT 使用 acct(2),打开或关闭进程帐户。
SYS_PTRACE 使用 ptrace(2) 跟踪任意进程。
SYS_RAWIO 执行 I/O 端口操作(iopl(2) 和 ioperm(2))。
SYS_RESOURCE 覆盖资源限制。
SYS_TIME 设置系统时钟(settimeofday(2)、stime(2)、adjtimex(2));设置实时(硬件)时钟。
SYS_TTY_CONFIG 使用 vhangup(2);在虚拟终端上使用各种特权 ioctl(2) 操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接