较新版本的 docker(我认为是 1.2 及更高版本)有一个--cap-add特性。
这提供了对特性功能的细粒度控制,而无需使用--privileged=true.
我用谷歌搜索了它,但找不到功能列表及其含义。任何人都可以帮忙吗?
较新版本的 docker(我认为是 1.2 及更高版本)有一个--cap-add特性。
这提供了对特性功能的细粒度控制,而无需使用--privileged=true.
我用谷歌搜索了它,但找不到功能列表及其含义。任何人都可以帮忙吗?
够有趣的......我用谷歌搜索了一个小时,但找不到答案。我在这里问这个问题,并在 2 秒内找到它。
http://man7.org/linux/man-pages/man7/capabilities.7.html
将这些传递给 docker 时,您需要删除名称中的 CAP_。
即允许安装在 docker 容器内
docker run --cap-add SYS_ADMIN ...
以下内容可能有用:https ://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities
以下内容摘自上述页面(2022 年 2 月 3 日):
默认情况下,Docker 具有保留的默认功能列表。下表列出了默认允许且可以删除的 Linux 功能选项。
| 能力密钥 | 能力描述 |
|---|---|
| AUDIT_WRITE | 将记录写入内核审计日志。 |
| 周恩来 | 对文件 UID 和 GID 进行任意更改(请参阅 chown(2))。 |
| DAC_OVERRIDE | 绕过文件读取、写入和执行权限检查。 |
| 福纳 | 绕过通常要求进程的文件系统 UID 与文件的 UID 匹配的操作的权限检查。 |
| FSETID | 修改文件时不要清除 set-user-ID 和 set-group-ID 权限位。 |
| 杀 | 绕过发送信号的权限检查。 |
| 麦诺德 | 使用 mknod(2) 创建特殊文件。 |
| NET_BIND_SERVICE | 将套接字绑定到 Internet 域特权端口(端口号小于 1024)。 |
| NET_RAW | 使用 RAW 和 PACKET 套接字。 |
| SETFCAP | 设置文件功能。 |
| 设置ID | 对进程 GID 和补充 GID 列表进行任意操作。 |
| SETPCAP | 修改流程能力。 |
| SETUID | 对进程 UID 进行任意操作。 |
| SYS_CHROOT | 使用 chroot(2),更改根目录。 |
下表显示了默认情况下未授予但可以添加的功能。
| 能力密钥 | 能力描述 |
|---|---|
| 审计控制 | 启用和禁用内核审计;更改审计过滤规则;检索审核状态和过滤规则。 |
| AUDIT_READ | 允许通过多播 netlink 套接字读取审计日志。 |
| BLOCK_SUSPEND | 允许防止系统挂起。 |
| BPF | 允许创建 BPF 映射、加载 BPF 类型格式 (BTF) 数据、检索 BPF 程序的 JITed 代码等等。 |
| CHECKPOINT_RESTORE | 允许检查点/恢复相关操作。在内核 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 索引节点标志。 |
| MAC_ADMIN | 允许 MAC 配置或状态更改。为 Smack LSM 实现。 |
| MAC_OVERRIDE | 覆盖强制访问控制 (MAC)。为 Smack Linux 安全模块 (LSM) 实施。 |
| NET_ADMIN | 执行各种网络相关操作。 |
| NET_BROADCAST | 制作套接字广播,并收听多播。 |
| 性能监视器 | 使用 perf_events、i915_perf 和其他内核子系统允许系统性能和可观察性特权操作 |
| SYS_ADMIN | 执行一系列系统管理操作。 |
| SYS_BOOT | 使用 reboot(2) 和 kexec_load(2),重新启动并加载新内核以供以后执行。 |
| SYS_MODULE | 加载和卸载内核模块。 |
| SYS_NICE | 提高进程 nice 值(nice(2)、setpriority(2))并更改任意进程的 nice 值。 |
| 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) 操作。 |
| 系统日志 | 执行特权 syslog(2) 操作。 |
| WAKE_ALARM | 触发可以唤醒系统的东西。 |