补充说明
grub2-mkpasswd-pbkdf2 是 RHEL 系对 grub-mkpasswd-pbkdf2 的命名,用于把明文密码转换成 grub.pbkdf2.sha512.<迭代次数>.<salt>.<hash> 形式的字符串。GRUB 配置中只保存这个哈希,因此引导菜单密码不会以明文出现在 /boot 下。
典型用法是配置 GRUB 超级用户:在 /etc/grub.d/40_custom 中加入 set superusers="root" 与 password_pbkdf2 root <哈希>,然后运行 grub2-mkconfig 重新生成配置。也可以把哈希写入 /boot/grub2/user.cfg,供 RHEL 的密码管理命令使用。
命令会交互式读取密码并再次确认,密码不会回显。哈希中的 salt 与迭代次数每次随机生成;需要可重复结果时才用 -s、-c 手工指定,但这会降低安全性。
语法
grub2-mkpasswd-pbkdf2 [选项]
选项
-c 次数/--iteration-count=次数:PBKDF2 迭代次数-s 字符串/--salt=字符串:指定 salt,默认随机生成-l 长度/--buflen=长度:派生密钥长度-h/--help:显示帮助-V/--version:显示版本
实例
# 交互式生成哈希
sudo grub2-mkpasswd-pbkdf2
# Enter password:
# Reenter password:
# PBKDF2 hash of your password is grub.pbkdf2.sha512.10000...
# 把哈希写入自定义配置
sudo tee -a /etc/grub.d/40_custom <<'EOF'
set superusers="root"
password_pbkdf2 root grub.pbkdf2.sha512.10000.REPLACE_WITH_HASH
EOF
# 重新生成 GRUB 配置
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
# 若使用 user.cfg,写入同样内容并保持权限 600
sudo chmod 600 /boot/grub2/user.cfg
superusers 中的用户只用于解锁菜单与编辑条目,不会影响系统登录密码。配置错误可能导致每次开机都要输密码或无法编辑内核参数,修改前建议备份原配置。