解决 Linux 中 su: Authentication failure 的问题
在 Linux 系统中,当尝试使用 su
命令切换到 root 用户时,即使输入的密码正确,仍可能会遇到 su: Authentication failure
的错误提示。这个问题可能由多个原因引起,以下是详细的排查步骤和解决方案。
一、检查用户是否在 sudoers 列表中
编辑 sudoers 文件:确保用户在
/etc/sudoers
文件中具有适当的权限。使用visudo
命令编辑 sudoers 文件:sudo visudo
添加用户权限:在文件中添加以下行,以确保用户具有使用
su
命令的权限:username ALL=(ALL) ALL
将
username
替换为您的实际用户名。
二、检查 PAM 配置
PAM(Pluggable Authentication Modules)配置错误可能导致认证失败。
编辑 pam.d 文件:检查
/etc/pam.d/su
文件的配置,确保没有错误配置。该文件的内容应类似于:auth required pam_rootok.so auth sufficient pam_wheel.so trust use_uid auth required pam_wheel.so use_uid auth include system-auth account sufficient pam_rootok.so account include system-auth
确保 pam_wheel.so 配置正确:如果使用了
pam_wheel.so
模块,请确保目标用户属于wheel
组:usermod -aG wheel username
三、检查 SELinux 配置
SELinux 可能会阻止某些认证操作。
临时禁用 SELinux:可以临时禁用 SELinux 以检查是否是其引起的问题:
sudo setenforce 0
永久禁用 SELinux:如果确认是 SELinux 问题,可以编辑
/etc/selinux/config
文件,设置SELINUX=disabled
:SELINUX=disabled
重启系统:修改后重启系统使设置生效:
sudo reboot
四、检查系统日志
系统日志可以提供更多关于认证失败的详细信息。
查看认证日志:使用
journalctl
查看系统日志:sudo journalctl -xe
查看安全日志:检查
/var/log/secure
文件中的日志信息:sudo cat /var/log/secure
五、确认 root 用户状态
确认 root 用户是否锁定:检查 root 用户是否被锁定:
sudo passwd -S root
输出应为
root P
表示用户没有锁定。解锁 root 用户:如果用户被锁定,可以使用以下命令解锁:
sudo passwd -u root
六、检查 su 命令权限
确认 su 命令权限:确保
su
命令具有正确的权限设置:ls -l /bin/su
输出应类似于:
-rwsr-xr-x 1 root root 32128 Apr 4 2018 /bin/su
rws
表示su
命令具有 SUID 位。修正 su 命令权限:如果权限不正确,可以使用以下命令修正:
sudo chmod 4755 /bin/su
七、总结
通过以上步骤,您可以逐一排查和解决 su: Authentication failure
的问题。确保用户在 sudoers 列表中,检查 PAM 和 SELinux 配置,查看系统日志,确认 root 用户状态,以及检查 su
命令权限。希望这些方法能帮助您解决认证失败的问题。
思维导图
- 解决 Linux 中 su: Authentication failure 的问题
- 检查用户是否在 sudoers 列表中
- 编辑 sudoers 文件
- 添加用户权限
- 检查 PAM 配置
- 编辑 pam.d 文件
- 确保 pam_wheel.so 配置正确
- 检查 SELinux 配置
- 临时禁用 SELinux
- 永久禁用 SELinux
- 重启系统
- 检查系统日志
- 查看认证日志
- 查看安全日志
- 确认 root 用户状态
- 确认 root 用户是否锁定
- 解锁 root 用户
- 检查 su 命令权限
- 确认 su 命令权限
- 修正 su 命令权限
通过系统化的排查和解决方案,可以有效应对 su: Authentication failure
问题,确保系统安全和用户权限的正确管理。