Loading... ## 解决 Linux 中 su: Authentication failure 的问题 在 Linux 系统中,当尝试使用 `su` 命令切换到 root 用户时,即使输入的密码正确,仍可能会遇到 `su: Authentication failure` 的错误提示。这个问题可能由多个原因引起,以下是详细的排查步骤和解决方案。 ### 一、检查用户是否在 sudoers 列表中 1. **编辑 sudoers 文件**:确保用户在 `/etc/sudoers` 文件中具有适当的权限。使用 `visudo` 命令编辑 sudoers 文件: ```sh sudo visudo ``` 2. **添加用户权限**:在文件中添加以下行,以确保用户具有使用 `su` 命令的权限: ```plaintext username ALL=(ALL) ALL ``` 将 `username` 替换为您的实际用户名。 ![](https://www.8kiz.cn/usr/uploads/2024/07/4183214662.png) ### 二、检查 PAM 配置 PAM(Pluggable Authentication Modules)配置错误可能导致认证失败。 1. **编辑 pam.d 文件**:检查 `/etc/pam.d/su` 文件的配置,确保没有错误配置。该文件的内容应类似于: ```plaintext 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 ``` 2. **确保 pam_wheel.so 配置正确**:如果使用了 `pam_wheel.so` 模块,请确保目标用户属于 `wheel` 组: ```sh usermod -aG wheel username ``` ### 三、检查 SELinux 配置 SELinux 可能会阻止某些认证操作。 1. **临时禁用 SELinux**:可以临时禁用 SELinux 以检查是否是其引起的问题: ```sh sudo setenforce 0 ``` 2. **永久禁用 SELinux**:如果确认是 SELinux 问题,可以编辑 `/etc/selinux/config` 文件,设置 `SELINUX=disabled`: ```plaintext SELINUX=disabled ``` 3. **重启系统**:修改后重启系统使设置生效: ```sh sudo reboot ``` ### 四、检查系统日志 系统日志可以提供更多关于认证失败的详细信息。 1. **查看认证日志**:使用 `journalctl` 查看系统日志: ```sh sudo journalctl -xe ``` 2. **查看安全日志**:检查 `/var/log/secure` 文件中的日志信息: ```sh sudo cat /var/log/secure ``` ### 五、确认 root 用户状态 1. **确认 root 用户是否锁定**:检查 root 用户是否被锁定: ```sh sudo passwd -S root ``` 输出应为 `root P` 表示用户没有锁定。 2. **解锁 root 用户**:如果用户被锁定,可以使用以下命令解锁: ```sh sudo passwd -u root ``` ### 六、检查 su 命令权限 1. **确认 su 命令权限**:确保 `su` 命令具有正确的权限设置: ```sh ls -l /bin/su ``` 输出应类似于: ```plaintext -rwsr-xr-x 1 root root 32128 Apr 4 2018 /bin/su ``` `rws` 表示 `su` 命令具有 SUID 位。 2. **修正 su 命令权限**:如果权限不正确,可以使用以下命令修正: ```sh sudo chmod 4755 /bin/su ``` ### 七、总结 通过以上步骤,您可以逐一排查和解决 `su: Authentication failure` 的问题。确保用户在 sudoers 列表中,检查 PAM 和 SELinux 配置,查看系统日志,确认 root 用户状态,以及检查 `su` 命令权限。希望这些方法能帮助您解决认证失败的问题。 ### 思维导图 ```plaintext - 解决 Linux 中 su: Authentication failure 的问题 - 检查用户是否在 sudoers 列表中 - 编辑 sudoers 文件 - 添加用户权限 - 检查 PAM 配置 - 编辑 pam.d 文件 - 确保 pam_wheel.so 配置正确 - 检查 SELinux 配置 - 临时禁用 SELinux - 永久禁用 SELinux - 重启系统 - 检查系统日志 - 查看认证日志 - 查看安全日志 - 确认 root 用户状态 - 确认 root 用户是否锁定 - 解锁 root 用户 - 检查 su 命令权限 - 确认 su 命令权限 - 修正 su 命令权限 ``` 通过系统化的排查和解决方案,可以有效应对 `su: Authentication failure` 问题,确保系统安全和用户权限的正确管理。 最后修改:2024 年 07 月 29 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