已知条件:
甲方拥有虚拟机内部的操作系统账号
甲方可以访问虚拟机的控制台
甲方没有 hypervisor 管理员权限,也无法直接拿到虚拟磁盘文件
目标:
正常启动 GRUB 菜单 → 不需要密码;
试图编辑启动项、进入 recovery 模式、单用户模式 → 需要密码。
实现步骤如下:
1. 生成 PBKDF2 加密密码
我们在终端中先可以执行:
sudo grub-mkpasswd-pbkdf2
系统会要求输入并确认密码,然后返回一串类似如上的哈希
我们要完整的复制这串哈希,后续会用到。
2. 修改 GRUB 配置文件
我们先可以使用nano编辑 /etc/grub.d/40_custom 这个文件,内容如下:
set superusers="admin"
password_pbkdf2 admin grub.pbkdf2.sha512.10000.xxxxxxxxxxxxxxxxxxxxxxx(这个x的位置填入你复制的完整哈希)然后我们进行保存并且退出就好了。

3. 修改启动项权限
编辑 /etc/grub.d/10_linux,找到类似这样的部分:
linux_entry "${OS}" "${version}" simple \
"${GRUB_CMDLINE_LINUX}" "${GRUB_CMDLINE_LINUX_DEFAULT}"在最后添加 --users "",例如:
linux_entry "${OS}" "${version}" simple \
"${GRUB_CMDLINE_LINUX}" "${GRUB_CMDLINE_LINUX_DEFAULT}" --users ""
4. 更新 GRUB 配置
使用如下代码:
sudo update-grub然后你就会看到如下结果:

这个结果出现后就设置结束了。
于是我们进行reboot,重启一下并且按住shift或者esc就会发现设置成功了,需要密码才能进入。
