SYS_ADMINfunction赋予docker工程师

如果可能,build议避免给予容器privileged 。 而不是, --cap-add SYS_ADMIN用户被鼓励使用--cap-add SYS_ADMIN (例如)。

但是,在我看来:– --cap-add SYS_ADMIN相当于--privileged 。 为什么?

从文档你可以阅读: http : //man7.org/linux/man-pages/man7/capabilities.7.html

CAP_SYS_ADMIN使您可以:

调用setns(2)(在目标名称空间中需要CAP_SYS_ADMIN);

(是否有可能“命名空间”function?**)。 AFAIK它不是。

 docker run --cap-add SYS_ADMIN ubuntu sleep 360 (id that container= d8243d6019b0) docker exec d8243d6019b0 getpcaps 1 (1 is pid of sleep) Capabilities for `1': = cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_bind_service,cap_net_raw,cap_sys_chroot,**cap_sys_admin**,cap_mknod,cap_audit_write,cap_setfcap+eip 

和;

 getpcaps 32735 (32735 is a pid of sleep in main(root) namespace) Capabilities for `32735': = cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_bind_service,cap_net_raw,cap_sys_chroot,**cap_sys_admin**,cap_mknod,cap_audit_write,cap_setfcap+eip 

所以,容器在container namespacehost namespace都有cap_sys_admin。

因此,容器可以nsset到主机名称空间。

我的问题是:

  1. 是否有可能“命名空间”function?**
  2. 我的推理是否正确?