別のマシンに接続しようとすると、以下のコマンドを実行します。
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 OSマシンです
host2はBuildroot OSマシンです
もちろんパスワードを変更しましたが、効果はありませんでした。
何が問題なのでしょうか? どうすれば修正できますか?
答え1
解決:
問題の原因は、ARM ボード上の日付です。これが「パスワードの有効期限が切れています」という理由です。
正しい日付を設定するには、以下を使用します。
# date -s '[current date]'
ARM ボード上のコマンド、および:
# hwclock -w
ハードウェアの日付設定を保持します。
答え2
ボックスに物理的にアクセスできる場合は、rootとして修正できます。ただし、ボックスにパスワード変更が強制されていない別のユーザーアカウントがあり、sudoまたはsuでrootになれる場合は別です。
答え3
RootFS に複数の問題があるようです。
- 「passwd」実行ファイルはsuid rootではないようです
- ユーザー設定が無効状態になっているようです。
この状態では、ssh 経由で修正することはできないと思います。何らかの形式のコンソール (例: シリアル) にアクセスできますか?
RootFS をどのように作成しましたか (またはどこで入手しましたか)?
コンソールにアクセスできる場合は、以下を試してください。
- ルートとして直接ログインする
- 「パスワード ユーザー名」
- 新しいパスワードを入力
- ssh経由でもう一度試してください
- /usr/bin/passwd の権限を修正します (詳細は busybox の使用の有無によって異なります)