CentOS 7でOS管理者パスワードを忘れた時に変更する方法

1.従来との違い

管理者のパスワードを忘れてログインできなくなった場合はシングルユーザモードに入ってパスワードを変更する、というのがCentOSのみならずLinux全般でのお作法であった。

しかしCentOS 7では旧来のシングルユーザモードに相当するレスキューモードに入ってもrootユーザのパスワードを要求されるので、その手は使えなくなっている。
エマージェンシーモード(レスキューモードとの違いはルートパーティションだけ読み取り専用でマウントする)というのもあるが同様にrootユーザのパスワードを入力する必要がある。

CentOS 7では以下のURLに書かれている方法を使用するが、検証の結果、手順に多少誤りがあるようなので、より良い手順を書き出しておく。
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sec-Terminal_Menu_Editing_During_Boot.html

2.パスワード変更の手順

  1. GRUB2の起動画面のカーネル選択時にeを押して起動オプションの編集モードに入る
  2. linux, linux16, linuxefiのいずれかで始まる行があるので、この行のrhgbを削除し(さもないとキーボード入力が反映されない)、LANG=ja_JP.UTF-8があればこれも削除し(日本語で出力されても文字化けするだけ)、rw init=/bin/shを最後に追加する
  3. Ctrl+xを押して起動する
  4. passwd(rootユーザが無効で他に管理者ユーザがあるならpasswd <管理者ユーザ>)で任意のパスワードを設定する
  5. SELinuxがEnforcingの場合はtouch /.autorelabelを実行する(通常のモードに戻る際に一度SELinuxのリラベリング処理が走るようになる。これを実行しないとログインできない)
  6. exec /sbin/initを実行して通常のモードに移行する(上記URLにはexec /sbin/rebootで再起動しても良いと書いてあるが、これはエラーになった)

3.終わりに

CentOS 6でも/etc/sysconfig/initのSINGLE行をSINGLE=/sbin/suloginとすればCentOS 7と同様にシングルユーザモードでrootユーザのパスワードを要求されるようになるが、上記手順と同じ方法でパスワードの変更が可能である(SELinuxがEnforcingでもtouch /.autorelabelは不要だった)。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする