「シングルユーザーモードのやり方が古いままで通用しない」
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は別アプローチが必要
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
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.
4. SELinux再ラベル付けフラグを作成(最重要)
SELinuxが有効な状態でpasswdを実行すると、/etc/shadowのコンテキストが書き換わる場合があります。このまま再起動するとSELinuxがshadowへのアクセスを拒否し、二度とログインできなくなる事故が頻発します。
必ず再ラベル付けフラグを作成してから再起動します。
sh-5.1# touch /.autorelabel sh-5.1# exit switch_root:/# exit
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_handoff を rw 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
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:::
ログイン直後に必ず 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 |
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:CentOS6の起動時に詳細情報を表示する
- 前のページへ:Linuxをシングルユーザーモードで起動する|CentOS 6 / RHEL 9世代別のレスキューモード手順とパスワード復旧
- この記事の属するカテゴリ:Linuxtipsへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます