シングルユーザーモード徹底解説:基本から学ぶシステムメンテナンスの要

コンピュータシステム、特にサーバー用途で利用されるUNIX系オペレーティングシステム(OS)には、通常のマルチユーザー環境とは異なる特別な起動モードが用意されています。その代表的なものが「シングルユーザーモード」です。 シングルユーザーモードは、システム管理者(rootユーザー)のみがコンソールから直接ログインし、システムメンテナンスやトラブルシューティングを行うための最小限の環境を提供する動作モードです。 通常、ネットワーク機能は無効化され、システム起動時に自動実行される多くのサービス(デーモン)も起動しません。これにより、他のユーザーやプロセスからの干渉を受けずに、システムの根幹に関わる操作を安全に行うことが可能になります。

この記事では、シングルユーザーモードの基本的な概念、目的、利用方法、そして関連する他のモード(レスキューモード、緊急モードなど)との違いについて、初心者にもわかりやすく解説していきます。システム管理を行う上で非常に重要な知識となりますので、ぜひ最後までお読みください。

シングルユーザーモードの目的

シングルユーザーモードは、主に以下のような目的で利用されます。

  • ファイルシステムのチェックと修復: システムが正常に起動しない、あるいはファイルシステムに不整合が生じた疑いがある場合に、fsck (File System Consistency Check) コマンドを実行してファイルシステムの状態を検査し、問題を修復します。シングルユーザーモードでは、対象のファイルシステムを安全にアンマウントまたは読み取り専用でマウントした状態でチェックできるため、データ破損のリスクを最小限に抑えられます。
  • rootパスワードのリセット: 管理者(root)のパスワードを忘れてしまった場合、シングルユーザーモードで起動し、パスワードなしでroot権限を取得した後、passwd コマンドを使用して新しいパスワードを設定できます。これは、物理的にサーバーにアクセスできる場合の最終手段として用いられます。
  • 起動プロセスの問題解決: システムの起動に必要な設定ファイル(例: /etc/fstab, /etc/inittab, systemdの設定ファイルなど)に誤りがあり、システムが正常に起動シーケンスを完了できない場合に、シングルユーザーモードで起動して設定ファイルを修正します。
  • 重要なシステム設定の変更: 通常のマルチユーザーモードでは変更が難しい、あるいはリスクが伴うシステム全体の重要な設定(カーネルパラメータの変更、ハードウェア関連設定など)を行う際に利用されることがあります。
  • システムバックアップ・リストア: システム全体の一貫性を保った状態でバックアップやリストアを行いたい場合に、他のプロセスが動作していないシングルユーザーモードが利用されることがあります。
  • ハードウェアメンテナンス: ハードウェアの交換や診断を行う前に、OSを最小限の状態で起動させておくために利用されることもあります。
シングルユーザーモードは、システムに対する強力な権限(root権限)をパスワードなしで(あるいは簡易な方法で)取得できる場合があるため、物理的なセキュリティが確保されていることが前提となります。サーバー室への入退室管理や、BIOS/UEFI、ブートローダー(GRUBなど)へのパスワード設定が推奨されます。

シングルユーザーモードへの入り方

シングルユーザーモードへ移行する方法は、OSの種類やバージョン、使用しているブートローダー(GRUB, LILO, systemd-bootなど)によって異なります。ここでは代表的なLinuxディストリビューションとmacOSの方法を説明します。

Linux (GRUBブートローダーの場合)

