当我以普通用户身份运行容器时,我可以映射并修改主机文件系统中由root拥有的目录。这似乎是一个很大的安全漏洞。例如,我可以执行以下操作:
$ docker run -it --rm -v /bin:/tmp/a debian
root@14da9657acc7:/# cd /tmp/a
root@f2547c755c14:/tmp/a# mv df df.orig
root@f2547c755c14:/tmp/a# cp ls df
root@f2547c755c14:/tmp/a# exit
现在我的主机文件系统在键入df
命令时将执行ls
命令(基本无害的示例)。我不相信这是期望的行为,但它正在我的系统上发生(debian stretch)。docker
命令具有普通权限(755,而不是setuid)。
我错过了什么?
也许更好地澄清一下。我目前不感兴趣容器本身可以做什么或能够做什么,也不关心容器内部的根访问权限。
相反,我注意到任何在我的系统上可以运行Docker容器的用户都可以使用它来获得对我的主机系统的根访问权限,并随意读写:实际上给所有用户提供了根访问权限。这显然不是我想要的。如何防止这种情况发生?