我们知道,在多用户的Linux操作系统中可以使用su命令来进行用户的切换
[root@promote ~]# su - test
Last login: Thu Nov 14 07:11:33 EST 2019 on pts/0
[test@promote ~]$
注:su username 和 su - username的区别是切换用户后su - username会直接跳到user的家目录,而su username还会留在切换用户前的目录。
可以看到,利用su命令从root用户切换到了test用户,同样,任何一个用户在知道其他用户密码的情况下(root用户切换其他用户不需要密码)也可以用su命令去切换。
但这样也带来一个问题,任何用户都可以通过su命令无限次地去尝试切换为其他用户以试出其他用户的密码,显然这样是不安全的,应该给su命令进行一些限制。那就要用到我们的pam_wheel认证模块。
pam_wheel认证模块只允许个别用户使用su命令来进行用户的切换:将授权使用su命令的用户添加到wheel组中,修改/etc/pam.d/su认证配置文件来启动pam_wheel认证。
用户添加到wheel组
[root@promote ~]# gpasswd -a test wheel #将wheel组设置成test的附加组
Adding user test to group wheel
[root@promote ~]# id test
uid=1000(test) gid=1000(test) groups=1000(test),10(wheel)
修改/etc/pam.d/su文件,开启pam_wheel认证
[root@promote ~]# sed -i '/pam_wheel.so use_uid/s/#//' /etc/pam.d/su #将含有pam_wheel.so use_uid的行中的"#"去掉
[root@promote ~]# cat /etc/pam.d/su
#%PAM-1.0
auth sufficient pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth sufficient pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
auth required pam_wheel.so use_uid #去掉注释,开启pam_wheel认证
auth substack system-auth
auth include postlogin
account sufficient pam_succeed_if.so uid = 0 use_uid quiet
account include system-auth
password include system-auth
session include system-auth
session include postlogin
session optional pam_xauth.so
用test用户su一下root用户来验证
[test@promote ~]$ su - root
Password:
Last login: Thu Nov 14 07:19:10 EST 2019 on pts/0
[root@promote ~]# #成功登录到root,说明可以使用su命令
下面我们来创建一个用户test1,他不属于wheel组,看看能否使用su命令
[test1@promote ~]$ su - test
Password:
su: Permission denied
[test1@promote ~]$ su - root
Password:
su: Permission denied
登录失败,提示信息为permission denied,说明不能使用su命令,pam_wheel认证起作用了。