適用於 GRUB2 (CentOS 7+/RHEL 7+/Ubuntu 16.04+/Debian 8+) 的通用急救流程,無需 Live CD,僅需主控台存取權。
linux 或 linuxefi 開頭的那一行 (核心參數行) rd.break (RHEL/CentOS) 或 init=/bin/bash (通用)# 1. 重新掛載根分區為讀寫 (rd.break 進入的 initramfs 環境)
mount -o remount,rw /sysroot
# 或 (init=/bin/bash 直接進入根目錄)
mount -o remount,rw /
# 2. 切換根目錄 (rd.break 需要)
chroot /sysroot
# 3. 重設密碼
passwd root
# 輸入新密碼兩次
# 4. SELinux 環境必做:重新標記
touch /.autorelabel
# 或
restorecon -v /etc/shadow
# 5. 同步磁碟並重啟
sync
mount -o remount,ro /
exit
reboot -f
| 發行版 | GRUB 參數 | 掛載點 | 備註 |
|---|---|---|---|
| RHEL/CentOS 7/8/9 Fedora Rocky/AlmaLinux | rd.break | /sysroot | 進入 initramfs 緊急 Shell,需 chroot /sysroot |
| Ubuntu 16.04+ Debian 8+ openSUSE Arch Linux | init=/bin/bash | / | 直接進入根目錄 bash,無需 chroot |
| GRUB Legacy (極舊) | kernel 行尾加 single | / | 單用戶模式 |
# 生成密碼雜湊
grub2-mkpasswd-pbkdf2
# 輸入密碼兩次,輸出:grub.pbkdf2.sha512.10000.XXXX
# 編輯 /etc/grub.d/40_custom
cat <
設定後,編輯啟動項或進入命令列需輸入密碼。
/etc/shadow 或 /etc/passwd、authorized_keyspasswd root 設定強密碼 (長度≥16、含大小寫/數字/符號)/etc/ssh/sshd_config:PermitRootLogin prohibit-password 或 noPasswordAuthentication nogoogle-authenticator / pam_u2f/var/log/secure、journalctl -u sshd 確認無異常登入| 方法 | 需媒體 | 適用場景 | 風險 |
|---|---|---|---|
| GRUB rd.break/init=/bin/bash | 否 | 實體/虛擬機有主控台 | 需重啟、GRUB 無密碼保護時風險高 |
| Live CD/USB 救援模式 | 是 | GRUB 損壞、需檢查檔案系統 | 需實體存取、較慢 |
| 雲端廠商控制台重置 | 否 | 雲端主機 | 依賴廠商功能 |
| 配置管理工具 (Ansible/Salt) | 否 | 受控節點 SSH 仍通 | 需控制節點存活 |