「久しぶりにログインしようとしたけどパスワード忘れてログインできない…」
時々ありますよね。
私も久しぶりにラズパイをいじろうとしたらパスワードを忘れてしまってました。
思い当たるパスワードをすべて試したんですが、ログインできない。
「まぁ大したデータも入ってないからOS入れなおしてもいいけど…。」
「でも万が一、オンプレ本番環境とかでこうなると困るな…」
と思い、ラズパイでシングルユーザーモードで起動する方法を調べました。
※この操作は自己責任で行ってください。この操作でOSが起動しなくなった等の苦情等は受け付けません。
Contents
シングルユーザーモードとは?
「シングルユーザーモードって何よ?」
と思われた方もいるかもしれません。
Windowsで言うところの「セーフモード」でしょうか。
一般的なLinuxの用語で、ランレベルは「1」です。
OSをブートするときにシングルユーザーモードに切り替えることができます。
※ラズパイは事前準備が必要になります。
シングルユーザーモードの主な利用用途は今回のようなパスワードを忘れたときだと思います。
このモードを使用するとパスワードなしでシステムに入ることができます。
非常時には大変便利な機能ですが、その反面かなり危険な機能だと言えます。
システム管理者として気を付けなければいけないこと
先の説明のなかで「OSブート時にシングルユーザーモードに切り替え可能」「パスワードなしでシステムに入れる」と説明しました。
つまり物理マシンの前にいる人は誰でもシステムに入れるということになります。
ある意味最悪な機能です。
バックドア残し放題です。
爆弾残し放題です。
有効な対策は「信用していない人をマシンに触れさせない」以外ありません。
だからサーバールームは入場規制が厳しいですよね。
聞いたことがある話だと、
「信用していない人がいる時はマシンの前から席を外してはいけない」
というルールがある企業もあるそうです。
絶対に悪用厳禁です。
環境
Paspberry Pi 3 model b
OS: Ubuntu 16.04
作業した端末
Windows10 Home 64bit
手順要約
- shutdown -h now
- cmdline.txtの書き換え
rw init=/bin/sh - OS起動、suコマンド、passwdコマンド
- shutdown -h now
- cmdline.txtをもとに戻す
- OS起動することの確認
手順
シングルユーザモードで起動する準備
ラズパイ以外のmicro SDカードをマウントできるマシンで操作します。
まずはラズパイをシャットダウンしてmicro SDカードを別の端末で読み込みます。
SDカードのアダプターとかを準備してください。
私はDドライブとEドライブがWindowsにマウントされて、Dドライブの直下にcmdline.txtがありました。
この「cmdline.txt」を編集します。
編集する内容は、末尾に以下のコードを追加します。
末尾というか行末?
rw init=/bin/sh
これで準備は完了です。
シングルユーザーモードで起動
microSDカードをラズパイに挿して起動します。
しばらくログが流れますが、ログの流れるのが停止したらEnterキーでも押すとコマンドを入力するプロンプトが表示されます。
ここでsuコマンドを実行するとrootになれます。
あとはpasswdコマンドでrootのパスワードの変更してください。
パスワードの変更が終わったらたぶんmicroUSBケーブルを抜いて大丈夫だと思います。
私はexitでrootから抜けて、再度exitでプロンプトから抜けようとすると例外が発生しましたw
シングルユーザーモードを解除する
ラズパイをシャットダウンして、micro SDカードを別の端末で読み込みます。
修正したcmdline.txtの末尾に挿入したコードを削除します。
あとは今まで通りmicro SDカードをラズパイに挿して、起動すればオッケーです。
ちょっとだけ起動するまでドキドキしながら待てば大丈夫です。
参考にさせていただいたサイト
[Single user mode] When you lost the root or pi password – Raspberry Pi Forums
https://www.raspberrypi.org/forums/viewtopic.php?t=127471
ありがとうございました!!