Linux/シングルユーザ起動(さくらVPSでCentOS7)

サクラインターネットvps CentOS7 でシングルユーザ (2018-01-02)


rootパスワードが不明、というか分からなくなった場合の、
さくらのVPS (CentOS)シングルユーザモード の解説が CentOS 6用だったので
CentOS 7 の手順をメモしておきます。
(そのうち、さくら公式の手順が出されるかもしれませんが)

  • コンソール画面から
    「強制再起動」の実行直後、「コンソール⇒VPNコンソール」を急いで起動
    ※タイミングが超シビア、すぐに通り過ぎます
  • OSの自動起動前に、GRUBの選択状態にする
     私の場合はサクラVPNコンソール有効状態で「キーボード上下」で割り込めました
    (ここまでで間に合わずに自動起動に入ったら、強制再起動からやり直し)
  • 間に合ったら、起動するカーネルを選んで「e」でエディットモードへ
    (Rescueではなくて、デフォルトで起動するカーネルで良いと思います)
  • 「linux16」コマンドの行で、
    「ro」 を 「rw init=/sysroot/bin/sh」 に変更
    「console=tty0 console=ttyS0,115200n8r」 を消す
  • コマンドプロンプトの表示後に、パスワードを変更します。
    # chroot /sysroot
    # passwd
  • あたらしいパスワードを入力したら、再起動して完了です。
    (rebootでGRUBに戻るで、今度はカーネルを普通にEnterで起動)

GRUBで起動内容を編集する方法ですが、色々Webで探したところ、内容は環境に依存するようです。
ro(リードオンリー) は rw (リードライト)に
init=/sysroot/bin/sh は、 init=/bin/sh としている解説が多いです。(それで起動できる場合は chroot は不要かも)
「console=tty~」削除のところは、さくら公式の手順(CentOS 6)を参考に。これが無いと起動後にVPNコンソールにプロンプトが表示されません。
SELinuxが有効の場合は、もう一手間要るようです。
LANGが日本語だったり、キーボードの設定があったりする場合も、一手間要るようです。

CentOS 7 では、レスキューだか、エマージェンシーだかのモードでも、
root のパスワードは要求されてしまうので、こういった方法が必要になります。

以上です。


ここからは余談。

そもそも、rootパスワードの再設定をするはめになるとは...
急にパスワード受け付けなくなって、本当に肝が冷えました。
そして復旧後に、historyみたら、確かに useradd 後に passwd コマンドを打ってますね...ユーザ名指定なし、で。
(復旧途中で薄々気が付いてたんですが、この際だから復旧方法を調べてしまおう、と)

特に大事な情報は入って無いサーバだったんですが、
以前「踏み台になって他を攻撃しているサーバ」を見た事あったので、
root 権限無しでも打てるコマンドで状況確認して(netstat など)、サーバをコンソールから強制停止して...

そして古い記憶を頼りに...そう、こんな時はシングルユーザもーどダ!と思い出したものの、
CentOS7だと、普通に root のパスワードを要求されて、かなり焦りました。
それで、紆余曲折あって、上記の手順です。

まぁ、本当に事故が起こる前の予行演習(?)ができて、良かったです。