已知条件:

  1. 甲方拥有虚拟机内部的操作系统账号

  2. 甲方可以访问虚拟机的控制台

  3. 甲方没有 hypervisor 管理员权限,也无法直接拿到虚拟磁盘文件

目标:

  • 正常启动 GRUB 菜单 → 不需要密码

  • 试图编辑启动项、进入 recovery 模式、单用户模式 → 需要密码

实现步骤如下:

1. 生成 PBKDF2 加密密码

我们在终端中先可以执行:

sudo grub-mkpasswd-pbkdf2
esSHVYHyZtjQChQPqrKIPupiMkvkNkHz.png
我们得到的结果如上图(1)所示

系统会要求输入并确认密码,然后返回一串类似如上的哈希

我们要完整的复制这串哈希,后续会用到。

2. 修改 GRUB 配置文件

我们先可以使用nano编辑 /etc/grub.d/40_custom 这个文件,内容如下:

set superusers="admin"
password_pbkdf2 admin grub.pbkdf2.sha512.10000.xxxxxxxxxxxxxxxxxxxxxxx(这个x的位置填入你复制的完整哈希)

然后我们进行保存并且退出就好了。

tfzmSYBEclepdSULuHkFZuUuhTGuFXCb.png
如上图2所示

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 ""
SMtRqMRNAmQvzAgJsEAlZSbwKCsnjMpO.png
如上图3所示

4. 更新 GRUB 配置

使用如下代码:

sudo update-grub

然后你就会看到如下结果:

JJowEDvKztoCjyIGhGxkoDyuwuCDZokt.png

这个结果出现后就设置结束了。

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

HhLFmDcVFCqfjJaSHasGjUsgUtYDtkgD.jpg