su - Password: su: Authentication failure
时间: 2025-01-04 21:36:47 浏览: 353
### 解决Linux中`su`命令出现`Authentication failure`错误
当遇到`su: Authentication failure`错误时,这通常意味着尝试切换到root用户时身份验证未能成功。此问题可能由多种因素引起,包括但不限于PAM配置文件损坏、/etc/shadow权限不正确或是简单地忘记了root用户的密码。
对于因忘记root密码而导致的身份验证失败情况,可以通过执行`sudo passwd root`来重置root账户的密码[^3]。这一操作会提示当前用户输入其自身的密码,随后允许设置新的root密码:
```bash
sudo passwd root
```
如果上述方法无法解决问题,则需考虑其他潜在的原因。例如,在某些发行版上,默认情况下可能会禁用root登录。此时应检查/etc/pam.d/su以及其他相关PAM模块配置文件中的设置是否正常[^1]。
另外一种可能性是由于shadow文件权限被意外更改所造成的。确保该文件仅能被root读取是非常重要的;如果不是的话,可以使用如下命令恢复默认权限:
```bash
chmod 600 /etc/shadow
chown root:root /etc/shadow
```
最后,若以上措施均未奏效,建议查看系统日志以获取更多关于认证失败的具体信息。通过分析/var/log/auth.log(Debian系)或相应位置的日志记录,或许能找到更详细的线索帮助诊断并最终解决这个问题。
相关问题
/bin/su - Password: su: Authentication failure
这个错误表明你输入的 `root` 密码不正确,导致无法通过 `su -` 切换到 `root` 用户。以下是详细的解决方案:
---
### **1. 确认密码是否正确**
- **检查大小写**:Linux 密码区分大小写,确保没有误触 `Caps Lock`。
- **尝试默认密码**:如果是新安装的系统,检查是否使用了安装时设置的密码。
- **重置密码**(需物理访问权限):
```bash
# 重启系统,在 GRUB 启动菜单选择 "Advanced options for [系统名]" → "Recovery Mode" → "root (Drop to root shell prompt)"
mount -o remount,rw / # 确保根分区可写
passwd root # 设置新密码
reboot
```
---
### **2. 使用 `sudo` 提权(如果当前用户有权限)**
如果当前用户属于 `sudoers` 列表(通常在 `/etc/sudoers` 中配置),可以尝试:
```bash
/usr/bin/sudo -i # 切换到 root 用户(需输入当前用户密码)
```
- **验证当前用户是否有 `sudo` 权限**:
```bash
groups # 查看当前用户所属组(如 `sudo` 或 `wheel`)
```
---
### **3. 检查 `root` 账户是否被锁定**
- **查看 `root` 账户状态**:
```bash
/usr/bin/sudo passwd -S root
```
- 输出示例:
```
root P 01/01/1970 0 99999 7 -1
```
- 如果第二列为 `L`(Locked),表示账户被锁定。
- **解锁 `root` 账户**:
```bash
/usr/bin/sudo passwd -u root # 解锁
```
---
### **4. 通过单用户模式重置密码(无密码访问)**
1. **重启系统**,在 GRUB 启动菜单:
- 选择 **"Advanced options for [系统名]"** → **"Recovery Mode"** → **"root (Drop to root shell prompt)"**。
2. **挂载根分区为可写**:
```bash
mount -o remount,rw /
```
3. **重置密码**:
```bash
passwd root
```
4. **退出并重启**:
```bash
exit
reboot
```
---
### **5. 检查 PAM 配置(高级场景)**
如果密码正确但仍失败,可能是 PAM(Pluggable Authentication Modules)配置问题:
```bash
/usr/bin/sudo cat /etc/pam.d/su # 检查 su 的 PAM 配置
```
- **常见问题**:
- `auth required pam_wheel.so`:限制只有 `wheel` 组用户能用 `su`。
- 解决方案:将当前用户加入 `wheel` 组:
```bash
/usr/bin/sudo usermod -aG wheel $(whoami)
```
---
### **6. 使用 Live CD/USB 修复**
如果系统完全无法访问:
1. **用 Live CD 启动**,挂载原系统根分区:
```bash
mkdir /mnt/sysroot
mount /dev/sdXn /mnt/sysroot # 替换 sdXn 为实际分区(如 /dev/sda1)
```
2. **挂载关键目录**:
```bash
mount --bind /dev /mnt/sysroot/dev
mount --bind /proc /mnt/sysroot/proc
mount --bind /sys /mnt/sysroot/sys
```
3. **`chroot` 到原系统**:
```bash
chroot /mnt/sysroot
passwd root # 重置密码
exit
reboot
```
---
### **7. 预防措施**
1. **备份密码**:将 `root` 密码记录在安全的地方(如密码管理器)。
2. **设置密码提示**:
```bash
chage -m 0 -M 90 -W 14 root # 设置密码过期策略
```
3. **启用 `sudo` 日志**:
```bash
/usr/bin/sudo visudo # 确保包含:
Defaults logfile="/var/log/sudo.log"
```
---
### **总结**
- **核心问题**:`su -` 失败通常是密码错误或 `root` 账户被锁定。
- **快速修复**:通过 `sudo -i`(如果当前用户有权限)或单用户模式重置密码。
- **长期方案**:配置 `sudo` 权限、备份密码、监控认证日志。
---
zjh@zjh:~$ su - Password: su: Authentication failure
<think>我们正在处理用户关于Linux系统中"su: Authentication failure"错误的问题。根据引用内容,这个问题通常发生在尝试使用su命令切换到root用户时,即使密码正确也会出现认证失败。
关键点:
1. 引用[1]和[4]提到,解决方法是通过命令`sudo passwd root`来设置或重置root用户的密码。因为默认情况下,有些Linux系统(如Ubuntu)的root账户没有设置密码,导致无法通过su切换。
2. 引用[3]解释了sudo和su的区别:sudo使用当前用户的密码临时提升权限,而su需要目标用户的密码。在Ubuntu中,root账户默认是锁定的,因此需要先设置密码。
3. 引用[2]和[5]也确认了同样的错误现象和解决方法。
因此,解决方案步骤为:
1. 使用当前用户(需要有sudo权限)执行`sudo passwd root`
2. 输入当前用户的密码(用于sudo验证)
3. 然后输入两次新的root密码(设置root密码)
4. 之后就可以用`su root`并输入刚设置的密码来切换到root用户了。
另外,引用[1]还提到了一些su的常用选项,如:
- `su -`:以登录shell方式切换用户(会加载目标用户的环境变量)
- `su -c`:以其他用户身份执行一条命令
注意:在Ubuntu等系统中,通常推荐使用sudo而不是直接使用root,因为安全性更高。但有时某些操作确实需要root用户,所以设置root密码也是一种解决方案。
现在,根据用户的问题,我们给出清晰的解决步骤。</think>### 解决 Linux "su: Authentication failure" 错误的方法
当在 Linux 系统中执行 `su root` 或 `su -` 命令切换用户时出现 "Authentication failure" 错误,通常是因为 root 账户未设置密码或密码不正确。以下是详细解决步骤:
#### 解决方案步骤:
1. **设置 root 密码**
使用当前具有 sudo 权限的用户执行:
```bash
sudo passwd root
```
系统会提示:
```
[sudo] password for <当前用户>: # 输入当前用户密码
New password: # 设置新的 root 密码(输入时不显示)
Retype new password: # 再次确认 root 密码
```
2. **验证切换**
再次尝试切换到 root 用户:
```bash
su - root # 或 su root
```
输入新设置的密码即可成功切换。
---
#### 技术原理说明:
1. **根本原因**:
- 在 Ubuntu 等发行版中,root 账户默认**未激活**(无密码)[^1][^4]
- 系统启用了 PAM 认证模块的严格密码策略[^3]
- 普通用户可能不在 `sudoers` 文件中[^2]
2. **sudo vs su 区别**:
| **命令** | **认证方式** | **环境变量** | **权限时效** |
|----------|-------------------|-------------|-----------------|
| `sudo` | 当前用户密码 | 保留原环境 | 单次执行(默认15分钟) |
| `su` | 目标用户密码 | 重置环境 | 持续到退出 |
---
#### 附加说明:
- 如果忘记 root 密码,可通过**单用户模式**重置
- 安全建议:
```bash
sudo visudo
```
在文件中添加 `username ALL=(ALL:ALL) ALL` 授予特定用户 sudo 权限[^3]
- 使用 `su -` 会加载 root 的环境配置,而 `su` 保留当前 shell 环境[^1]
阅读全文
相关推荐


















