// 红队渗透 · 2025-03-26

本地虚拟机重置root密码的两种方案:Grub单用户模式与LiveCD挂载

前置必读 操作前务必给虚拟机打快照!一旦误删分区或 shadow 文件,快照能救命。

两种方案对比

项目 Grub 单用户模式 LiveCD 挂载模式
适用系统 CentOS、Ubuntu、Debian 等有Grub的常规系统 Grub 损坏、Alpine、openwrt、极简系统
操作难度 ★☆☆ ★★☆
是否需要额外镜像 否 是(推荐Ubuntu Live ISO)
优先级 首选!能用Grub就用这个 备选,Grub完全进不去时再用

方案一:Grub 单用户模式

  1. 重启虚拟机,开机连按 Shift 或 Esc 进入Grub菜单

  2. 选中要修改的内核,按 e 进入编辑模式

  3. 找到以 linux 开头的行(CentOS是linux16,Ubuntu是linux)

    按发行版做以下一种修改(任选其一均可):

    # 方法① 最暴力直接(所有发行版通用)
    # 把 ro quiet... 全部删掉,改成:
    rw init=/bin/bash
    
    # 方法② 传统单用户模式(部分老系统需要)
    # 在行尾添加:
    single
    # 或
    systemd.unit=rescue.target
  4. 按 Ctrl + X 或 F10 启动

  5. 进入特权 shell 后执行:

    # 确保根分区可写
    mount -o remount,rw /
    
    # 改密码
    passwd root        # 输入两遍新密码
    
    # 同步数据(保险)
    sync
    
    # 重启(两种方式任选)
    exec /sbin/init
    # 或
    reboot -f

搞定!重启后新密码立即生效。

如果是修改网卡(以debian为例):

vim /etc/network/interfaces

allow-hotplug ens33
iface ens33 inet dhcp
ip link set ens33 up
dhclient ens33


reboot -f

常见失败处理:

  • 进不去Grub → 连按Shift/Esc,或者虚拟机设置里强制显示Grub菜单
  • 提示 Read-only file system → 忘了执行 mount -o remount,rw /

方案二:LiveCD 挂载方式

准备:

步骤:

  1. 在启动画面出现时按 F12,手动选 CD/DVD Drive 启动 ISO → Live 环境 → 打开终端

  2. 识别原系统根分区

    lsblk -f          # 最推荐,直观
    # 或
    fdisk -l
    blkid
  3. 挂载原系统根分区(假设是 /dev/sda2,替换成你的)

    mkdir /mnt/root
    mount /dev/sda2 /mnt/root
    
    # 如果是LVM先激活
    vgchange -ay
  4. 挂载必须的虚拟文件系统(chroot用)

    mount -t proc proc /mnt/root/proc
    mount -t sysfs sys /mnt/root/sys
    mount -o bind /dev /mnt/root/dev
    mount -o bind /run /mnt/root/run
  5. 改密码 方式A(兼容性最好)

    chroot /mnt/root
    
    # Alpine用 ash
    # chroot /mnt/root /bin/ash
    
    mount -o remount,rw /     # 确保可写
    passwd root               # 改密码
    exit

    方式B(极简系统无passwd命令时使用)

    vi /mnt/root/etc/shadow
    # 找到 root 那行,把第二个字段($6$...那串)删空,变成:
    root::18993:0:99999:7:::
    :wq 保存退出
  6. 卸载并重启

    umount /mnt/root/{proc,sys,dev,run}
    umount /mnt/root
    reboot

    重启前记得把光驱ISO移除或改回硬盘启动。

Alpine Linux 特别提醒

  1. 必须用LiveCD方案(没Grub)
  2. chroot 要用 /bin/ash
  3. 根分区常为只读,chroot后一定要 mount -o remount,rw /
  4. 很多小镜像没passwd命令 → 直接改shadow删密码字段

原文 https://blog.csdn.net/2301_79518550/article/details/146218717