补充说明
grub2-setpassword 是 RHEL 8/9、Fedora 等发行版提供的工具,运行时提示输入两次密码,随后把 PBKDF2 哈希写入 /boot/grub2/user.cfg,键名为 GRUB2_PASSWORD。GRUB 读取该文件后,在启动菜单中要求认证才能编辑条目或进入恢复模式。
它本质上是对 grub2-mkpasswd-pbkdf2 的封装,区别在于自动处理文件写入与权限,因此比手工编辑 40_custom 更省事。执行后通常无需再运行 grub2-mkconfig,因为 user.cfg 是在启动时被读取的。
注意:GRUB 密码只保护引导层,不加密磁盘。启用后请务必记录密码,遗忘时需通过救援介质删除 user.cfg 才能恢复。该命令在 Debian/Ubuntu 上通常不存在,那边用 grub-mkpasswd-pbkdf2 手工配置。
语法
grub2-setpassword
说明
- 无常用选项,按提示交互输入密码
- 结果文件:
/boot/grub2/user.cfg,权限应为600 - 对应的上游工具:
grub-mkpasswd-pbkdf2 - 若系统启用了统一密钥(unified key)或 Secure Boot,需确认 GRUB 配置与签名策略一致
实例
# 设置 GRUB 密码
sudo grub2-setpassword
# Enter password:
# Confirm password:
# 检查生成的文件
sudo ls -l /boot/grub2/user.cfg
sudo cat /boot/grub2/user.cfg
# 验证 GRUB 配置可正常生成
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
# 重启验证菜单是否需要密码
sudo reboot
# 需要取消密码时删除该文件
sudo rm -f /boot/grub2/user.cfg
如果只希望保护特定菜单项,可在 /boot/grub2/grub.cfg 或 /etc/grub.d/ 自定义脚本中使用 --unrestricted 类标记,而非全局要求密码。