LinuxのrootパスワードをSE時代に忘れてサーバーに入れなくなった話|シングルユーザーモード復旧の経験と現役講師が語るパスワード管理の鉄則

HOMEリナックスマスター.JP 公式ブログLinux学習ガイド > LinuxのrootパスワードをSE時代に忘れてサーバーに入れなくなった話|シングルユーザーモード復旧の経験と現役講師が語るパスワード管理の鉄則
宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
「rootパスワードを忘れてしまったんですが、もうこのサーバーには入れないんですか?」
セミナーで受講生から実際にこの質問を受けたとき、ぼくは思わず笑ってしまった。笑ったのは、まったく同じことをSE時代にやらかした経験があるからだ。

2003年のある夕方、SIerに勤めていたぼくは、社内の開発用Linuxサーバーのrootパスワードが「誰も知らない」状態になっていることに気づいた。複数の開発者がrootを共有して作業していたサーバーで、誰かがパスワードを変更したのだが、申し送りがなく、ホワイトボードの記載も更新されていなかった。翌朝には開発チームの作業が丸ごと止まる。夕方5時に発覚して、ぼくは一人でサーバー室に残ることになった。

この記事では、RHEL 9.4 / Ubuntu 24.04 LTSで動作確認した復旧手順とあわせて、20年以上Linuxサーバーを運用してきた経験から得た「そもそもこうなってはいけない」ための鉄則を解説する。

この記事のポイント

・rootパスワードを忘れてもシングルユーザーモードで復旧できる
・RHEL9系はGRUBで rd.break を追加し /sysroot をrw再マウントして変更する
・Ubuntu 24.04はGRUBのrecovery modeから直接rootシェルに入れる
・再発防止の本質は「rootを個人間で直接共有しない運用設計」にある


LinuxのrootパスワードをSE時代に忘れてサーバーに入れなくなった話|シングルユーザーモード復旧の経験と現役講師が語るパスワード管理の鉄則
「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

2003年のSE時代、夕方5時にrootパスワードが「誰もわからない」と判明した日のこと

当時のぼくのチームでは、社内の開発用CentOS(当時はRed Hat Linux系)サーバーを複数の開発者でrootを共有して使っていた。パスワードはホワイトボードに書いてあり、変更しても申し送りをする習慣がなかった。

ある日の夕方、開発作業をしていたメンバーがSSHで接続できなくなっていることに気づいた。「Password incorrect」というメッセージが返り続け、チーム全員に確認をとっても「自分は変えていない」の一点張り。調査の結果、その週末に誰かがパスワードを変更したが、変更者本人も何を設定したか覚えていないことが分かった。

そのサーバーが止まると開発環境が丸ごと使えなくなる。翌朝には開発チームの全員の作業が滞る。ぼくは「Linuxが一番詳しい」という理由だけで一人サーバー室に残ることになった。

当時知っていたのは「rootパスワードを変えるには passwd コマンドを使う」ことだけだった。rootになれなければpasswdも打てない。「再インストールしかないか」と覚悟し始めたところで、先輩に電話をかけた。

「シングルユーザーモードがあるだろ」
それがぼくとシングルユーザーモードの最初の出会いだった。

シングルユーザーモードという「緊急の出口」の仕組みを理解する

Linuxには通常の起動とは別に「シングルユーザーモード」(systemd環境ではemergencyターゲットやrescueターゲット)と呼ばれる起動モードがある。これはネットワークや各種デーモン(常駐プログラム)を起動せず、rootシェルだけを立ち上げる最小限の動作モードだ。

このモードの重要な特徴は、パスワード認証なしでrootシェルに入れるという点にある。物理的にサーバーのコンソールにアクセスできる人間、つまりサーバーの目の前にいる人間だけが使える「緊急の非常口」だ。

セミナーで3,100名以上を指導してきた中で、シングルユーザーモードを知らなかったという受講生は非常に多い。コマンドの使い方は勉強するのに、起動プロセスの仕組みは後回しにされやすい。でも現場では「rootパスワードを誰も知らない」「ディスクが壊れてfsckを実行したい」「起動に失敗してブートローダー設定を修正したい」といった場面で必ずと言っていいほど必要になる知識だ。

