namespace化内核参数可写

    在不允许用户在容器内修改时,只提供了—sysctl外部接口,而且容器内不能灵活修改参数值。

    在允许用户在容器内修改时,部分内核参数是全局有效的,某个容器修改后,会影响主机上所有的程序,安全性降低。

    系统容器提供—ns-change-opt参数,可以指定namespace化的内核参数在容器内动态设置,当前仅支持net、ipc。

    • 如果容器启动同时指定了—privileged(特权容器)和—ns-change-opt,则—ns-change-opt不生效。

    启动容器, 指定—ns-change-opt=net:

    可以看到容器内/proc/sys/net挂载点为rw,说明net相关的namespace化的内核参数具有读写权限。

    1. c62e5e5686d390500dab2fa76b6c44f5f8da383a4cbbeac12cfada1b07d6c47f
    2. [root@localhost ~]# isula exec -it c6 mount | grep /proc/sys
    3. proc on /proc/sys type proc (ro,nosuid,nodev,noexec,relatime)
    4. proc on /proc/sys/kernel/shmmni type proc (rw,nosuid,nodev,noexec,relatime)
    5. proc on /proc/sys/kernel/shmall type proc (rw,nosuid,nodev,noexec,relatime)
    6. proc on /proc/sys/kernel/msgmax type proc (rw,nosuid,nodev,noexec,relatime)
    7. proc on /proc/sys/kernel/msgmni type proc (rw,nosuid,nodev,noexec,relatime)
    8. proc on /proc/sys/kernel/msgmnb type proc (rw,nosuid,nodev,noexec,relatime)
    9. proc on /proc/sys/fs/mqueue type proc (rw,nosuid,nodev,noexec,relatime)

    可以看到容器内ipc相关的内核参数挂载点为rw,说明ipc相关的namespace化的内核参数具有读写权限。