Permissions Docker-非特权用户可以写入容器/容器内部
我使用以下Dockerfile基于centos:6.8映像创建了一个容器: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
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解决了我的问题!非常感谢。