假设我有一台 Ubuntu 机器并且做了sudo apt install docker.io
. 我是否只是在我的机器上放置了一个巨大的安全漏洞,允许任何具有终端访问权限的人升级为 root?
我这么问是因为我可以将任何目录作为容器内的卷安装,升级到容器内的根目录,而且似乎我可以在安装的卷中做任何我想做的事情。这一切似乎都是错误的,我觉得我肯定错过了一些东西。或者就这么简单,在 Ubuntu 的存储库中真的有一个不需要密码的“sudo”替代品?
Ste*_*itt 27
不完全是,您允许docker
组中的任何人升级为 root。这在/usr/share/doc/docker.io/README.Debian
:
如上游文档 ( https://docs.docker.io ) 所述,Docker 将允许“docker”组中的非 root 用户访问“docker.sock”,从而与守护进程通信。要将自己添加到“docker”组,请使用以下内容:
adduser YOURUSER docker
正如上游文档中所指出的,“docker”组(以及任何其他访问 Docker API 的方式)是 root 等效的。如果你不信任你机器上有 root 的用户,你也不应该信任他们使用 Docker。如果您对 Docker 安全方面的更多信息感兴趣,请务必阅读上游文档中的“Docker 安全”文章:
如果您有兴趣在不需要 root 等效权限的情况下运行(大多数)OCI 容器,请查看Podman。
Gil*_*il' 11
不可以。默认情况下,安装 Docker 不允许任何人使用它。
$ docker info
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.39/info: dial unix /var/run/docker.sock: connect: permission denied
Run Code Online (Sandbox Code Playgroud)
作为普通用户,你连连接 Docker 守护进程的权限都没有,更不用说指示它在容器中运行某些东西了。
另一方面,组中的任何用户docker
实际上都拥有主机上的 root 权限。允许用户创建 Docker 容器而不授予他们在主机上的 root 权限是非常困难的。如果容器配置安全,您可以允许用户在 Docker 容器中运行应用程序。安全配置不得授予对主机上任何敏感文件的访问权限,并且应包含USER
不授予容器内 root 访问权限的指令。(防止 root 逃离容器是可能的,但很棘手。)
在“命令替换”是adduser alice docker
或有alice ALL = ( : docker) docker
中/etc/sudoers
,不仅安装docker.io
。