一点注意してほしいのは、シングルユーザーモードが使えるのはコンソールに物理的にアクセスできる環境に限られることだ。データセンターに設置されたサーバーやVPSでは、専用の管理コンソール(ILO、iDRAC、VPSのコントロールパネル等)から入る必要がある。普段からそのアクセス経路を確認しておくことが重要だ。

参考: Linuxのsuでrootになって全作業をしていた頃の話|sudoの設計思想を理解して変わった権限管理の意識

RHEL 9 / Rocky Linux 9 でrootパスワードを復旧する手順

現代のRHEL9系(Rocky Linux 9・AlmaLinux 9を含む)はsystemdが採用されているため、昔のSysV流(init=/bin/sh等)とは手順が異なる。GRUBのカーネルパラメータに rd.break を追加し、initramfs(初期RAMディスク)の段階でシェルを取得する方法が標準だ。

RHEL 9.4(kernel 5.14.0-427.13.1.el9_4)で実際に動作確認した手順を紹介する。

1. GRUBメニューで起動エントリを編集する

サーバーを再起動し、GRUBのカウントダウン中に e キーを押してエントリ編集モードに入る。

linux(または linuxefi)で始まる行を探し、その行の末尾に移動する。行末の quiet の後ろにスペースを1つ入れて rd.break を追加する。

# GRUBの編集画面でカーネルパラメータ行の末尾に rd.break を追記する # 変更前(例): linux /vmlinuz-5.14.0-427.13.1.el9_4.x86_64 root=/dev/mapper/rhel-root ro rhgb quiet # 変更後(末尾に rd.break を追記): linux /vmlinuz-5.14.0-427.13.1.el9_4.x86_64 root=/dev/mapper/rhel-root ro rhgb quiet rd.break # 編集後に Ctrl+X で起動するとinitramfsシェルに入る # プロンプトが switch_root:/# になれば成功

2. /sysroot を読み書き可能で再マウントしてpasswdを変更する

initramfsシェルに入った状態では、実際のルートファイルシステムは /sysroot に読み取り専用でマウントされている。パスワードを変更するには書き込み可能な状態に再マウントしてから操作する必要がある。

# /sysroot を読み書き可能(rw)で再マウント # mount -o remount,rw /sysroot # /sysroot をルートディレクトリとして切り替える(chroot) # chroot /sysroot # rootパスワードを変更する # passwd root Changing password for user root. New password: Retype new password: passwd: all authentication tokens updated successfully. # SELinuxラベルの再設定を指示するファイルを作成(SELinux有効環境では必須) # touch /.autorelabel # chrootを抜けてinitramfsシェルに戻る # exit # システムを再起動する # exit

再起動後、設定した新しいパスワードでrootログインできるようになる。

注意: SELinuxが有効な環境(RHEL9のデフォルト設定)では touch /.autorelabel を忘れると、次回起動時にSELinuxラベルの不整合でシステムへのログイン自体ができなくなる場合がある。必ず実行することを鉄則にしてほしい。

Ubuntu 24.04 LTS でのrootパスワード変更(recovery mode利用)

Ubuntu 24.04 LTSでは、GRUBの「Advanced options for Ubuntu」に用意されたrecovery mode(復旧モード)を使ってrootシェルに入れる。RHELのrd.break方式と比べて操作が直感的なので、Ubuntuサーバーを担当する場合はあわせて覚えておきたい。

1. GRUBでrecovery modeを選択する

起動時のGRUBメニューで Advanced options for Ubuntu を選択し、表示された一覧から Ubuntu ... (recovery mode) と記載されているエントリを選ぶ。

2. Recovery MenuからDrop to root shellを選択する

Recovery Menuが表示されたら root - Drop to root shell prompt を選択する。確認ダイアログが出た場合はEnterキーを押して続行する。

# ファイルシステムを読み書き可能で再マウント(recovery modeでは読み取り専用の場合がある) # mount -o remount,rw / # rootパスワードを変更する # passwd root New password: Retype new password: passwd: password updated successfully # 再起動する # reboot

