较新版本的 docker 有 --cap-add,可以添加哪些 CAP?

Mat*_*att 5 linux docker linux-capabilities

较新版本的 docker(我认为 1.2 及更高版本)有一个 --cap-add功能。

这提供了对功能功能的细粒度控制,而无需打开所有内容 --privileged=true.

我用谷歌搜索过,但找不到功能列表及其含义。任何人都可以帮忙吗?

drm*_*wer 16

以下内容可能有用:https ://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capability

\n
\n

以下内容摘自上述页面(2022 年 2 月 3 日):

\n
\n

默认情况下,Docker 有一个保留的默认功能列表。\n下表列出了默认情况下允许且可以删除的 Linux 功能选项。

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
能力关键能力描述
审计_写入将记录写入内核审核日志。
对文件 UID 和 GID 进行任意更改(请参阅 chown(2))。
DAC_OVERRIDE绕过文件读、写和执行权限检查。
福纳绕过对通常需要进程的文件系统 UID 与文件的 UID 相匹配的操作的权限检查。
FSETID修改文件时,请勿\xe2\x80\x99t 清除 set-user-ID 和 set-group-ID 权限位。
绕过发送信号的权限检查。
麦克诺德使用 mknod(2) 创建特殊文件。
NET_BIND_SERVICE将套接字绑定到 Internet 域特权端口(端口号小于 1024)。
NET_RAW使用 RAW 和 PACKET 套接字。
SETFCAP设置文件功能。
设置GID对进程 GID 和补充 GID 列表进行任意操作。
塞特普CAP修改流程能力。
设置用户ID对进程 UID 进行任意操作。
系统根目录使用 chroot(2),更改根目录。
\n
\n

下表显示了默认情况下未授予但可以添加的功能。

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
能力关键能力描述
审计控制启用和禁用内核审计;更改审核过滤规则;检索审核状态和过滤规则。
审计_读取允许通过多播 netlink 套接字读取审核日志。
BLOCK_SUSPEND允许防止系统挂起。
带通滤波器允许创建 BPF 映射、加载 BPF 类型格式 (BTF) 数据、检索 BPF 程序的 JIT 代码等等。
检查点_恢复允许检查点/恢复相关操作。在内核 5.9 中引入。
DAC_READ_SEARCH绕过文件读取权限检查以及目录读取和执行权限检查。
IPC_LOCK锁定内存(mlock(2)、mlockall(2)、mmap(2)、shmctl(2))。
IPC_OWNER绕过对 System V IPC 对象的操作的权限检查。
对任意文件建立租约(请参阅 fcntl(2))。
LINUX_IMMUTABLE设置 FS_APPEND_FL 和 FS_IMMUTABLE_FL i 节点标志。
MAC_管理员允许 MAC 配置或状态更改。为 Smack LSM 实施。
MAC_OVERRIDE覆盖强制访问控制 (MAC)。为 Smack Linux 安全模块 (LSM) 实施。
网络管理员执行各种与网络相关的操作。
网络广播进行套接字广播并侦听多播。
性能监视器允许使用 perf_events、i915_perf 和其他内核子系统进行系统性能和可观察性特权操作
系统管理员执行一系列系统管理操作。
系统引导使用reboot(2)和kexec_load(2),重新启动并加载新内核以供以后执行。
系统模块加载和卸载内核模块。
系统_NICE提高进程的nice值(nice(2)、setpriority(2))并更改任意进程的nice值。
系统_PACCT使用 acct(2),打开或关闭进程记帐。
系统_PTRACE使用 ptrace(2) 跟踪任意进程。
系统_RAWIO执行 I/O 端口操作(iopl(2) 和 ioperm(2))。
系统资源覆盖资源限制。
系统时间设置系统时钟(settimeofday(2), stime(2), adjtimex(2)); 设置实时(硬件)时钟。
SYS_TTY_配置使用 vhangup(2); 在虚拟终端上使用各种特权 ioctl(2) 操作。
系统日志执行特权 syslog(2) 操作。
唤醒警报触发一些东西来唤醒系统。
\n


Mat*_*att 9

够有趣的......我在谷歌上搜索了一个小时,但找不到答案。我在这里问这个问题,并在 2 秒内找到了它。

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

将这些传递给 docker 时,您需要删除名称中的 CAP_。

即允许安装在 docker 容器内

docker run --cap_add SYS_ADMIN ...
Run Code Online (Sandbox Code Playgroud)

  • 我相信它应该是带有连字符的“--cap-add”。 (2认同)