CentOS7 RHEL7 rootパスワード変更(rd.break利用)

rootのパスワードを忘れてしまったり、インストール後に正しく設定したパスワードを入力しているはずなのにといったことがあったりします。

そんなときの為にと思い、対処した方法を備忘録としてまとめておきます。

[RED HAT ENTERPRISE LINUX7 システム管理者のガイド](https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sec-Terminal_Menu_Editing_During_Boot.html#proc-Resetting_the_Root_Password_Using_rd.break)を参考にしています。

検証した環境は以下となります。

- Oracle VirtualBox 5.1.22 r115126
- CentOS Linux release 7.3.1611(Core)
- Kernel 3.10.0-514.26.2.el7.x86_64

# rootパスワード変更手順

## 1.ブートローダーメニューでカウントダウン中断

システムの起動または再起動をして、ブートローダー画面で任意のキーを押して、カウントダウンを止めます。
例として、「Esc」キーを押します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/01557fb2-e718-9e12-d770-7e85771b143f.png)

## 2.「e」キーを押して、現在のエントリを編集

「e」キーを押します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/0bccc90d-28d6-614c-24d4-4212d079bd73.png)

## 3.linux16 で始まる行に移動

「↓」キーを押して、linux16 で始まる行にカーソルを移動します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/2064db76-15e8-20df-dede-383fb84f4534.png)

## 4.「End」キーを押して、カーソルを末尾に移動

「End」キーを押して、カーソルを末尾に移動します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/e0692f6b-cb3c-da25-65d4-270d683bac3b.png)

## 5.「rd.break」を行の末尾に追加

半角スペースの後に、「rd.break」を追加します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/4cceef8c-cee0-ac5a-7cbf-d2e26a40c443.png)

## 6.「Ctrl+x」を押して、再起動

「Ctrl+x」を押すと、自動で再起動します。

## 7.switch_rootプロンプト作業

再起動後、switch_rootプロンプトの画面になります。

### （1）/sysrootファイルシステムを読み取り/書き込みで再マウント
```lang:コマンド
mount -o remount,rw /sysroot
```
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/1cca8d16-1873-3507-8f22-d164d3865f8b.png)

### （2）chroot を使用して /sysroot の chroot jail に移動
```lang:コマンド
chroot /sysroot
```
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/c5fdcff0-446c-e975-ed98-2cceb09f0d30.png)

## 8.sh-4.2プロンプト作業

### （1）passwdコマンドの実行

passwdコマンドでrootのパスワードを変更します。

```lang:コマンド
passwd root
```
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/2dfc536a-fccb-75eb-c221-0d39835f3963.png)

変更するパスワードを入力します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/b575334b-f667-a81a-5563-8ebff4feeca5.png)

### （2）SELinux の再ラベル付け設定

ブート後に自動的に SELinux の完全な再ラベル付けが実行されるように設定を行います。
passwdコマンドで/etc/shadowファイルがSELinuxコンテキストなしで再作成されたために必要となるようです。

```lang:コマンド
touch /.autorelabel
```
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/0b181774-677a-dce0-bf0d-0444bd5319a4.png)

## 9.exitコマンドを2回

exitコマンドを2回実行します。1回目はchroot jail（sh-4.2プロンプト）を終了、2回目はinitramfsデバッグシェル（switch_rootプロンプト）の終了となります。
しばらくすると、再起動し、ログイン画面になります。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/6e7d1fec-e560-b4c3-ee02-d1e790bcd6ce.png)

## 10.新パスワードでログイン

再設定した新パスワードでログインします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/4c3c3934-69a7-8790-98d9-00fa4ade8880.png)

ログインできれば成功となります。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/14ed9728-e691-43d8-4901-e3d64ca51bcc.png)

# RHEL7について

以下RHEL7の環境でも実施してみた結果、問題なくrootパスワードの変更は行えましたので、ご参考まで。

- Red Hat Enterprise Linux Server release 7.0 (Maipo)
- Kernel 3.10.0-123.el7.x86_64

RedHatとしては、こちらの手順は、手順も多く時間もかかるので、インストールディスクを使用したrootパスワードの変更を推奨しているようです。実際やってみたところ10分くらいでしたので、大した時間でもないと思います。

参考サイト

- [RED HAT ENTERPRISE LINUX7 システム管理者のガイド](https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sec-Terminal_Menu_Editing_During_Boot.html#proc-Resetting_the_Root_Password_Using_rd.break)