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)负责系统中很多应用程序的登录认证,包括sshd
、vsftpd
、su
等。例如ssh
登录认证配置文件是/etc/pam.d/sshd
用户可根据需要配置相应的认证规则。你也可以为自己的其他应用配置PAM认证。
查看su
的PAM
认证配置
[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
组。