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

时间:2016-10-25 09:54:22

标签: permissions docker

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

FROM centos:6.8
RUN adduser -m test
USER test

然后使用docker build构建图像:

docker build -t dockerdemo .

然后我用:

启动一个容器
docker run -ti dockerdemo bash

当我在容器内时,我似乎能够将“test”用户写入容器的根目录:

[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语句并重建,那么我可以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 个答案:

答案 0 :(得分:1)

在1.12.2中宣布了一个漏洞,您的场景匹配。 Release 1.12.3昨天刚刚出来修复此问题,并在此漏洞上注册了CVE-2016-8867。它是一个内部容器权限升级,影响有限,但仍值得升级。