萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux Root 密碼遺忘急救:GRUB 編輯 init=/bin/bash 单用戶模式重置全流程

不需安裝媒體,利用 GRUB 參數直達 Root Shell 的最快重置法

適用於 GRUB2 (CentOS 7+/RHEL 7+/Ubuntu 16.04+/Debian 8+) 的通用急救流程,無需 Live CD,僅需主控台存取權。

一、GRUB 選單編輯流程

  1. 重啟系統,在 GRUB 選單出現時按 e 進入編輯模式
  2. 找到以 linux 或 linuxefi 開頭的那一行 (核心參數行)
  3. 按 End 移至行末,加入: rd.break (RHEL/CentOS) 或 init=/bin/bash (通用)
  4. 按 Ctrl+x 或 F10 啟動

二、進入緊急 Shell 後的操作步驟

# 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/單用戶模式

四、進階:GRUB 密碼保護防止未授權重置

GRUB2 設定密碼

# 生成密碼雜湊
grub2-mkpasswd-pbkdf2
# 輸入密碼兩次,輸出:grub.pbkdf2.sha512.10000.XXXX

# 編輯 /etc/grub.d/40_custom
cat <

設定後,編輯啟動項或進入命令列需輸入密碼。

五、雲端主機特殊處理 (AWS/Azure/GCP/阿里雲/騰訊雲)

  • 不適用上述方法:無法存取 GRUB 選單 (無主控台或啟動過程不可見)
  • 官方重置流程:
    1. 停止實例
    2. 卸載根磁碟,掛載到另一台救援實例
    3. 修改 /etc/shadow 或 /etc/passwd、authorized_keys
    4. 卸載掛回原實例,啟動
  • 雲端特有功能:
    • AWS EC2:Systems Manager Session Manager / EC2 Serial Console
    • Azure:Serial Console / Run Command / VM Access Extension
    • GCP:Serial Port 2 (互動式主控台)
    • 阿里雲/騰訊雲:VNC 主控台、密碼重置功能

六、事後必做檢查清單

  1. passwd root 設定強密碼 (長度≥16、含大小寫/數字/符號)
  2. 檢查 /etc/ssh/sshd_config:PermitRootLogin prohibit-password 或 no
  3. 部署 SSH 金鑰認證,禁用密碼登入:PasswordAuthentication no
  4. 啟用 MFA:google-authenticator / pam_u2f
  5. 審計 /var/log/secure、journalctl -u sshd 確認無異常登入
  6. 更新密碼管理系統 (KeePass/Bitwarden/1Password/HashiCorp Vault)

七、單用戶模式替代方案對比

方法需媒體適用場景風險
GRUB rd.break/init=/bin/bash否實體/虛擬機有主控台需重啟、GRUB 無密碼保護時風險高
Live CD/USB 救援模式是GRUB 損壞、需檢查檔案系統需實體存取、較慢
雲端廠商控制台重置否雲端主機依賴廠商功能
配置管理工具 (Ansible/Salt)否受控節點 SSH 仍通需控制節點存活
copyright © 萬盛學電腦網 all rights reserved