redhat系统为例
问题描述:roo密码正确,本地所有用户登录提示登录失败,ssh普通用户可以远程登录,su 切换root 用户提示密码错误
检查配置文件
#pam认证文件 检查第9行有没有注释
cat /etc/pam.d/su
#---------/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
auth include system-auth
account sufficient pam_succeed_if.so uid = 0 use_uid quiet
account include system-auth
password include system-auth
session include system-auth
session optional pam_xauth.so
cat /etc/pam.d/login
#-----------/etc/pam.d/login--------------
#%PAM-1.0
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so ##认证
auth include system-auth
account required pam_nologin.so ##账户
account include system-auth
password include system-auth ##密码
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
session optional pam_console.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open
session required pam_namespace.so
session optional pam_keyinit.so force revoke
session include system-auth
-session optional pam_ck_connector.so
#检查 /etc/passwd
通过编辑 /etc/passwd 文件将 Root 用户的登陆 Shell 改为 /sbin/nologin来禁止用户登录。
#检查/etc/securetty
Linux 下 PAM 模块中有一个叫做 pam_securetty 的模块,它可以限定 Root 用户只能在安全终端上登陆。
而所谓的安全终端由 /etc/securetty 来决定,该文件由包含数行 tty 设备名(每行一个设备名,前面不加 /dev/ ),只有这些设备名才可允许 Root 用户登录。
因此,我们可以通过清空安全终端列表的方式来禁止 Root 用户登陆。
#检查 /etc/shadow
用户名:出现!表示用户禁止登录
#查看日志
tail -f /var/log/secure
#查看错误信息
#此次出现的错误信息为
Jun 28 16:33:01 zxxsapp188 crond[4164]: PAM [error: /lib/security/pam_tally.so: wrong ELF class: ELFCLASS32]
#redhat系统为64位 链接库32位报错
解决办法:
将64位库中的同文件复制到32位库中
cp /lib64/security/pam_tally.so /lib/security/
su命令权限出现问题也无法登录
which su #查询su命令的路径
chmod 4755 /usr/bin/su #更改权限
ll /usr/bin/su #查看su命令权限