背景
CoderDojo SapporoEastに、1年ぶりにやってきたNinjaが居た。
話を聞くと、
「塾とか部活とかで忙しくて、4ヶ月Ubuntu立ち上げてない。パスワード忘れた」
とのことだったので、シングルユーザーモードでパスワードを変えることにした。
しかし、該当するユーザーアカウントのパスワードを何度も変更しても上手く行かず、その日のDojoの時間をそれに費やしてしまったので、誰かが同じミスで時間を無駄にしないようにここに書き残しておく。
オチ
パスワード設定時は、NumLockとCapsLock要チェック。
流れ
既に、Ubuntu のログインパスワードを忘れた - Qiitaという記事が有る。そこを参照でも良い。
リカバリーモードでログインし、rootプロンプト起動
- BIOS起動直後にShiftキー連打
- GRUBメニューが表示されたら
Advanced option for Ubuntu
→(recovery mode)
と末尾に書かれているイメージを選択してEnterキーで起動 † - リカバリーメニューが表示されるので、
root
を選択してEnterキーで実行。 ‡
† この工程をする前に、シングルユーザーモードで起動するオプションを追記していたりする。シングルユーザーモード(パスワード入力しなくても管理者ログインできるモード)にもしもならなかったら、試して欲しい。
(recovery mode)
を選択した状態で e キーを押すと、起動オプションスクリプトが表示されるので、 quiet splash
と書かれている行に single
と追記して、 Control + x で保存して終了してシングルユーザーモードで起動する。(なにとなくしか把握していないでやって上手く行ってしまったので、要調査)
‡ 今回はプロンプトが起動された後に、
「お前これ管理者モードになるよ。本気でやるんだったらEnter押して。止めるんだったらControl + Dな」
という旨のメッセージが表示された
rootプロンプトでパスワードを変える
以下のコマンドを順番に実行。
コマンド例の先頭の #
は「管理者モードだよ」の表示なので、写さなくて良い。
# mount -o remount,rw / # ファイルシステム全体を読み書き可でマウントし直す
# pwconv # /etc/passwdと/etc/shadowの整合性を取るようにする
# passwd user # userのパスワードを変更する対話モードに移る
この後、新しいパスワードを尋ねられ、入力したらEnterキーを押す。
続いてパスワードの確認をされるので、入力したらEnterキーを押す。
最後に、以下コマンドで再起動。
# shutdown -r now # すぐに再起動させる。
それでもパスワード変更されない。ログインできない。
上の手順を行ってもなおログインできない場合、シングルユーザーモードでログインしてrootプロンプトでログインしたら、以下のコマンドを順番に実行。
# mount -o remount,rw /
# pwconv
# echo 'user:passwd' | chpasswd # user:passwdという文字列をchpasswdに渡す。
chpasswd
は、バッチモードでパスワードを変更するコマンドらしい。そこに ユーザー名:新しいパスワード
という標準出力を渡してやると、パスワードが変更される。
ただし、この方法はもちろんながら入力したパスワードが表示されてしまうので、あまり使わないほうが良い。
改めて、オチ。
パスワード設定時は、NumLockとCapsLock要チェック。
と最初に書いた。
Ninjaがパスワードをテンキーで入力していたが、NumLockのかかっている状態で入力していたために、 意図したパスワードが入力されていなかったというオチである。
どこでNumLockかかっていると気づいたか
Ninjaがログイン画面でテンキーによるパスワード入力時、選択ユーザーが上下したのを見て気づいた。