Permissions Docker-非特权用户可以写入容器/容器内部

Permissions Docker-非特权用户可以写入容器/容器内部,permissions,docker,Permissions,Docker,我使用以下Dockerfile基于centos:6.8映像创建了一个容器: FROM centos:6.8 RUN adduser -m test USER test 然后使用docker build生成映像: docker build -t dockerdemo . 然后,我用以下内容启动一个容器: docker run -ti dockerdemo bash 当我在容器中时,我似乎能够作为“测试”用户写入容器的根目录: [test@9af9c4aeb990 /]$ ls -ld / d

我使用以下Dockerfile基于centos:6.8映像创建了一个容器:

FROM centos:6.8
RUN adduser -m test
USER test
然后使用docker build生成映像:

docker build -t dockerdemo .
然后,我用以下内容启动一个容器:

docker run -ti dockerdemo bash
当我在容器中时,我似乎能够作为“测试”用户写入容器的根目录:

[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
当我运行
touch
命令时,我希望看到
权限被拒绝

如果我更改
Dockerfile
并删除
USER
语句,然后重新生成,那么我可以
su
在容器内对“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中宣布了一个与您的场景匹配的漏洞。昨天刚刚发布以解决此问题,CVE-2016-8867已在该漏洞上注册。这是一个内部容器权限升级,因此影响有限,但仍然值得升级。

如果您通过侧面/后门进入“容器内部”,而不是通过正常的过程(cmd/entrypoint)——您将无法进行测试。我不太清楚你说“通过侧门/后门”是什么意思。我以“docker run-ti image name bash”开始每一个项目。我的意思是,如果您只是使用docker run image name,它就会像广告一样工作。从文档中:用户指令设置运行映像时要使用的用户名或UID,以及Dockerfile中紧随其后的任何RUN、CMD和ENTRYPOINT指令。您运行的容器中没有上述内容。我使用docker run启动容器。我已经更新了原始描述,以便明确说明我使用的命令。我可以确认升级到1.12.3解决了我的问题!非常感谢。