4-控制docker exec访问权限
2017-03-06 本文已影响195人
比特阳
创建于20170306
本章小目标
- docker exec 权限控制
参考链接
http://jonaskunze.com/restrict-user-to-its-own-container-using-docker/
1,前言
docker容器权限,默认都是用root来启动的。如果一台机器上启动了不同用户的容器。而任何一个在docker组中的登录用户,又都可以进入到当前机器的任何运行中的容器。显然,不符合权限隔离的需求。
例如,docker ps 看到有A,B两个容器,A是aa用户的,B是bb用户的,但是aa却可以通过docker exec进入B容器。
2,解决方案
通过设置用户的默认登录shell来进行控制
groupadd jl
useradd -d /home/jl -g jl -G docker -m jl
# id jl #jl用户已经在docker组中,权限非常大
uid=1000(jl) gid=1000(jl) groups=1000(jl),999(docker)
下面修改jl用户的登录shell,使其只可以进入dao_jl_stock_1容器
touch /usr/local/bin/docker_shell_jl
chmod +x /usr/local/bin/docker_shell_jl
#编写登录脚本的内容
cat /usr/local/bin/docker_shell_jl
######
echo "hi jianglong1, welcom to container named dao_jl_stock_1!!!"
######
docker exec -ti dao_jl_stock_1 /bin/bash
sh -c "echo '/usr/local/bin/docker_shell_jl' >> /etc/shells"
cat /etc/shells
#修改登录默认shell
chsh -s /usr/local/bin/docker_shell_jl jl
#检查修改结果
cat /etc/passwd
jl:x:1000:1000::/home/jl:/usr/local/bin/docker_shell_jl
好了,在OS中登录jl用户,已经进入到容器中,jl将只对自己的容器拥有root权限。
# su - jl
hi jianglong1, welcom to container named dao_jl_stock_1!!!