今天给伙伴们分享一下Linux 的 sudo 提权,希望看了有所收获。
我是公众号「想吃西红柿」「云原生运维实战派」作者,对云原生运维感兴趣,也保持时刻学习,后续会分享工作中用到的运维技术,在运维的路上得到支持和共同进步!
如果伙伴们看了文档觉得有用,欢迎大家关注我的公众号,获取相关文档。爱运维,爱生活。
- su 命令在用户身份切换时,需要提供用户密码;
- 在多人协作时,切换root用户时,如果当中某个用户不小心泄露了 root 密码;
- 那系统会变得非常不安全,为了改进这个问题,从而就有了 sudo ;
- sudo 就是给某个普通用户埋下了 浩克hulk 的种子,当需要执行一些特权操作时,进行发怒,获取最高权限,但正常情况下还是普通用户,任然会受到系统的约束以及限制;
一、sudo 提权介绍
su - [username]
sudo
提权;特权命令时; sudo 是否赋予了对应的权限;如果赋予则可以执行;如果没有,则不行;
-
事先赋予权限给某个用户; 某个组;
-
当用户碰到权限不足时,需要操作,可以调用sudo来执行;
-
如果sudo刚好赋予了权限,就可以成功;否则,失败;
-
sudo的主配置文件是**: **/etc/sudoers
1、授权授权格式
找到这一行 root ALL=(ALL) ALL
字段具体含义
- root:你想给哪个用户提权
- ALL=:以哪个用户的身份
- (ALL):通过哪些主机
- 最后的ALL: 执行的命令 /usr/bin/cd !/usr/bin/passwd root
1、用户提权语法格式
- 用户 用户=(主机名) 命令列表
- ABC ALL(ALL) NOPASSWD:ALL
- ABC用户可已在以任何用户身份在任何主机上 无需密码的执行任何命令
再举例:
-
abc ALL(ALL) NOPASSWD:ALL!/usr/bin/mkdir !/usr/sbin/useradd !/usr/sbin/userdel
-
命令列表最好写绝对路径,如:/usr/bin/mkdir
解释:abc 用户可以以任何用户身份在任何主机上无需密码的执行mkdir和useradd命令
2、组提权语法格式
-
%组名 ALL(ALL) ALL
-
%abc tom(server1) NOPASSWD: rm -rf, remove,del
看主机名用 hostname
解释:abc组 可以以tom用户的身份在server1主机上无密码执行 rm -rf , remove , del 命令
命令列表最好写绝对路径如:/usr/bin/mkdir
二、sudo 提权配置
先修改 /etc/sudoers 配置文件;设定对应的权限,(或者使用visudo 命令打开配置)
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
bob ALL=(ALL) /usr/bin/yum #这里具有yum权限
## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
三、用户提权测试
1.将用户加入 wheel 组,默认 wheel 组有 sudo 权限;
[root@edenluo.com ~]# usermod edenluo -G wheel
2.切换到普通用户身份;
[root@edenluo.com ~]# su - edenluo
3.普通用户正常情况下无法删除 /opt 目录;
[edenluo@web ~]$ rm -rf /opt/
rm: cannot remove /opt: Permission denied
4.使用 sudo 提权,然后输入普通用户密码,会发现能正常删除无权限的 /opt 目录;
[edenluo@edenluo.com ~]$ sudo rm -rf /opt
5.后期可以通过审计日志查看普通用户提权都执行了什么操作
[root@edenluo.com ~]# tail -f /var/log/secure
如果有版帮助,帮忙免费的关注一下**公众号「想吃西红柿」「云原生运维实战派」**后续会有更多实用的运维技术分享给伙伴们,您的关注就是我最大的成就。