Ubuntu设置grub密码

来自三线的随记

ubuntu16.01

默认情况下,启动操作系统后,按任意键可以进入GRUB菜单编辑页面

linux系统可以通过进入GRUB菜单编辑页面修改启动参数以获得重置root用户密码的权限

给Grub设置密码:

通过grub-mkpasswd-pbkdf2命令生成加密密码

Your PBKDF2 is grub.pbkdf2.sha512.10000.BC4D0A450E86EE447561FC822C832xxxxxxxxxxxxx45572D3B4E40500CE

vi /etc/grub.d/00_header

cat<<EOF
set superusers="leekwen"
password_pbkdf2 leekwen grub.pbkdf2.sha512.10000.BC4D0A450E86EE447561FC822C832xxxxxxxxxxxxx45572D3B4E40500CE
EOF

update-grub

这样重启后,在启动项时,按e后,就会让你输入:

  username:

  password:

只有用户名(比如我刚刚设置的用户名为:admin及密码正确后(刚刚用grub-mkpasswd-pbkdf2生成的密码),才可以进入启动引导,启动项这一步倒是安全了,记住,修改00_header后一定要运行“update-grub”命令,这样才能生效!

但是单纯这样设置,则会对所有启动项加密,也就是说每重启/开机一次就要输入账号密码一次,这样的结果并不是我们所需要的

改进:

给菜单添加–-unrestricted属性,拥有–unrestricted属性的菜单,任何人都可以boot,但是不能‘e’,即修改启动参数,如果需要修改启动参数,则需要账号密码

例:

[/etc/10_linux :129附近]

     fi
     echo "menuentry '$(echo "$title" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-$version-$type-$boot_device_id' --unrestricted {" | sed "s/^/$submenu_indentation/"
 else
     echo "menuentry '$(echo "$os" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-simple-$boot_device_id' --unrestricted {" | sed "s/^/$submenu_indentation/"

参考文献:http://www.jinbuguo.com/linux/grub.cfg.html