“為什么我輸入對了密碼,還是不能用?
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 或重設密碼 |