一般情况下,不建议直接使用 root 用户登录,一是减少因操作失误而造成的破坏;二是降低特权密码被泄露的风险。鉴于这些原因,需要为普通用户提供一种身份切换或权限提升机制,以进行管理任务。

(1)su命令——切换用户

默认所有用户允许使用 su 命令,从而有机会反复尝试其他用户(root)的登陆密码,带来安全风险。可以使用 pam_wheel认证模块,只允许极个别用户使用 su 命令进行切换。

1
2
3
4
5
6
[root@localhost ~]# vim /etc/pam.d/su
auth required pam_wheel.so use_uid //这行去掉注释 #
[root@localhost ~]# su - ysf
[ysf@localhost ~]$ su - root //再次尝试切换,就会提示密码错误
密码:
su: 密码不正确

上述情况我们在平时也会遇到,可能sudo命令可以输入用户密码后使用,但是不能通过密码进入root用户。

我们需要用sudo的权限添加用户到wheel组。

1
2
3
4
5
6
7
8
[root@localhost ~]# gpasswd -a ysf wheel          //添加授权用户到wheel组
Adding user ysf to group wheel
[root@localhost ~]# grep wheel /etc/group //查看wheel组成员
wheel:x:10:ysf
[root@localhost ~]# su ysf
[ysf@localhost ~]$ su root //再次尝试切换,切换成功
密码:
[root@localhost ~]#

(2) sudo命令——提升执行权限

使用 su 命令虽然可以切换为 root 用户,但必须知道 root 密码要知道每多一个人知道特权密码,就多一份风险。而 sudo 命令可以让普通用户拥有一部分 root 用户才能执行的命令,又不用知道特权密码。

1)修改配置文件/etc/sudoers

1
2
3
4
5
6
7
8
9
10
11
12
[root@localhost ~]# visudo        //也可使用vi进行编辑,但保存是必须执行“:w!”强制执行
%wheel ALL=(ALL) NOPASSWD: ALL //wheel组的用户不需要密码验证
yangshufan localhost=/sbin/ifconfig //yangshufan能在主机localhost上执行ifconfig命令修改IP地址
User_Alias USER=ysf,yang
Host_Alias HOST=win,www
Cmnd_Alias CMND=/bin/rpm,/usr/bin/yum
USER HOST=CMND //这四行表示允许用户ysf,yang在主机win,www上执行rpm,yum命令
yang localhost=/sbin/*,!/sbin/ifconfig //yang可以执行在/sbin目录下除了ifconfig外所有的命令程序

Defaults logfile="/var/log/sudo" //启用sudo日志记录以备管理员查看

[yangshufan@localhost ~]$ sudo -l //查看获得哪些sudo授权