GRUB加密码的核心目标是锁住编辑入口,防止通过e键修改内核参数进入单用户模式重置root密码;需用grub2-mkpasswd-pbkdf2生成强哈希,配置superusers和password_pbkdf2,锁定menuentry并配合BIOS密码、Secure Boot等基础防护。
给 GRUB 引导加载程序加密码,核心目标是锁住编辑入口——防止有人在开机时按 e 键修改内核参数、添加 rd.break 或 init=/bin/bash 进入单用户模式重置 root 密码。这不是加密硬盘,也不防 Live USB 启动,但它是最直接有效的第一道逻辑防线。
明文密码不安全,必须用 PBKDF2 哈希:
grub2-mkpasswd-pbkdf2(RHEL/CentOS/Fedora)或 grub-mkpasswd-pbkdf2(Debian/Ubuntu),输入两次密码,复制输出的完整哈希串(以 grub.pbkdf2.sha512... 开头)/etc/grub.d/40_custom,在末尾添加:set superusers="admin"
password_pbkdf2 admin grub.pbkdf2.sha512.10000.6A8...
其中admin 是自定义用户名,后面接刚生成的密文sudo grub2-mkconfig -o /boot/grub2/grub.cfg(RHEL系)或 sudo update-grub(Debian系)生效仅设全局密码还不够,敏感项可单独加固:
/etc/grub.d/10_linux 或对应启动项生成脚本menuentry 的行,在引号后加 --users admin,例如:menuentry 'CentOS Linux (5.14.0-284.30.1.el9_2.x86_64) 9' --users admin {
GRUB 密码只是环节之一,脱离其他措施效果大打折扣:
Secure Boot = Enabled,运行 mokutil --sb-state 验证;第三方驱动需导入 MOK 密钥/boot/grub2/grub.cfg 属主为 root:root,权限为 0600
重启系统,看到 GRUB 菜单后:
e 键 → 出现 Enter username: 提示 → 输入 admin → 再提示 Enter password: → 正确输入后才允许编辑e 键无响应,b 键也无法启动修改后的项rd.break 或 init=/bin/sh 参数会直接被拦截,无法进入单用户环境