當我嘗試連接另一台機器時,執行以下命令後:
user1@host1:~$ ssh user2@host2
user2@host2's password:
我收到:
WARNING: Your password has expired.
You must change your password now and login again!
passwd: must be suid to work properly
Connection to host2 closed.
user1@host1:~$
host1 是 Ubuntu 作業系統機器
host2 是 Buildroot 作業系統機器
顯然我已經更改了密碼,但沒有幫助。
怎麼了?我該如何修復它?
答案1
解決方案:
問題的根源是我的 ARM 板上的日期。這就是「密碼已過期」的原因。
要設定正確的日期,請使用:
# date -s '[current date]'
ARM 板上的命令,以及:
# hwclock -w
保留硬體上的日期設定。
答案2
如果您對盒子有實體存取權限,則可以以 root 身分修復它,而無需 - 可能不會,除非盒子上有另一個使用者帳戶,該帳戶未強制更改密碼並且可以 sudo 或 su 至 root
答案3
您的 RootFS 似乎存在多個問題。
- 您的「passwd」執行檔似乎不是suid root
- 您的用戶設定似乎處於停用狀態。
在這種情況下,我認為你無法透過 ssh 修復它。您可以存取任何形式的控制台(例如:串行)嗎?
您是如何創建(或從哪裡獲得)您的 RootFS 的?
如果您有權存取控制台,請嘗試:
- 直接以 root 身分登入
- “passwd 用戶名”
- 輸入新的密碼
- 透過 ssh 重試
- 修復 /usr/bin/passwd 權限(詳細資訊取決於 busybox 的使用與否)