rootパスワードを忘れた場合の再設定方法|GRUB2でRHEL9/AlmaLinux/Ubuntu対応

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips > rootパスワードを忘れた場合の再設定方法|GRUB2でRHEL9/AlmaLinux/Ubuntu対応
「rootパスワードを忘れて本番サーバーに入れない…」
「シングルユーザーモードのやり方が古いままで通用しない」

rootパスワードを忘れても、物理アクセス(またはコンソールアクセス)さえあれば、Linuxを特殊な起動モードで立ち上げてpasswdコマンドで再設定できます。
ただし、CentOS6時代の手順(init=/bin/bash)はGRUB2・systemdを使う現代のディストロ(RHEL7/8/9, AlmaLinux, Rocky Linux, Ubuntu 20.04/22.04/24.04)では通用しません。

この記事では、GRUB2のカーネルパラメータ編集による現代的なroot再設定手順を、RHEL系(rd.break方式)とUbuntu系(init=/bin/bash方式)の両方で解説し、SELinux再ラベル付け、暗号化ディスク、クラウドVMでの注意点までを現役サーバー管理者目線でまとめます。

この記事のポイント

・rootパスワードはGRUB2カーネル編集→特殊モード起動→passwd再設定で復旧できる
・RHEL/AlmaLinux/Rocky系は rd.break、Ubuntu系は init=/bin/bash が定石
・SELinux有効環境では /.autorelabel が必須、忘れるとログイン不能
・クラウドVM・暗号化ディスク・Secure Bootは別アプローチが必要


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

rootパスワードを忘れた時の再設定の前提条件

rootパスワード再設定は「物理またはコンソールにアクセスでき、GRUBブートメニューを操作できる」ことが前提です。
逆に言えば、外部からSSHしかできない環境ではこの方法は使えません。

物理サーバー:キーボード・モニタ接続またはIPMI/iLO/iDRAC等のリモートコンソール
VMware/Hyper-V:仮想コンソールからGRUB操作可能
AWS EC2/GCP/Azure:通常のSSHではGRUB操作不可。EBSデタッチ→別インスタンスでマウント→/etc/shadow編集 など別アプローチが必要
LUKS暗号化ディスク:復号パスフレーズも必要
Secure Boot有効:カーネル編集に制約がかかる場合あり

本記事は標準的な物理サーバー・仮想マシン(GRUB2+systemd)を対象に解説します。

RHEL/AlmaLinux/Rocky Linux系のroot再設定手順(rd.break方式)

RHEL7以降のディストロは、initramfs内でシェルを取得する「rd.break」が公式手順です。
RHEL9.4・AlmaLinux 9・Rocky Linux 9で動作確認済み。

1. 起動時にGRUBメニューでカーネルを編集

サーバーの電源を入れ、GRUBメニュー(数秒間表示される)でカーソルを通常起動エントリに合わせて「e」キーを押します。
カーネル編集画面が表示されたら、linuxまたはlinux16で始まる行を探し、行末に rd.break enforcing=0 を追記します。

# 編集前(一例) linux ($root)/vmlinuz-5.14.0-... root=/dev/mapper/rhel-root ro rhgb quiet # 編集後 linux ($root)/vmlinuz-5.14.0-... root=/dev/mapper/rhel-root ro rhgb quiet rd.break enforcing=0

Ctrl + x(または F10)で編集内容を反映して起動します。

2. ルートファイルシステムをrwで再マウント

