LoginSignup
139

More than 5 years have passed since last update.

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

Posted at

従来との違い

管理者のパスワードを忘れてログインできなくなった場合はシングルユーザモードに入ってパスワードを変更する、というのが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

パスワード変更の手順

  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で再起動しても良いと書いてあるが、これはエラーになった)

終わりに

逆に、この手順を封じて管理者パスワードを変更できなくする方法はないか探してみたが見つけていない。
つまり、コンソールの前に座られるとrootユーザのパスワードを好き放題できるということなので、本当にそうされてはならない場合はBIOS/UEFIやディスクにパスワードを掛けるなどをしなければならない。

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
139