こんばんは、山田ハヤオです。Linuxを常用しています。
パスワードを忘れたときの復旧方法を毎回自分でも忘れてしまうのでメモ的に書いておこうと思います。
今回は適当に仮想環境にインストールされてたUbuntuで解説します。
まぁこれFedoraでもAlterでも同じようにできます。
Grubに入る
今回はRootパスワードも忘れてる場合を想定します。
まずPCが起動してメーカーのロゴが消えたらすぐにShiftキーを押し続けます。
うまくいけば下のようなGrubが出てきます。
まずはこの画面を出すのが第一段階です。
うまく出せない人はShiftのタイミングを変えてみてください。
bashで起動する
Grub画面が出たら「e」キーを押してください。
矢印キーで下にスクロールしてlinux /boot/vmlinuz
という行を探し出します。
「END」キーでその行の一番最後に移動してください。
右端で折り返してるので注意が必要です。
この最後に init=/bin/bash
と入力してください。最初に空白を入れるのを忘れないでください。
Grubでは英語配列なので日本語キーの「^」を押せば「=」が入力されます。
その後、F10キーを推してください。
うまくいけばこんな画面になります。
おめでとう今あなたはこのOSの管理者です。
でもまだ完全じゃありません。
mount -rw -o remount /
pwconv
これでやっとすべてのユーザーのパスワードを自由に変えられます。
passwd root
好きにパスワードを打って変えてください。
これでrootが変更できました。続いて一般ユーザーも変更します。
一般ユーザー名がわからない場合は以下のコマンドで一覧がわかります。
cat /etc/passwd | cut -d ":" -f 1
英語配列なのでうつのがちょっと難しいです…
一般ユーザーも無事に変更できました。
再起動する
Linuxでは再起動するときにreboot
コマンドを使います。
しかし、特殊な方法で起動してるのでこの方法は使えません。
reboot -f
このコマンドで無理やり再起動します。
再起動後は普通に起動すれば新しいパスワードでログインできます。お疲れ様でした。
追記
コメントで「誰でもパスワードを回避できてしまうのが怖い」という人がいたのでそれを防ぐ方法を解説します。
上記の方法でLinuxカーネルに直接パラメータを渡して起動していました。
そのためGrubの項目編集をパスワードで保護してしまえばこの記事の方法は使えません。
パスワードハッシュを生成する
grub-mkpasswd-pbkdf2
設定したいパスワードを2回入力してください。
PBKDF2 hash of your password is
移行の謎の文字列はこのあと使いますのでどこかにコピペしておきます。
設定ファイルを作成
touch /etc/grub.d/38_grub_password_auth
nano /etc/grub.d/38_grub_password_auth
テキストエディタのnano
が起動したら以下の設定をコピペしてください。
set superusers="username"
password_pbkdf2 username <password>
<password>
の部分を先程生成した謎の文字列に置き換えてください。
その後、以下のコマンドでGrubの設定ファイルを再生成します。
grub-mkconfig -o /boot/grub/grub.cfg
これでGrubが保護されてパスワードを勝手に変えられる心配がなくなります。
ただし油断は禁物
ただ、これでも完璧とは言えません。/boot
のディスクが暗号化されていないとHDD(SSD)を外してGrubの設定ファイルを書き換えられてしまうかもしれません。
また、BIOS(UEFI)をパスワードで保護しておらず、USBやDVDからOSを起動できてしまう場合も設定ファイルを直接いじられてしまう可能性があります。
どの方法も簡単にできてしまうので注意が必要です。
コメント
逆にinit=/bin/bashを禁止する方法は有りますか?
知らない人でもrootログインできてしまうのはこわいです
コメントありがとうございます。ブートローダーのメニューをパスワードで保護する方法があります。
記事に方法を追加しますので参考にしてみてください。