教程[23] 去除 qcow2 / img 镜像的 grub 密码保护

开篇废话

最近有一朋友给我来了个上古的 Linux 让我研究研究,由于系统不知道哪里 dump 来的(居然是 qcow2),然后问我能不能删掉 grub 密码以及修改 root 密码。
当然如果你的 pve 用 lvm 的话直接参照上篇废话就可以了,之前有介绍过。

dump 方式一般是有两个,一个是在虚拟机内侧载 live cd 然后 mount 删 grub 配置文件,然后 chroot 里面 passwd 就完事。
另外一个是在母鸡里面手动挂载硬盘出来,然后和上面没什么区别,mount 删 grub 配置文件,然后 chroot 里面 passwd 就完事。

ps:本文并没有什么高深技术,就是简单介绍一下虚拟硬盘怎么挂载而已

正文

直接挂载

老朋友 libguestfs-tools 能安排各种奇怪的事情….

apt install libguestfs-tools

# qcow2 的情况
modprobe nbd max_part=8
qemu-nbd --connect=/dev/nbd0 ./1.qcow2
# 如果是第一个是 boot 分区的话
mount /dev/nbd0p1 /mnt/

# raw 的情况
# 我们其实可以手动算 offset 来挂载的,但是可能过于复杂这里懒得介绍了。
apt install kpartx
kpartx -a ./1.img
ls /dev/mapper
# 这里 kpartx 挂到 loop 里面了,具体路径自己 fdisk 看
# fdisk -l
mount /dev/mapper/loop0p1

cd /mnt
ls /mnt
cd grub
ls
# 这里确认到带密码的文件在 user.cfg 里面,自行查阅
rm user.cfg

然后修改密码:

cd
umount /mnt
# 这里可能是 lvm ,因此 fdisk -l 先确认一下根分区在哪里再挂载
mount /dev/nbd0p2 /mnt/
chroot /mnt /bin/bash
# arch-chroot /mnt
# 进入里面 shell 以后
passwd

# 确认一下 root 是不是被禁止登录了,如果是 /sbin/nologin 那么也修改一下
cat /etc/passwd | grep root
# root:x:0:0:root:/root:/bin/bash

测载

其实就是 sideload,我们的思路就是虚拟机内可以直接访问到这块硬盘,那么里面安排个 livecd 什么的就可以对硬盘做出更改了。

这里用的虚拟化方案是 pve,因此直接导入就可以:

qm importdisk 1234(虚拟机id) 1.qcow2/1.img local-lvm(存储)

当然你虚拟机不是 lvm 的情况下,直接编辑 /etc/pve/qemu-server 也可以,可以省去导入步骤。

然后安排个 livecd,启动选项拉到第一个,和上面直接挂载方法差不多(这里不再废话)

总结

这篇文章也是简单奇怪的运维的一部分,一个熟练的应急猴子总能遇到各种奇怪的情况,在这里记录一下思路作为参考。