具有非主要组访问权限的无根 docker 中的权限被拒绝

具有非主要组访问权限的无根 docker 中的权限被拒绝

我正在尝试绑定挂载 root 拥有的具有 770 权限的目录。我的用户位于具有权限的组中,因此我可以在主机上访问它(读取、写入和执行),但所有权组不是我用户的主要组。但是,当我尝试将目录绑定挂载到在 rootless Docker 中运行的容器中时,我无法访问它。

如果我将目录的组所有权设置为用户的主要组,我就可以在无根 Docker 中访问它。

有没有办法从我的非主要组访问这些目录?

例如,对于主机上这样的目录:

drwxrwx---  2 root non-primary-group test-directory
$ id
uid=101(example-user) gid=101(primary-group) groups=101(primary-group),102(non-primary-group)

运行时我被拒绝:

$ docker run --rm -it -v ./test-directory:/test-directory ubuntu
root@1d84f2dsgdsf: # cd /test-directory
bash: cd: test-directory/: Permission denied

但如果目录所有权是:

drwxrwx---  2 root primary-group test-directory

然后一切正常。

答案1

根据其他经验,这似乎是“无根”版本 Docker 中的预期情况。

即使在容器外部你拥有 所拥有的东西user:user,似乎无根 Docker 总是会root:root在容器内部使用绑定挂载。

资料来源:

https://forums.docker.com/t/bind-mounting-permissions-with-user-broken-using-rootless-docker/88257

https://forums.docker.com/t/bind-mount-permissions-unexpected-mounting-as-root-root/129328/6

https://docs.docker.com/engine/security/userns-remap/

如果这种额外的复杂性不再与您的工作流程兼容,您最终也可能会考虑回滚到“传统”Docker。例如,卸载“rootless”Docker,然后安装传统的 Docker。

相关内容