Docker – 非特权用户可以写入容器内部

我已经使用以下Dockerfile创build了基于centos:6.8映像的容器:

FROM centos:6.8 RUN adduser -m test USER test 

然后使用docker build构build图像:

 docker build -t dockerdemo . 

然后我开始一个容器:

 docker run -ti dockerdemo bash 

当我在容器中时,我似乎可以将“testing”用户写入容器的根目录中:

 [test@9af9c4aeb990 /]$ ls -ld / drwxr-xr-x 29 root root 4096 Oct 25 09:49 / [test@9af9c4aeb990 /]$ id -a uid=500(test) gid=500(test) groups=500(test) [test@9af9c4aeb990 /]$ touch /test-file [test@9af9c4aeb990 /]$ ls -l /test-file -rw-rw-r-- 1 test test 0 Oct 25 09:49 /test-file 

我期待看到Permission denied时,我运行touch命令。

如果我改变了Dockerfile并删除了USER语句,然后重新Dockerfile ,那么我可以对容器中的“test”用户进行操作,并得到我期望的行为:

 [root@d16277f693d8 /]# su - test [test@d16277f693d8 ~]$ id uid=500(test) gid=500(test) groups=500(test) [test@d16277f693d8 ~]$ ls -ld / drwxr-xr-x 29 root root 4096 Oct 25 09:50 / [test@d16277f693d8 ~]$ touch /test-file touch: cannot touch `/test-file': Permission denied 

我误解了用户权限如何在容器内工作吗?

有没有办法产生我的预期行为?

在1.12.2中有一个漏洞,说明你的scheme是匹配的。 1.12.3版本昨天才刚刚出来解决这个问题,CVE-2016-8867被注册在漏洞上。 这是内部集装箱特权升级,影响有限,但仍值得升级。