降低SYS_ADMIN Linuxfunction

我正在创build一个Docker容器,我不想保留“特权”标志为true。 这是为了保持更安全和更好的控制。 我的容器主要从事以下任务(这将帮助我定义它的资源访问范围并相应地强制执行访问控制)1.在容器上安装gluster文件系统2.运行SSH守护程序以接受传入的SSH连接3.运行一些通常可用的bash命令

在运行docker容器时,我使用了“–cap-add = SYS_ADMIN”选项来实现这一点。 但是,由于SYS_ADMIN增加了更多的权限(下面列出)比我所需要的。 我怎样才能达到SYS_ADMIN能力的一部分?

SYS_ADMIN:

执行一系列系统pipe理操作,包括:quotactl(2),mount(2),umount(2),swapon(2),swapoff(2),sethostname(2)和setdomainname(2)。

  • 执行特权系统日志(2)

  • 操作(从Linux 2.6.37开始,应该使用CAP_SYSLOG来允许
    这样的操作)。 执行VM86_REQUEST_IRQ vm86(2)命令;

  • 对任意System V IPC对象执行IPIP_SET和IPC_RMID操作

  • 在受信任的和安全的扩展属性上执行操作
    ATTR(5))

  • 使用lookup_dcookie(2)。
  • 使用ioprio_set(2)来分配

  • IOPRIO_CLASS_RT和(在Linux 2.6.25之前)IOPRIO_CLASS_IDLE I / O
    调度课程。

  • 通过套接字凭证时伪造UID。

  • (例如,accept(2),execve(2),open(2),pipe())打开文件的系统范围限制打开的文件的数量超过/ proc / sys / fs / file- 2))。

  • 采用克隆(2)和非共享(2)创build新名称空间的CLONE_ *标志。
  • 调用perf_event_open(2)。
  • 访问特权的perf事件信息。
  • 呼叫设置(2)。
  • 调用fanotify_init(2)。
  • 执行KEYCTL_CHOWN和KEYCTL_SETPERM keyctl(2)操作。
  • 执行madvise(2)MADV_HWPOISON操作。
  • 使用TIOCSTI ioctl(2)将字符插入除主叫方的控制terminal以外的terminal的input队列。 采用过时的nfsservctl(2)系统调用。
  • 采用过时的bdflush(2)系统调用。
  • 执行各种特权块设备ioctl(2)操作。
  • 执行各种特权文件系统ioctl(2)操作。
  • 对许多设备驱动程序执行pipe理操作。