核心是锁住GRUB编辑权限:先用grub2-crypt --sha-256生成加密口令,再在/etc/grub.d/40_custom中配置superusers和password_pbkdf2,最后运行grub2-mkconfig或update-grub更新配置,重启后按e将提示输入用户名和密码验证。

新手给单用户模式加密码保护,核心是锁住 GRUB 启动菜单的编辑权限——因为只要能进 GRUB 编辑界面(按 e),就能随意加参数跳过验证、直接进入单用户环境。所以重点不是“给单用户本身设密码”,而是“不让别人轻易打开 GRUB 编辑器”。操作分两步:生成加密口令 + 修改 GRUB 配置。
生成安全的 GRUB 管理员口令
明文写密码在配置文件里极不安全,必须用哈希加密。推荐使用 SHA-256(比 MD5 更强):
- 终端执行:grub2-crypt --sha-256(CentOS/RHEL/Fedora)或 grub-mkpasswd-pbkdf2(Debian/Ubuntu)
- 输入你想设的管理员密码(比如 MyGrubAdmin123),回车再确认一次
- 命令会输出一长串以 sha256 开头的加密字符串,类似:
sha256$...$...
修改 GRUB 配置启用超级用户验证
不同发行版路径略有差异,但逻辑一致:
- RHEL/CentOS 7+/Rocky/AlmaLinux:编辑 /etc/grub.d/40_custom,在文件末尾添加:
set superusers="admin"
password_pbkdf2 admin sha256$...$...
- Debian/Ubuntu:同样改 /etc/grub.d/40_custom,但用 password_pbkdf2(不是 password_md5)
- 保存后,**必须更新 GRUB 配置**:
→ RHEL系:grub2-mkconfig -o /boot/grub2/grub.cfg
→ Debian/Ubuntu:update-grub
验证是否生效
重启系统,在 GRUB 菜单界面按 e 尝试编辑:
- 如果看到提示 "Enter username:",说明已启用验证
- 输入你设的用户名(如 admin),再输对应密码
- 输错三次会退出编辑,无法继续操作
- 只有通过这层验证,才能修改 kernel 行加 rd.break 或 init=/bin/bash
额外提醒:别漏掉隐藏菜单和默认启动项
仅加密码还不够,建议同步加固:
- 在 /etc/default/grub 中确认有:
GRUB_TIMEOUT=5(避免超时自动进系统)
GRUB_HIDDEN_TIMEOUT=0(禁用隐藏倒计时) - 运行完 update-grub 或 grub2-mkconfig 后,重启测试整套流程
- 物理接触风险下,还需 BIOS/UEFI 设置启动密码,并禁用 USB/CD 启动


