UbuntuはSELinuxではなくAppArmor(アプリケーション単位のアクセス制御機構)を使用しているため、touch /.autorelabel は不要だ。再起動後に新しいパスワードでrootログインできる。

rootパスワードが「誰もわからない」トラブルを防ぐ3つの鉄則

20年以上サーバーを運用してきた経験から言うと、rootパスワードが「誰も知らない」状況になるのにはパターンがある。そしてそれは「パスワードを忘れた」という個人の失敗ではなく、運用設計の失敗が根本原因であることがほとんどだ。

鉄則1. rootを複数人で直接共有しない

「全員がrootでログインして作業する」状態がそもそもの問題だ。ぼくのSE時代のチームがまさにこれだった。rootを共有すると、誰かがパスワードを変えたとき申し送りが抜けやすく、作業の履歴も追えなくなる。

解決策は各自のユーザーアカウントを作り、sudo 経由で必要な権限を付与する設計にすることだ。rootのパスワードはシステム管理者1名だけが知り、緊急時以外はsudo経由で作業する。この設計にするだけで「誰もrootパスワードを知らない」状況は根本から防げる。

鉄則2. rootパスワードを仕組みで記録する

「変更したら申し送りする」というルールは人間の記憶と習慣に依存しているため、継続が難しい。パスワードマネージャー(1Password・Bitwarden等)やシークレット管理ツール(HashiCorp Vault等)を使って、変更時に記録が残る仕組みにすることが現代の標準だ。

私が現場でよく見かけるのが、「パスワードはどこかに書いてある」という前提で引き継ぎが完了し、実際には誰も知らないという状況だ。ホワイトボードやスプレッドシートへの記載は「見えてはいけない情報が見えてしまう」物理セキュリティリスクもある。認証情報管理ツールへの移行は優先度を上げて取り組んでほしい。

鉄則3. シングルユーザーモードへの入り方を事前にドキュメント化する

障害が起きた状況でシングルユーザーモードの手順を初めて調べるのは、ただでさえ混乱した状況をさらに難しくする。手順は事前に把握して、サーバーの管理ドキュメントに記載しておくことを強くすすめる。

特に担当サーバーのOS・GRUBバージョン・SELinux有効無効を事前に確認しておくと、実際の障害時に迷わなくて済む。また、物理コンソールへのアクセス経路(データセンターの入館方法・VPSのコントロールパネルURL・ログイン情報の保管場所)もあわせて記録しておくことが重要だ。シングルユーザーモードは物理アクセスがなければそもそも使えないからだ。

参考: Linuxで初めてrootになった日の話|手が震えた経験と20年後に伝えたいroot運用の3つの心得

まとめ

あの夜、先輩の電話一本でシングルユーザーモードの存在を教わり、無事にパスワードを変更できた。でも本当の問題は「パスワードを忘れた」ことではなく、「rootを全員で共有して申し送りなしに変更できる状態にしていた運用設計」にあった。

状況 対処・復旧方法
RHEL 9 / Rocky Linux 9でrootパスワードを忘れた GRUBで rd.break を追記 → mount -o remount,rw /sysrootchroot /sysrootpasswd roottouch /.autorelabelexit x2
Ubuntu 24.04でrootパスワードを忘れた GRUBのrecovery mode → root shell → mount -o remount,rw /passwd rootreboot
SELinux有効環境での注意点 chroot後に touch /.autorelabel を作成しないと次回起動で認証不可になる危険がある
再発防止の運用設計 rootを共有せずsudo運用へ移行。パスワードはパスワードマネージャーで記録管理する
rootパスワードの復旧手順を知っておくことは大切だが、「知っておく知識」として持ちながら「使わずに済む運用」を作ることがサーバー管理者の本当の仕事だと思っている。

rootパスワードの復旧より先に「安全な運用の型」を身につけてください

rootを複数人で共有して管理するのは「運用設計の失敗」です。sudoの使い方、ユーザー管理、ファイルシステムの仕組みまで、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

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

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

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

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

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

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

姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

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

この記事を書いた人

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

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

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