使用sudo分配管理权限
1.使用su命令临时切换账户身份,并执行命令
2.允许softadm管理系统服务的权限
3.允许用户useradm通过sudo方式添加/删除/修改除root以外的用户账号
4.允许wheel组成员以特权执行所有命令
5.为sudo机制启用日志记录,以便跟踪sudo执行操作
步骤一:使用su命令临时切换账户身份,并以root执行命令
su(Substitute User)命令可以快速切换账户身份,普通用户切换账户身份时需要输入密码,root使用su命令切换任何身份都不需要密码,如法格式如下:
# su - [账户名称]
# su - [账户名称] -c '命令'
1)从普通用户切换为root账户身份(如果没有普通账户则需要先创建)
[zhangsan@proxy ~]# whoami
zhangsan
[zhangsan@proxy ~]# su - //切换账户,默认切换为root账户
密码: //输入root的密码
[root@proxy ~]# whoami //确认结果
root
2)以普通身份创建文件(如果没有普通账户则需要先创建),以root身份重启服务
[root@proxy ~]# su - zhangsan -c "touch /tmp/test.txt" //管理员切换普通用户
[root@proxy ~]# ll /tmp/test.txt
[zhangsan@proxy ~]# su - -c "systemctl restart sshd" //以管理员重启服务
密码:
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
active: active (running) since 五 2018-01-19 08:59:40 CST; 1 months 4 days ago
步骤二:允许softadm管理系统服务的权限
1)修改/etc/sudoers配置
修改/etc/sudoers可以直接使用vim编辑该文件,或使用visudo命令修改该文件。
为softadm授予相关脚本的执行权限,允许通过systemctl工具来管理系统服务。
如果没有softadm账户可以先创建该账户。
[root@proxy ~]# useradd softadm
[root@proxy ~]# vim /etc/sudoers //修改文件后,需要使用wq强制保存
.. ..
softadm ALL=(ALL) /usr/bin/systemctl
//授权softadm以root身份执行systemctl命令(ALL包括root)
2)切换为softadm用户,并验证sudo执行权限
[root@proxy ~]# su - softadm
[softadm@proxy ~]$ sudo -l
… …
[sudo] password for softadm: //输入softadm的口令
.. ..
用户 softadm 可以在该主机上运行以下命令:
(ALL) /usr/bin/systemctl
[softadm@proxy ~]$ systemctl start httpd //不用sudo时启动服务失败
Authentication is required
.. ..
[softadm@proxy ~]$ sudo systemctl restart httpd //通过sudo启动服务成功
步骤三:允许用户useradm通过sudo方式添加/删除/修改除root以外的用户账号
1)修改/etc/sudoers配置
为useradm授予用户管理相关命令的执行权限,例外程序以!符号取反,放在后面。在执行相关程序时,可以利用通配符*。
[root@proxy ~]# useradd useradm
[root@proxy ~]# vim /etc/sudoers
.. ..
useradm ALL=(ALL) /usr/bin/passwd,!/usr/bin/passwd root,/usr/sbin/user*,
!/usr/sbin/user* * root
2)切换为useradm用户,验证sudo权限
可以通过sudo方式来添加/删除/修改普通用户:
[useradm@proxy ~]$ sudo -l
.. ..
用户useradm可以在该主机上运行以下命令:
(root) /usr/bin/passwd, !/usr/bin/passwd root, /usr/sbin/user*,
!/usr/sbin/user* * root
[useradm@proxy ~]$ sudo useradd newuser01 //可以添加用户
[useradm@proxy ~]$ sudo passwd newuser01 //可以修改普通用户的口令
更改用户 newuser01 的密码 。
新的 密码:
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
但是不能修改root用户的密码:
[useradm@proxy ~]$ sudo passwd root
对不起,用户 useradm 无权以 root 的身份在 localhost 上
执行 /usr/bin/passwd root。
步骤四:允许wheel组成员以特权执行所有命令
此案例用来展示sudo的便利性及设置不当带来的危险性,生产环境下慎用。
实现时参考下列操作(如果没有普通用户则先创建该账户):
[root@proxy ~]# vim /etc/sudoers
.. ..
%wheel ALL=(ALL) ALL
[root@proxy ~]# usermod -a -G wheel zengye
[zengye@proxy ~]$ sudo -l
.. ..
用户 zengye 可以在该主机上运行以下命令:
(root) /bin/*
步骤五:为sudo机制启用日志记录,以便跟踪sudo执行操作
1)修改/etc/sudoers配置,添加日志设置
[root@proxy ~]# visudo
Defaults logfile="/var/log/sudo"
.. ..
2)以root(默认有所有权限)执行sudo操作
[root@proxy ~]# sudo -l //查看授权的sudo操作
[softadm@proxy ~]# sudo systemctl status httpd //查看授权的sudo操作
3)确认日志记录已生效
[root@proxy ~]# tail /var/log/sudo
.. ..
May 16 22:14:49 : root : TTY=pts/1 ; PWD=/root ; USER=root ; COMMAND=list
Feb 22 22:35:43 : softadm : TTY=pts/11 ; PWD=/home/softadm ; USER=root ;
COMMAND=/bin/systemctl status httpd