RHEL7 のパスワードをリセットする

systemd採用に伴い、パスワードのリセット方法が変更になっていたのでまとめました。

RHEL7 になってからパスワードが分からない事態に陥ったことがないので気づきませんでしたが、以下の記事で知りました。

従来は、シングルユーザモードでログインしてパスワードを上書きする方法が主流でした。

目次

CentOS 6

※CentOS 5 はサポートが切れていますが操作方法は同じです。

  • ブート途中(以下の画面)で、[e](edit)キーを押下
Booting CentOS xxx in 3 seconds ...
  • GRUBメニュー(カーネルバージョンの一覧)で、[e]キーを押下
CentOS (カーネルバージョン)
CentOS (カーネルバージョン)
...
  • カーネル行(以下では2行目)を選択し、[e]キーを押下
root (hd0,0)
kernel /vmlinuz-xxx-xxx.el5 ro root=LABEL rhgb quiet
initrd /initrd-xxx.el5.img
  • 末尾に"single"を追記して[Enter]キーを押下して内容確定
  • 前画面に戻るので、[b]キー(boot)を押下
  • シングルユーザモード
    しばらくすると、シングルユーザモードが立ち上がります。
    ※パスワードを再設定する場合は「passwd」コマンドを使います。

CentOS 7

以下のページが参考になります。
※Fedora も同様です。

base on 24.9. ブート中のターミナルメニューの編集 - Red Hat Customer Portal

手順24.5 rd.break を使用した root パスワードのリセット
64 ビット IBM Power シリーズの場合は linux 行、x86-64 BIOS ベースシステムの場合は linux16 行、または UEFI システムの場合は linuxefi 行の最後に以下のパラメーターを追加します。

rd.break enforcing=0

enforcing=0 オプションを追加すると、時間がかかる SELinux の再ラベルプロセスを省略できます。

途中までは、従来と同じです。

  • ブート途中(以下の画面)で、[e](edit)キーを押下
Booting CentOS xxx in 3 seconds ...
  • GRUBメニュー(カーネルバージョンの一覧)で、[e]キーを押下
CentOS (カーネルバージョン)
CentOS (カーネルバージョン)
...
  • "setparams"以降が表示されるので「linux16」から表示される行を探す
    ※行の最後の方にあるので見つけにくいかも。

  • 行末に"rd.break enforcing=0"を追記する
    ※英語配列の場合はチルダキーで"="を入力できます。
    ※Fedora 27 には「rhgb quiet」はありませんでしたが、ある場合は削除します。

  • [x](start)キーを押下

  • 起動すると「switch_root プロンプト」が表示されるので、パスワードを再設定します。

switch_root:/# mount -o remount,rw /sysroot
switch_root:/# chroot /sysroot
sh-4.4# passwd
  • Ctrl + Alt + Del で再起動します
    再起動後、設定したパスワードでログインします。

おまけ

ブートローダがLILOの場合

base on rootのパスワードをうっかり忘れてしまった | 日経 xTECH(クロステック)
2006/12/07 00:00
LILOの場合に「boot:」と表示されたら,〔Tab〕キーを押します*4。「linux」などのラベル名が表示されます。ラベル名と,パラメータの「1」または「single」を入力します。

boot: linux 1

これで,Linuxの起動処理が始まります。「#」のプロンプトが表示されたら,そのシェルはシングル・ユーザー・モードで起動しています。