【问题标题】:Switch to Docker Root User切换到 Docker 根用户
【发布时间】:2020-04-16 05:21:18
【问题描述】:

我正在使用 Docker,在我在 Docker CLI 上执行任何命令之前,我需要切换到使用该命令使用的 root

sudo su - root

谁能告诉我为什么我们需要切换到root用户来对Docker Engine执行任何操作?

【问题讨论】:

  • 因为安全?
  • @emix 是切换用户到root用户的唯一原因吗?
  • 还有其他的吗?
  • @emix 我们得到了答案......也谢谢你:)

标签: docker root sudo


【解决方案1】:

对于 docker cli 命令,您无需切换到 root,通常将您的用户添加到 docker

sudo groupadd docker
sudo usermod -aG docker $USER

见:https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user

docker以root身份运行的原因:

Docker 守护进程绑定到 Unix 套接字而不是 TCP 端口。默认情况下,Unix 套接字由用户 root 拥有,其他用户只能使用 sudo 访问它。 Docker 守护进程始终以 root 用户身份运行。

【讨论】:

  • 表示如果我创建任何用户并将其添加到 Docker 组,我是否能够执行与 root 用户相同的所有 Docker 命令?
  • @invad0r 问题是why 需要权限升级。您的回答提供了解决问题的方法,但并没有真正回答所提出的实际问题
  • 一个人必须意识到将自己放入docker 组的含义。如果您运行具有文件系统访问权限的恶意容器,您可能会危及您的系统。记在脑子里。最好使用 sudo 简单地使用 docker 命令。
  • @invad0r 从 docker 文档中我了解到通信是通过套接字发生的,通常是 IP 和端口的组合,它基本上使用什么端口?
【解决方案2】:

使用docker 命令,您可以轻松获得对主机文件系统任何部分的根级访问权限。最基本的例子是

docker run --rm -v /:/host busybox cat /host/etc/shadow

这将为您提供一个加密密码文件,您可以在空闲时离线破解该文件;但如果我想真正接管这台机器,我只需将我自己的行写入/host/etc/passwd/host/etc/shadow,创建一个没有密码的备用 uid-0 用户然后去城里。

Docker 并没有任何方法来限制您可以运行哪些docker 命令或您可以挂载哪些文件或卷。因此,如果您可以运行任何docker 命令,您就可以不受限制地访问主机。把它放在sudo 后面是合适的。

另一个重要的推论是,使用dockerd -H 选项使 Docker 套接字网络可访问是要求您的系统获得远程 root 权限。谷歌“Docker cryptojacking”了解更多细节和现实生活中的突出例子。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-10
    • 2023-03-03
    • 2014-08-24
    • 2015-08-13
    • 2022-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多