我正在创建一个Docker容器,我不想让'特权'标志为真。这是为了使其更安全并且更好地控制。 我的容器主要从事以下任务(这将帮助我定义它的资源访问范围并相应地实施访问控制) 1.在集装箱上安装gluster文件sys 2.运行SSH守护程序以接受传入的SSH连接 3.运行一些通常可用的bash命令
我在运行docker容器时使用“--cap-add = SYS_ADMIN”选项来实现此目的。但是,因为SYS_ADMIN添加了比我需要的更多的权限(下面列出)。如何只实现SYS_ADMIN功能的子集?
SYS_ADMIN:
执行一系列系统管理操作,包括:quotactl(2),mount(2),umount(2),swapon(2),swapoff(2),sethostname(2)和setdomainname(2)。
执行特权syslog(2)
操作(因为Linux 2.6.37,CAP_SYSLOG应该用于允许
这样的行动)。执行VM86_REQUEST_IRQ vm86(2)命令;
对任意System V IPC执行IPC_SET和IPC_RMID操作 对象
对可信和安全扩展属性执行操作(参见
ATTR(5))
使用ioprio_set(2)分配
IOPRIO_CLASS_RT和(在Linux 2.6.25之前)IOPRIO_CLASS_IDLE I / O
调度班。
伪造UID。
超过/ proc / sys / fs / file-max,系统范围内的数量限制 在打开文件的系统调用中打开文件(例如,accept(2), execve(2),open(2),pipe(2))。