非root用户使用docker数据权限问题
由于非root用户需要使用docker运行程序,为了开通docker命令的使用权限,为此用户添加了docker组。
解决完使用权限之后,发现数据权限存在较大安全隐患:
例如:我现在有一个带docker组的用户
![]()
使用此用户访问/root路径,无疑会Permission denied
![]()
下面,用此用户随便run一个镜像:(把/root 挂在到容器的/mnt下)
![]()
查看挂载情况,成功挂在/mnt路径

这里注意:虽然使用非root用户启动docker,但默认情况下,在docker环境里使用的用户为root。
这就导致了一个问题,我们在docker容器中进入挂载的/mnt目录(由/root映射而来),发现原本属于root权限才能读写的路径,通过挂载在docker里,此时已经可以进行读写。
这对数据权限造成很大威胁。
经过测试可以得知,docker -v 选择挂载源路径的时候,任何权限的路径都可以背映射到docker容器中的路径。
我们知道,在宿主机中,数据权限通过账号的属主属组来进行约束。那么在非root账号运行docker时,我们只要保证用户以宿主主机中的身份来运行docker,就可以限制住数据权限。
限制方法:加 --user参数
docker run -it --user $(id -u) -v /root:/mnt -v /home:/home linmeng/centos-vim /bin/bash
进入容器:
可以看到,执行者已经不再是root 。
cd 到/mnt路径,没有写权限;
cd到自己权限的路径,可以读写。

至此,问题解决。

浙公网安备 33010602011771号