多くのLinuxディストリビューションで標準的に使われているGRUB (GRand Unified Bootloader) を利用している場合、以下の手順でシングルユーザーモード(またはそれに相当するレスキューモードや緊急モード)に入ることができます。

  1. システムの電源を入れるか、再起動します。
  2. GRUBのブートメニューが表示されたら(表示されない場合はShiftキーやESCキーを押す必要がある場合があります)、起動したいカーネルのエントリーを選択し、e キーを押して編集モードに入ります。
  3. カーネルパラメータを編集する画面が表示されます。カーソルを移動し、linux または linux16, linuxefi で始まる行を探します。この行の末尾に、目的のモードに応じたパラメータを追加します。
    • 伝統的なシングルユーザーモード (SysVinit系や互換): 行末にスペースを入れて single または 1 を追加します。
    • Systemd レスキューモード: 行末にスペースを入れて systemd.unit=rescue.target を追加します。これはシングルユーザーモードに似ていますが、いくつかの基本的なサービスとファイルシステムのマウントが行われます。
    • Systemd 緊急モード: 行末にスペースを入れて systemd.unit=emergency.target を追加します。これは最も最小限の環境で、rootファイルシステムが読み取り専用でマウントされるなど、レスキューモードよりもさらに制限された状態です。
    • 直接シェルを起動 (パスワードリセットなどで利用): 行のパラメータにある ro (Read Only) を rw (Read Write) に変更し、行末にスペースを入れて init=/bin/bash または init=/bin/sh を追加します。これにより、通常のinitプロセスの代わりに直接シェルが起動します。
      # 例: ro を rw に変更し、init=/bin/bash を追加
      linux /boot/vmlinuz-linux root=UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX rw init=/bin/bash
  4. 編集が完了したら、通常は Ctrl + x または F10 キーを押して起動します。
  5. 起動が完了すると、パスワードの入力を求められずにroot権限のシェルプロンプト(例: #)が表示されるか、rootパスワードの入力を求められます(systemdのレスキュー/緊急モードの場合)。
    init=/bin/bash を使用した場合、ルートファイルシステムはマウントされていますが、他のファイルシステム(/home など)はマウントされていない可能性があります。また、システムが不安定な状態になる可能性があるため、作業後は必ず sync コマンドを実行し、reboot -fexec /sbin/init などで適切に再起動する必要があります。パスワードリセットなどの特定の目的以外では、singlesystemd.unit=rescue.target の利用が推奨されます。

macOS

macOSでシングルユーザーモードに入る方法は比較的簡単ですが、近年のmacOSバージョンやAppleシリコン搭載Macでは挙動が異なる、または利用できなくなっている可能性があります。

  1. Macの電源を入れるか、再起動します。
  2. 起動音が聞こえたら(またはAppleロゴが表示されたら)、すぐに Command (⌘) キーと S キーを同時に押し続けます。
  3. 白いテキストが黒い背景に表示され始めたら、キーを離します。
  4. 起動プロセスが進み、最終的に localhost:/ root# のようなプロンプトが表示されれば、シングルユーザーモードでの起動は成功です。
Appleによると、macOS Mojave以降ではシングルユーザーモードが無効化されています。また、Appleシリコン搭載Macでは、macOS復旧(リカバリーモード)を使用することが推奨されています。古いMacや特定の状況下ではまだ利用可能な場合がありますが、公式にはサポートされていない可能性があります。

シングルユーザーモードでできること

シングルユーザーモード(またはレスキューモード、緊急モード)で起動すると、root権限を持つシェルが利用可能になります。この環境で実行できる主な操作をいくつか紹介します。

  • ファイルシステムのマウントと操作: シングルユーザーモードでは、ルートファイルシステム (/) が読み取り専用 (read-only, ro) でマウントされていることが多いです。ファイルの編集や修復を行うためには、読み書き可能 (read-write, rw) で再マウントする必要があります。
    # ルートファイルシステムを読み書き可能で再マウント
    mount -o remount,rw /
    
    # (systemdの緊急モードなどでルートファイルシステムが/sysrootにマウントされている場合)
    mount -o remount,rw /sysroot
    他のファイルシステム(例: /home, /var)が自動でマウントされていない場合は、手動でマウントする必要があります。/etc/fstab の内容を確認し、適切なデバイス名を指定してマウントします。
    # /home パーティションをマウント (デバイス名は環境に合わせて変更)
    mount /dev/sda3 /home
    
    # すべてのfstabに記載されたファイルシステムをマウント (エラーが発生する可能性あり)
    mount -a
  • ファイルシステムのチェック (fsck): ファイルシステムに問題があると思われる場合、fsck コマンドでチェックと修復を行います。チェック対象のファイルシステムはアンマウントされているか、読み取り専用でマウントされている必要があります。ルートファイルシステムをチェックする場合は、シングルユーザーモードで起動し、読み取り専用のまま実行するか、可能であればレスキューメディアから起動して実行します。
    # /dev/sda2 ファイルシステムをチェック (アンマウントされているか ro であること)
    fsck /dev/sda2
    
    # 強制的にチェックを実行 (-f) し、見つかった問題に自動的に「yes」と答える (-y)
    fsck -fy /dev/sda2
    fsck はディスクに大きな変更を加える可能性があるため、実行前には重要なデータのバックアップを検討してください。特に -y オプションは注意して使用する必要があります。
  • パスワードのリセット: rootパスワードを忘れた場合、シングルユーザーモード(特に init=/bin/bash などで起動した場合)で passwd コマンドを実行してリセットできます。
    # (必要であればルートファイルシステムを rw で再マウント)
    mount -o remount,rw /
    
    # (SELinuxが有効なシステムでは、再ラベル付けが必要になる場合があるため、一時的に無効化するか、後で対応する)
    # touch /.autorelabel
    
    # rootパスワードを変更
    passwd root
    # 新しいパスワードを入力し、確認のため再入力
    
    # 変更をディスクに書き込む
    sync
    
    # 再起動
    reboot -f

    Systemd環境のレスキューモードや緊急モードで、かつrootパスワードが必要な場合は、init=/bin/bash を使う方法が有効です。

  • 設定ファイルの編集: vinano などのテキストエディタを使用して、/etc/fstab, /etc/ssh/sshd_config, ネットワーク設定ファイルなどを編集し、システムの問題を修正します。ファイルシステムが読み取り専用の場合は、事前に読み書き可能で再マウントする必要があります。
  • サービスの管理 (限定的): シングルユーザーモードではほとんどのサービスは起動していませんが、レスキューモードなどでは一部のサービスが動作している場合があります。systemctl コマンド(systemdの場合)などで状態を確認したり、手動で起動・停止したりできる場合もありますが、通常は限定的です。
  • システムの再起動またはシャットダウン: メンテナンス作業が完了したら、システムを再起動して通常のマルチユーザーモードに戻るか、シャットダウンします。
    # 通常モードで再起動
    reboot
    
    # システムを停止
    halt
    # または
    poweroff
    # または
    shutdown -h now
    
    # (init=/bin/bash で起動した場合など、通常のrebootが機能しない場合)
    reboot -f
    # または exec /sbin/init を試してから reboot
シングルユーザーモードは非常に強力なツールですが、操作を誤るとシステムに深刻なダメージを与える可能性があります。コマンドの意味をよく理解し、慎重に操作することが重要です。

シングルユーザーモードと関連モードの比較 (Linux systemd)

Systemdを採用しているLinuxディストリビューションでは、従来のシングルユーザーモード(ランレベル1)に相当するものとして、レスキューモード (rescue.target) と緊急モード (emergency.target) が用意されています。これらは似ていますが、提供される環境と目的に違いがあります。

モード Systemdターゲット 主な特徴 主な用途
シングルユーザーモード (SysVinit互換) runlevel1.target (rescue.targetへのシンボリックリンクの場合が多い), single (カーネルパラメータ) ・rootユーザーのみログイン可能
・ネットワーク無効
・最小限のデーモンのみ起動
・ローカルファイルシステムはマウントされることが多い(rwかroかは実装依存)
・基本的なメンテナンス
・パスワードリセット
・fsckの実行
レスキューモード rescue.target ・基本的なシステム初期化完了
・rootファイルシステムはrwでマウント
・他のローカルファイルシステムもマウント試行
・いくつかの基本サービス起動
・rootパスワードが必要
・通常の起動ができない場合の修復作業
・シングルユーザーモードより多くのツールが利用可能
緊急モード emergency.target ・initramfsの後、可能な限り早い段階で起動
・rootファイルシステムのみroでマウント
・ほとんどのサービスは起動しない
・rootパスワードが必要
/etc/fstab の問題などでレスキューモードにも入れない場合のデバッグ
・initramfs環境での作業

どのモードを選択するかは、解決したい問題の性質によります。 まずは通常の起動を試み、失敗した場合はレスキューモードを試します。レスキューモードでも起動できない、あるいはマウントに問題がある場合は、緊急モードや init=/bin/bash を使うことを検討します。 伝統的なシングルユーザーモード (single パラメータ) は、Systemd環境では多くの場合 rescue.target と同様の動作をします。

セキュリティに関する注意点

シングルユーザーモードは、システムの復旧に非常に役立つ一方で、セキュリティ上のリスクも伴います。物理的にサーバーにアクセスできる攻撃者は、シングルユーザーモード(特にパスワードなしでrootシェルにアクセスできる方法)を利用してシステムに侵入し、データを盗んだり、システムを改ざんしたりする可能性があります。

このリスクを軽減するためには、以下の対策を検討することが重要です。

  • 物理セキュリティの強化: サーバーやコンピュータが設置されている場所へのアクセスを厳格に管理します。
  • BIOS/UEFIパスワードの設定: コンピュータの起動プロセス自体にパスワードを設定し、不正な起動オプションの変更を防ぎます。
  • ブートローダー (GRUB) パスワードの設定: GRUBメニューの編集やシングルユーザーモードへの移行にパスワードを要求するように設定します。これにより、コンソールアクセスだけではカーネルパラメータの変更などができなくなります。
  • フルディスク暗号化: OSを含むディスク全体を暗号化することで、たとえシングルユーザーモードで起動されても、正しいパスフレーズなしにはデータにアクセスできなくなります。
  • 定期的な監査と監視: システムログを定期的に確認し、不正なアクセスや予期せぬ再起動がないか監視します。
特にGRUBパスワードの設定は、シングルユーザーモードへの不正アクセスを防ぐ上で効果的な対策の一つです。設定方法については、お使いのLinuxディストリビューションのドキュメントを参照してください。

まとめ

シングルユーザーモード(および関連するレスキューモード、緊急モード)は、UNIX系OSにおけるシステムメンテナンスやトラブルシューティングのための重要な機能です。管理者(root)権限で、ネットワークや他のユーザーの影響を受けない最小限の環境で、ファイルシステムの修復、パスワードのリセット、設定ファイルの修正など、システムの根幹に関わる操作を行うことができます。

その強力さゆえに、シングルユーザーモードへのアクセスは物理的なセキュリティと密接に関連しており、不正利用を防ぐための対策(BIOS/UEFIパスワード、ブートローダーパスワードなど)が推奨されます。 Systemd環境では、レスキューモードや緊急モードといった、より細分化されたメンテナンスモードが提供されており、状況に応じて適切なモードを選択することが重要です。

システム管理者にとって、シングルユーザーモードの使い方を理解し、適切に利用できることは、システム障害時に迅速かつ効果的に対応するための基本的なスキルと言えるでしょう。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です