在 CentOS 7 因為將系統管理的 init 改為 systemd,systemd 預設的 rescue mode 是無法直接取得 root 權限,所以之後就無法在使用 single user mode 的方式切換 root 了
在 CentOS 7 還是可以透過 rd.break (RamDisk 作業系統狀態) 來解決
在本篇就只用文字敘述了
Step.1 進到 GRUB選單,選定你目前的 kernel 並且按 e 編輯
Step.2 找到 linux16 在最後加入 rd.break
linux16 /vmlinuz-3.10.0-123.9.3.el7.x86_64 root=/dev/mapper/centos-root rw init=/sysroot/bin/_rd.lvm .... rd.break
Step.3 按下 Ctrl-x 重開機
Step.4 進到 Terminal 介面修改密碼
$ mount -o rw,remount /sysroot/ $ chroot /sysroot $ echo "root_password" | passwd --stdin root 恢復 SELinux 的安全文本 $ touch /.autorelabel $ exit $ reboot
如果系統有啟用 SELinux 會等待一段時間讓 SELinux 重設所有檔案 context,開機後使用新密碼登入。
註* 若是沒有 touch /.autorelabel,如果你的 SELinux = enforcing 的狀態下將會無法登入
參考資料: