非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到自己权限的路径,可以读写。

 

 

至此,问题解决。

posted @ 2020-08-07 16:28  LasyLindsey  阅读(967)  评论(0)    收藏  举报