initramfs のシェル(switch_root:/#)が表示されたら、sysrootをrw(読み書き可)で再マウントします。

switch_root:/# mount -o remount,rw /sysroot switch_root:/# chroot /sysroot sh-5.1#

3. passwdコマンドでパスワード再設定

chrootした状態で passwd を実行します。引数なしでpasswdを実行すると、現在の環境(chroot内)のrootユーザーのパスワードが変更されます。

sh-5.1# passwd Changing password for user root. New password: Retype new password: passwd: all authentication tokens updated successfully.

「all authentication tokens updated successfully」が表示されれば成功です。

4. SELinux再ラベル付けフラグを作成(最重要)

SELinuxが有効な状態でpasswdを実行すると、/etc/shadowのコンテキストが書き換わる場合があります。
このまま再起動するとSELinuxがshadowへのアクセスを拒否し、二度とログインできなくなる事故が頻発します。

必ず再ラベル付けフラグを作成してから再起動します。

sh-5.1# touch /.autorelabel sh-5.1# exit switch_root:/# exit

exit を2回打つと再起動されます。初回起動時にSELinuxが全ファイルを再ラベル付けするため通常より時間がかかりますが、これは正常な動作です。

Ubuntu/Debian系のroot再設定手順(init=/bin/bash方式)

Ubuntu 20.04/22.04/24.04 LTS、Debian 11/12 でも基本は同じですが、カーネルパラメータが異なります。

1. GRUBメニューでカーネルパラメータを編集

GRUBメニュー(Shiftキーで表示)で通常起動エントリを選び「e」キーを押します。
linuxで始まる行末の ro quiet splash $vt_handoffrw init=/bin/bash に書き換えます(roをrwに、quiet splashなどを削除)。

# 編集前 linux /boot/vmlinuz-6.8.0-... root=UUID=xxx ro quiet splash $vt_handoff # 編集後 linux /boot/vmlinuz-6.8.0-... root=UUID=xxx rw init=/bin/bash

Ctrl + x で起動します。

2. passwdでパスワード再設定

ルートシェルが取得できたら passwd でパスワードを変更します。

root@(none):/# mount -o remount,rw / root@(none):/# passwd root New password: Retype new password: passwd: password updated successfully

Ubuntuはデフォルトでrootアカウントが無効化されていますが、passwdコマンド自体は機能します。再有効化する形になります。

3. 再起動

init=/bin/bashで起動した場合、shutdownコマンドは動作しないため、強制的にsync→reboot -fで再起動します。

root@(none):/# sync root@(none):/# sync root@(none):/# exec /sbin/init

または reboot -f でも可。sync を2回打つのは古典的なディスクフラッシュの慣習で、ファイルシステム破損を避けるための保険です。

passwdの代替:シャドウファイル直接編集(緊急時のみ)

何らかの理由でpasswdコマンドが使えない時、/etc/shadowを直接書き換えてパスワードを無効化する裏技があります。
本番運用では推奨されませんが、緊急復旧時の選択肢として知っておくと役立ちます。

# 該当行を vi で開く sh-5.1# vi /etc/shadow # root行の2フィールド目(パスワードハッシュ)を空にする # 変更前: root:$6$xxxxxxxx$yyyyy...:19000:0:99999:7::: # 変更後: root::19000:0:99999:7:::

これでrootは「パスワードなしでログイン可能」状態になります。
ログイン直後に必ず passwd で新パスワードを設定してください。

「Authentication token manipulation error」が出た時の対処法

passwd実行時にこのエラーが出る場合、典型的な原因は3つです。

1. ルートファイルシステムが読み取り専用

sysrootをrwで再マウントしていないケース。再マウントしてから再実行します。

sh-5.1# mount | grep sysroot /dev/mapper/rhel-root on /sysroot type xfs (ro,...) ← roになっている sh-5.1# mount -o remount,rw /sysroot

2. chrootを忘れている

chroot /sysroot を打たないままpasswdを実行すると、initramfsの一時環境のパスワードが書き換わるだけで、本来の/etc/shadowは更新されません。必ずchroot後に実行します。

3. SELinuxラベル不整合

過去にpasswdを実行した際 /.autorelabel を忘れていた、enforcing=0 を付け忘れた、というケース。
復旧手順は同じ:rd.break→chroot→passwd→touch /.autorelabel→reboot。enforcing=0 を付ければ、SELinuxラベル不整合状態でも書き換えが通ります。

クラウドVM(AWS EC2/GCP/Azure)でのroot再設定

クラウドVMでは通常GRUB操作ができないため、別アプローチが必要です。
よく使われる方法は「EBSデタッチ→別インスタンスでマウント→/etc/shadow編集→アタッチし直す」の流れです。

AWS EC2:対象EC2を停止→EBSをデタッチ→別の動いているEC2にアタッチ→マウントして/etc/shadow編集→デタッチして元のEC2に戻す
GCP:シリアルコンソールアクセス(インタラクティブ)を有効にできれば、GRUB編集が可能になる場合がある
Azure:VM Resetブレード→Reset password機能でVMエージェント経由のリセット可能

クラウド事業者のドキュメントを最優先で確認してください。仕様変更が頻繁に入る領域です。

rootパスワード再設定後にやるべきセキュリティ対策

緊急復旧でrootに入れるようになったら、安全な運用に戻すための後処理を必ず実施します。

1. 強固なパスワードに再設定

緊急時に簡単なパスワードを使ったままにせず、12文字以上の英数記号混在の強固なパスワードに変えます。

# パスワード文字数ポリシーを確認 $ grep -E 'minlen|minclass' /etc/security/pwquality.conf

2. SSH鍵認証への切替

本番サーバーは鍵認証のみにしてrootパスワードログインを禁止します。

# /etc/ssh/sshd_config PermitRootLogin prohibit-password PasswordAuthentication no

3. パスワード管理ツールの導入

1Password・Bitwardenなどのパスワード管理ツールに保管しておけば、二度と「忘れた」事態になりません。複数人で共有する場合はチーム機能のあるツールを選びます。

本記事のまとめ

rootパスワードを忘れても、GRUB2のカーネルパラメータ編集とpasswdコマンドで再設定できます。
ただし「rd.break+chroot+/.autorelabel+enforcing=0」の4点セットを正しく押さえないと、SELinuxで二次事故を起こします。
RHEL系とUbuntu系で手順が異なる点、クラウドVMではそもそも別アプローチが必要な点も覚えておきましょう。
やりたいこと コマンド
RHEL/AlmaLinux/Rockyでroot再設定(GRUB編集) rd.break enforcing=0 を追記
Ubuntu/Debianでroot再設定(GRUB編集) rw init=/bin/bash に書き換え
sysrootをrwで再マウント mount -o remount,rw /sysroot
chrootしてroot環境に入る chroot /sysroot
rootパスワードを変更 passwd
SELinux再ラベル付けフラグ作成 touch /.autorelabel
SELinuxを一時無効化 setenforce 0
SSH鍵認証のみ許可 PermitRootLogin prohibit-password

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。