为什么我输入对了密码,还是不能用 su 切换到 root?
“为什么我输入对了密码,还是不能用
su
切换到 root?”
其实这背后可能不是“密码错了”,而是系统不允许你用 su
切 root,即使密码对了。
👇 以下是最常见的几个真正原因:
❌ 1. Root 用户没有设置密码(密码正确也没用)
在 Ubuntu 等系统中,root 用户默认是没有密码的,也就是说:
-
你输入的密码其实是你自己用户的密码,而不是 root 的。
su
命令要求你输入的是 目标用户(root)的密码,而不是你当前用户的密码!
如果 root 没有密码(或者被锁定),就算你输入了“正确”的密码,也会提示:
Authentication failure
✅ 解决方法:设置 root 密码(前提是你有 sudo 权限):
sudo passwd root
然后再试:
su -
❌ 2. 你当前用户没权限使用 su
在某些系统(如 Ubuntu、Debian、CentOS 最小化安装)中,系统限制了谁可以使用 su
命令。
你可以检查 /etc/pam.d/su
文件中是否有这行:
auth required pam_wheel.so use_uid
这表示:只有在 wheel
组中的用户才可以使用 su
。
✅ 解决方法:将当前用户加入 wheel
或 sudo
组:
sudo usermod -aG wheel yourusername
然后注销或重启,再试一下 su -
。
❌ 3. 你输入的是当前用户的密码,而不是 root 的密码
这个是最常见的误解!
su
切换用户时,密码是目标用户(root)的密码。
sudo
才是验证当前用户的密码。
所以:
命令 | 验证哪个密码? |
---|---|
su | 目标用户(如 root) |
sudo | 当前用户 |
❌ 4. Root 被锁定(如 /etc/shadow
中密码字段是 !
或 *
)
可以检查:
sudo grep '^root:' /etc/shadow
如果你看到类似:
root:!*:...
说明 root 用户被锁定,su
肯定失败。
✅ 设置 root 密码来解锁:
sudo passwd root
✅ 最推荐做法:使用 sudo
最安全、现代、推荐的方式是使用 sudo
来执行需要 root 权限的操作:
sudo -i # 获取 root shell
sudo <命令> # 执行单条命令
🧾 总结
问题 | 是否可能 | 解决方法 |
---|---|---|
Root 没有密码 | ✅ 常见 | 设置 root 密码: |
当前用户没权限用 | ✅ 常见 | 加入 |
输入了当前用户密码 | ✅ 非常常见 | su 要求的是目标用户密码(root) |
Root 被锁定 | ✅ 有时 | 解锁 root 或重设密码 |