su 命令报错 su: Permission denied


su 命令 报错 su: Permission denied,不管是su普通用户还是root,都会报这个错误,可以确定的是密码是正确的,因为ssh可以正常登录,root用户 su 其他用户正常。

[user01@my-linux ~]$ su -
Password: 
su: Permission denied

对比正常主机su命令的权限都是正常的有s权限。

[user01@my-linux ~]$ ll /usr/bin/su
-rwsr-xr-x 1 root root 32128 10月  1 2020 /usr/bin/su

其实这种登录异常问题排除密码错误、密码过期、用户锁定等问题首先应该想到的就是PAM模块了,PAM(Pluggable Authentication Modules)负责系统中很多应用程序的登录认证,包括sshdvsftpdsu等。例如ssh登录认证配置文件是/etc/pam.d/sshd用户可根据需要配置相应的认证规则。你也可以为自己的其他应用配置PAM认证。

查看suPAM认证配置

[root@my-linux ~]# cd /etc/pam.d
[root@my-linux pam.d]# cat 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
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

解决方法

su 的PAM配置文件中有auth required pam_wheel.so use_uid根据上一句的说明可以知道要使用su命令则该用户必须在wheel用户组中,而我的普通用户没有在wheel用户组中。有两种方法可以解决这个问题,一是注释该行,二是将普通用户加入wheel组。