遺忘 Root 密碼是運維常見場景。本文詳細記錄通過 GRUB 中斷啟動進入單用戶模式(Runlevel 1 / Emergency Mode)重置 Root 密碼的完整操作流程,並強調物理安全防範與生產環境合規要求。
Linux 啟動過程中,GRUB 菜單允許編輯內核啟動參數。追加 rd.break (RHEL/CentOS 7/8) 或 init=/bin/bash (通用) 可在文件系統掛載前獲得 Root Shell,隨後重掛載 /sysroot 為讀寫模式修改 /etc/shadow。
linux / linuxefi 開頭的行,行尾追加 rd.breakswitch_root 環境mount -o remount,rw /sysroot
chroot /sysroot
passwd root
# 輸入新密碼兩次
touch /.autorelabel
exit
exit
# 或 reboot
init=/bin/bashmount -o remount,rw /passwd rootsyncreboot -f (強制重啟,繞過 Systemd)生產環境必須為 GRUB 設置密碼,防止物理接觸者輕易重置:
# 生成密碼雜湊
grub2-mkpasswd-pbkdf2
# 輸入密碼,輸出類似 grub.pbkdf2.sha512.10000.XXXX
# 編輯 /etc/grub.d/40_custom
cat <<EOF >> /etc/grub.d/40_custom
set superusers="admin"
password_pbkdf2 admin grub.pbkdf2.sha512.10000.XXXX
EOF
# 重新生成配置
grub2-mkconfig -o /boot/grub2/grub.cfg
# UEFI 系統:grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
「只要物理接觸硬盤,單用戶模式即可獲取 Root 權限。」—— 這是物理安全的鐵律。雲主機同理:控制台訪問權限等同物理接觸。
| 項目 | 檢查命令/方法 | 合規標準 |
|---|---|---|
| GRUB 密碼 | grep -A5 'set superusers' /boot/grub2/grub.cfg | 已設置 pbkdf2 雜湊密碼 |
| 單用戶模式需密碼 | grep sulogin /usr/lib/systemd/system/emergency.service | ExecStart=-/usr/sbin/sulogin |
| 磁碟加密 | lsblk -f | grep crypto_LUKS | 關鍵分區已加密 |
| 審計日誌 | ausearch -m USER_LOGIN -ts today | 記錄所有登入嘗試 |