【发布时间】:2021-11-13 12:51:12
【问题描述】:
据我了解,docker 设置了所需的 cgroup 和命名空间,因此容器(即容器进程)隔离运行(主机系统上的隔离环境),并且对主机系统的权限和访问权限有限。因此,即使进程在容器中以 root 身份运行,它也不会在主机系统上拥有 root 访问权限。
但是从这篇文章:processes-in-containers-should-not-run-as-root,我看到以 root 身份运行的容器进程仍然可以访问主机系统上只有 root 才能访问的主机文件。
在主机系统上:
root@srv:/root# ls -l
total 4
-rw------- 1 root root 17 Sep 26 20:29 secrets.txt
Dockerfile -
FROM debian:stretch
CMD ["cat", "/tmp/secrets.txt"]
在运行上述 Dockerfile 的对应镜像时,
marc@srv:~$ docker run -v /root/secrets.txt:/tmp/secrets.txt <img>
top secret stuff
如果,top secret stuff 是可读的,怎么可能。那么容器隔离的意义何在。我缺少什么,似乎还有更多我缺少的东西。
(这与我如何使用docker run 有关,默认情况下,所有权限/功能都是基于运行docker run 命令的用户授予容器的。
【问题讨论】:
-
我想我在重复自己。但我要向我的团队发表声明/演示,我必须 100% 正确。现在我的声明。我有一个保存机密文件的服务器(serverA)。现在用户 (UserA) 有权在此 ServerA 上运行
docker容器。因此,UserA 现在有一种机制,使用容器通过容器访问主机上的每个文件,而不管 UserA 是否有权访问它。我的理解,来自这个问答。是的。如有错误请指正。