Grub密码认证失败问题排查与解决方案:基于OpenSuSE 11.2的MD5加密验证失效分析


阅读 9 次

现象重现

在OpenSuSE 11.2系统中配置Grub 0.97引导密码时,无论是通过YaST的Boot Loader模块还是手动md5crypt生成哈希,都会出现密码验证失败的情况。典型表现为:

grub> password --md5 $1$8dLk41$X5MzQ7Ff2JQ3Cw4pXd3sX.
[输入密码后显示]
Error: Authentication failure

密码存储机制解析

Grub的密码验证涉及两个关键文件:

  • /boot/grub/menu.lst:主配置文件
  • /etc/grub.conf:符号链接(部分系统)

正确的密码配置格式示例:

password --md5 $1$8dLk41$X5MzQ7Ff2JQ3Cw4pXd3sX.
password --encrypted ^9^32kwzzV/..HqYAtY0MbJXViJnsOjWMK

常见失效原因

哈希格式不匹配:YaST生成的哈希可能包含特殊字符导致解析异常。建议通过命令行验证:

# 生成测试哈希
echo -e "password\npassword" | grub-md5-crypt

文件权限问题:检查配置文件的属主和权限:

ls -l /boot/grub/menu.lst
chmod 600 /boot/grub/menu.lst
chown root:root /boot/grub/menu.lst

终极解决方案

方法1:手动编辑menu.lst

  1. 进入救援模式
  2. 使用vi直接编辑:
vi /boot/grub/menu.lst
# 添加如下内容(示例):
password --md5 $1$8dLk41$X5MzQ7Ff2JQ3Cw4pXd3sX.
lock

方法2:重建Grub配置

grub-install /dev/sda
grub-mkconfig -o /boot/grub/menu.lst

验证步骤

重启后测试密码功能:

  1. 在Grub界面按p
  2. 输入明文密码(非哈希值)
  3. 成功应显示编辑菜单

高级调试

若问题依旧,可启用Grub调试模式:

grub --batch --device-map=/boot/grub/device.map <

对比输出的哈希值与配置是否一致。