Linux活用レシピ > プチレシピ > CentOS 7 のrootユーザのパスワード初期化設定

CentOS 7 のrootユーザのパスワード初期化設定

CentOS 7 でrootユーザのパスワードが分からなくなった場合に、これまで通りのシングルユーザモードでのパスワード初期化ができず、非常に困りました。
そこで、このレシピで、CentOS 7 のrootユーザのパスワード初期化方法を記録しておきますので、活用してください。

CentOS 7 からシングルユーザモードでは、パスワードの変更はできません。
以下の通り、エマージェンシーモードでのパスワード変更を行います。

目次

1. エマージェンシーモードで起動する
2. パスワードを変更する
3. 通常のモードに移行する

1. エマージェンシーモードで起動する

1-1. 起動直後のGRUB2画面で「e」を押して起動オプションの編集画面にします。


setparams 'CentOS Linux (3.10.・・・・)
と表示される画面になります。

1-2. linux, linux16, linuxefiのいずれかで始まる行の編集


linux, linux16, linuxefiのいずれかで始まる行があるので、この行の「 rhgb 」という文字を削除します。
また「 ro 」を「 rw 」に変更します。
さらに、LANG=ja_JP.UTF-8があればこれも削除します。(文字化けするので)
そして、最後に「init=/bin/sh」を追記します。
    ※「ro」を「rw」に変更しないと、ReadOnlyの状態でエマージェンシーモードログインしていることになるので passwdを打つと以下のようなエラーが出てパスワード変更ができず、はまりますので注意してください。
    passwd: Authentication token manipulation error
    
    このエラーが出た場合「pwconv」コマンドで/etc/passwdと/etc/shadowを同期させるのが通常ですが・・・、
    pwconv: cannot lock /etc/passwd; try again later. 
    
    と、表示されこれまたうまくいきません。
    これはReadOnlyモードでエマージェンシーモードログインしているためロックファイルの操作ができず発生するエラーになります。

    こうなるとパスワードの変更もできない状態になるので、パスワードを変更したい場合には「ro」を「rw」に変更してログインする必要があります。

1-3. エマージェンシーモードでの起動


入力できれば「Ctrl」+「x」を押して起動させます。
sh-4.2#
とコンソールが出ればOKです。
▲目次


2. パスワードを変更する

2-1. 以下のコマンドでrootパスワードを変更します。

sh-4.2# passwd[ENTER]
New password: ここに新しいパスワード
Retype new password: ここに新しいパスワードをもう一度

この結果
passwd: all authentication tokens updated successfully.

と表示されれば変更完了です。

万一
passwd: Authentication token manipulation error
となった場合は、起動オプションを編集した行のどこかに「ro」の文字が残っている可能性があります。

2-2. SELinuxの対応

SELinuxがEnforcingの場合は
sh-4.2# touch /.autorelabel
を実行してください。
(通常のモードに戻る際に一度SELinuxのリラベリング処理が走るようになります。これを実行しないとログインできません)
▲目次

3. 通常のモードに移行する

3-1. 以下のコマンドで通常のモードに移行します。

sh-4.2# exec /sbin/init
以上でパスワードの変更は完了です。
▲目次