现象重现
在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
- 进入救援模式
- 使用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
验证步骤
重启后测试密码功能:
- 在Grub界面按
p
键 - 输入明文密码(非哈希值)
- 成功应显示编辑菜单
高级调试
若问题依旧,可启用Grub调试模式:
grub --batch --device-map=/boot/grub/device.map <对比输出的哈希值与配置是否一致。