CentOS6でrootのパスワードを忘れてしまった時の対処

家にある余ったサーバを開発用のサーバにしました。とりあえずレンタルしたさくらのVPSと同じCentOS6系のインストールができた状態でしばらく放置していました。その間にさくらのVPSwordpressの設置や設定などの作業をしていたのです。
wordpressも一段落して、cakePHPでも覚えて開発をしようと開発用サーバにログインしようとしたところ、できない。rootのパスワードを忘れてしまったようです。これはめんどくさい話だ。


昔、まだサーバや開発の仕事に関わりはじめた時に、知識がないせいでrootのパスワードをrootというあるまじき設定で、さらにsshの22番ポートをどこにでも開いていて、秘密鍵の設置もしていない状態でした。それでサーバを乗っ取られてしまったことがありました。その相手は多分自動プログラムでrootのパスワードを変更するだけでの愉快犯でした。しかし、こちらは次の日にプレゼンでそのシステムを見せる段階だったのでかなり焦りました。rootを乗っ取られた時の対処も分からなく時間もなかったので、OSの再インストールして少し前のバックアップから復元し、急いで開発していた部分まで戻しました。
そこから学び、今はsshのポート番号変更したり、秘密鍵設置したり、リモートでのパスワードログインを禁止したり、パスワードもちゃんと分からないものにしたり、バックアップも定期的にちゃんと取るようにといろいろ覚えました。


それで話は戻って、上記のように乗っ取られてもrootを取り返したり、また他の管理者からサーバを引き継いでrootのパスワードが分からない場合でも対応できるようにと、今回はrootのパスワードを忘れた場合の対応を覚えることにしました。下記のサイトを参考に作業しました。
http://itpro.nikkeibp.co.jp/article/COLUMN/20061030/252224/


まずはctrl、alt、deleteキーを3つ同時押しにしてサーバの再起動。カウントダウンしてる時に適当なキーを押すとGRUBの画面に入ります。上のメニューでeキーを押し、その後3つのメニューがでてくるので真ん中のメニューでeキーを押します。これで編集モードになるので、その行の最後に1を追加して、bキーを押す。
こうするとシングルユーザーモードというので起動されます。#のプロンプトがでているので、passwdコマンドでrootのパスワードを変更して作業終了。


なんだかわかりにくい説明になってしまった。やっぱスクリーンショットとかないとわかりにくい。もしまた同じ作業をする時は別のサイトを参考にしよう。ただ対応がちゃんとできることが確認できたので今回はよしとする。