2019/05/08

CentOS(RedHat系) rootパスワードが分からない際の対策

CentOS7以降、レスキューモード(旧シングルユーザモード)、エマージェンシーモード
ともにrootパスワードを要求される。

しかし、管理者が不慮のアクシデントで対応できない状況となった際に、
どうしてもrootパスワードが必要なことが生じることがある。
今回、どうにもならない状況になってしまったため、操作した。


Procedure 25.6. Resetting the Root Password Using rd.break

いくつか手順を発見したので、残しておく

1.GRUB(ブートするOSを選択する画面)で「eを押す
2.rhgb quiet LANG*** を消して、systemd.debug の後ろにrw init=/bin/bashを加える。
3.Ctrl+x でboot開始
4.bash-4.2# touch /.autorelabel でSELinuxを有効にする
5.bash-4.2# passwd でrootパスワードを設定する。
6.bash-4.2# exec /sbin/init  通常モードへ移行する。

考察
switch_root:/# exit の再起動がうまくないようだ。
rd.break enforcing=0 と宣言しなくとも、SELinuxは無効化される様子。
passwd <管理ユーザ>
としてパスワードを強制上書きできるが、リラベリングに、えらく時間がかかった。



以下の手順でも再設定はできたので、間違いではないと思われる。
mozcの設定がうまくいっていなかったのかもしれないが、自分で構築していないので
どうにもならなかった・・・。


 1.GRUB(ブートするOSを選択する画面)で「eを押す
 2.rhgb quiet を消して、 rd.break enforcing=0 を書き加える
   (linux16の行と書いてあるが、同じ位置で問題なかった。)
   ※ enforcing=0はSELinuxの制御をオミットする意味とのこと。
 3.Ctrl+x でboot開始
 4.switch_root:/# mount -o remount,rw /sysroot を入力しエンター
   ※ファイルシステムを書き換え可能にする。
 5.switch_root:/# chroot /sysroot を入力しエンター
   ※ファイルシステムをroot管理にする
 6.sh-4.2# passwd でrootパスワードを設定する。
 7.sh-4.2# exit を入力しエンター
 8.switch_root:/# exit を入力しエンター
 9.再起動し通常のユーザでログイン後ターミナルで新しいパスワードでroot化する。
10.# restorecon -v /etc/shadow を入力しエンター 
   ※rd.breakで操作したrootパスワード格納のshadow定義をデフォルトにする。
   ※上記をしないと、再起動時にパスワードを誰も読めずログインできなくなる。
11.# setenforce 1 を入力しエンター
   ※SELinuxを有効にしておく。

以降は、再起動しても問題ない。
一般ユーザのパスワードはそのままで、rootは新しいパスワードが有効になる。

LUKS(Linux Unified Key Setup)を利用している場合は、
上記の操作を開始する時点でパスワードやファイルによる解除が必要となるそうだが、
LUKS は、膨大な (RHEL 7 では 512 文字) 平文テキストのパスフレーズと、非常に大きな (RHEL 7 では 8 MiB) のキーファイルを許可しているそうなので、
導入には、配慮が必要と改めて感じた。

0 件のコメント:

コメントを投稿