Omarchy 默认 Docker 配置让普通进程直达 root,免 sudo 不是更安全
面向开发者的 Linux 发行版 Omarchy 曾默认把用户加入 docker 组,让容器命令无需 sudo 即可执行。安全研究者指出,这个便利设置等价于向该用户会话中的普通进程开放 root 权限。项目已在 4.0.1 中移除默认组成员关系,受影响用户应升级。
作者:韩启明|OC 政策与安全编辑
面向开发者的 Linux 发行版 Omarchy 曾默认把用户加入 docker 组,让容器命令无需 sudo 即可执行。安全研究者指出,这个便利设置等价于向该用户会话中的普通进程开放 root 权限。项目已在 4.0.1 中移除默认组成员关系,受影响用户应升级。
一句话结论:“运行 Docker 不用 sudo”并不表示容器以普通权限运行;当 root 所有的 Docker daemon 暴露 socket 给 docker 组时,浏览器、编辑器、npm 脚本和 AI coding agent 都可能借它接管整台主机。
原因并不复杂。传统 Docker daemon 以 root 身份运行,并监听 /var/run/docker.sock。能访问这个 socket 的进程可以要求 daemon 启动一个 root 容器,把宿主机根目录挂进容器,再以 root 身份读写其中的文件。研究者的演示先证明普通用户不能读取 /etc/shadow,随后通过一个挂载 / 的容器成功读取同一文件。
Linux 的附加组会被子进程继承。用户登录后,桌面会话下面启动的应用通常都继承 docker 组:浏览器下载的工具、IDE 插件、项目里的安装脚本和 Agent 执行器因此共享这条提权通道。攻击不需要知道 sudo 密码,也没有新的系统授权弹窗。对存有 SSH 密钥、云凭据和生产配置的开发机,这足以把一个应用漏洞升级成整机失陷。

最危险的部分是默认值而非 Docker 本身。Omarchy 文档曾把该配置描述为允许用户“以普通用户而非 root”使用 Docker,容易让读者误以为启用了 rootless 模式。实际情况是命令行客户端由普通用户启动,但真正执行高权限操作的是背后的 root daemon。Docker 官方文档明确警告,docker 组授予 root 级权限。
问题影响 4.0.1 之前的版本,研究者也在 3.8.4 ISO 上验证过。项目于 2026 年 8 月 24 日从默认配置移除组成员关系,并把免 sudo Docker 改为用户主动选择。已经登录的旧会话还可能保留组权限,因此升级后应重新登录或重启,并用 id 检查当前组。
需要免 root 容器时,更准确的选项是 Docker Rootless Mode 或基于用户命名空间的 Podman,而不是把用户加入 root daemon 的控制组。它们同样不是绝对沙箱,但至少不会把一个方便的 socket 直接变成系统管理员接口。对于会自动运行项目代码的 AI 工具,这个区别尤其重要。
关键事实
- Omarchy 4.0.1 之前默认把用户加入
docker组,3.8.4 已被验证受影响。 - Docker 官方明确说明
docker组具有 root 级权限。 - 4.0.1 已移除默认组成员关系,免 sudo Docker 改为可选配置。
OC 判断
开发者发行版最容易为了顺滑体验取消一道道确认,而 AI Agent 又在扩大可自动执行的代码范围。两股趋势叠加后,一个看似无害的 npm 脚本就可能拥有主机 root。安全默认值的职责,是让高权限便利明确地由用户选择,而不是用一句“无需 sudo”隐藏授权结果。
为什么重要
- 对 Omarchy 用户:升级后还应检查当前会话是否保留
docker组。 - 对开发者:不能把 Docker socket 当作普通本地 API。
- 对 Agent 工具:运行不可信代码前,应主动检测容器与宿主机的真实权限边界。
评论
围绕这篇文章补充信息、提出问题或分享观察。