Linux 加密GRUB.
GRUB介绍.
GRUB是一个启动加载器,即GRUB 和统一启动加载器,承载自PA项目.开发新的启动加载器来代替现在一个GR启动器(Legacy的启动加载器).
配置GRUB
你可以在每次启动GRUB的时候载入配置文件/boot/grub/grub.cfg.使用工具来#生成grub.cfg,或者可以手动#自定义grub.cfg.
生成grub.cfg
- 每次修改或修改/etc/default/grub中/etc/grub.d/的文件之后,都需要重新生成/boot/grub/grub.cfg.
- 默认的文件路径是/boot/grub/grub.cfg,不是/boot/grub/i386-pc/grub.cfg.
grub-mkconfig -o /boot/grub/grub.cfgGRUB菜单配置文件.
- /etc/default/grub #grub菜单配置.
Linux加密GRUB
- 防止非法用户通过单用户模式下修改密码,强烈建议配置grub密码.
配置GRUB全局密码.
- 此方法配置,每次引导Kernel都需要输入用户名,密码.
- /etc/grub.d/40_custom #配置文件.
grub-mkpasswd-pbkdf2
cat << "EOF" >>/etc/grub.d/40_custom
set superusers="root"
password_pbkdf2 root grub.pbkdf2.sha512.10000.583DF046A6659818B99347C1BB9B44D325E567654A2A7143FAA5568B589ACC04FC3B05578AD00C4F3530728E4A9F5293DCAADA8DEA660064C8F7B7F0AA0B0400.8CA5948E6BCA1EE30F263A844DA36F35812888D2C1F2CE701E06BAE0FB9225B737820783141DFC6848E2D763140AD5C9D186240315AA7B478441F7D669F56366
EOF- 注意!!这种方式配置的密码每次引导Kernel都要输入用户名密码.
更新grub.cfg.
grub-mkconfig -o /boot/grub/grub.cfg配置GRUB菜单密码.
grub-mkpasswd-pbkdf2
- 配置:/etc/grub.d/00_header
cat <<"EOF"
set superusers="root"
password_pbkdf2 root grub.pbkdf2.sha512.10000.29D503671326FBD3082938E0213081016033595B3090E45078CAD5515882A4FB7FB6C79E9010A6D4EB8F0E69823271A302876137319AEA4897333B9BD93F6F75. C0E05E8BE73BDE2FE07136EC74947C5E22F96A8C18AF8D8FA8EE8AD73B3CDE65965D32B83714FB89B74DBBE3D4BD4CC12AF82413D8880749F68D1E78976580E0
EOF
#注意务必将以上代码复制到/etc/grub.d/00_header配置文件下. 
- 配置:/etc/grub.d/10_linux
找到linux_entry()函数.
echo "menuentry '$(echo "$title" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-$version-$type-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
else
echo "menuentry '$(echo "$os" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
echo "menuentry --user=root'$(echo "$title" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-$version-$type-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
else
echo "menuentry --unrestricted'$(echo "$os" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
更新grub.cfg.
grub-mkconfig -o /boot/grub/grub.cfg

