适用系统

  • Ubuntu 14.04 / 16.04 / 18.04 / 20.04 / 22.04 / 24.04
  • Debian 8 / 9 / 10 / 11 / 12
  • Linux Mint
  • Kali Linux(另有专门文档)
  • 其他 Debian 衍生版

方法一:init=/bin/bash(推荐)

步骤 1:进入 GRUB 编辑模式

  1. 启动时长按 Shift 键(BIOS)或按 Esc 键(UEFI)显示 GRUB 菜单

  2. 选择默认启动项,按 e 键编辑

  3. 找到以 linux 开头的行:

1
linux /boot/vmlinuz-5.4.0-generic root=UUID=xxxx ro quiet splash
  1. ro 改为 rw,并在行末添加:
1
init=/bin/bash

修改后:

1
linux /boot/vmlinuz-5.4.0-generic root=UUID=xxxx rw quiet splash init=/bin/bash
  1. Ctrl+XF10 启动

步骤 2:修改密码

进入 bash 后:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 检查根分区是否可写(应该已经是 rw)
mount | grep ' / '

# 如果是只读,重新挂载
mount -o remount,rw /

# 修改 root 密码
passwd root

# 或修改普通用户密码
passwd username

# 重启
exec /sbin/init
# 或
reboot -f

Ubuntu 特别说明

  • Ubuntu 默认禁用 root 账户,首个创建的用户有 sudo 权限
  • 建议同时修改普通用户密码:passwd <username>
  • Ubuntu 不使用 SELinux,无需 .autorelabel

方法二:recovery mode 恢复模式

适用版本:Ubuntu 所有版本

步骤

  1. 启动时进入 GRUB 菜单

  2. 选择 Advanced options for Ubuntu

  3. 选择带 (recovery mode) 的内核版本

  4. 在恢复菜单中选择 root - Drop to root shell prompt

  5. 如果提示只读,先重新挂载:

1
mount -o remount,rw /
  1. 修改密码:
1
2
passwd root
passwd username # 普通用户
  1. 输入 reboot 重启

注意事项

  • 某些版本的 recovery mode 可能仍需要密码
  • 如果需要密码,使用方法一

方法三:single 单用户模式

操作步骤

  1. GRUB 编辑模式下,在 linux 行末添加:
1
single

1
1
  1. 删除 quiet splash(可选,方便查看启动信息)

  2. Ctrl+X 启动

  3. 进入单用户模式后修改密码

Debian/Ubuntu 单用户模式差异

  • Debian:直接进入 root shell
  • Ubuntu:可能进入恢复菜单,选择 root shell

方法四:使用 Live CD/USB

步骤 1:从 Live 环境启动

  1. 使用 Ubuntu/Debian Live USB 启动

  2. 选择 Try Ubuntu 进入桌面环境

步骤 2:挂载目标系统

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 查看分区
lsblk
# 或
fdisk -l

# 挂载根分区
sudo mount /dev/sda1 /mnt

# 如果是 LVM
sudo vgchange -ay
sudo mount /dev/mapper/ubuntu--vg-root /mnt

# 如果有单独的 boot 分区
sudo mount /dev/sda2 /mnt/boot

步骤 3:chroot 并修改密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 挂载必要的虚拟文件系统
sudo mount --bind /dev /mnt/dev
sudo mount --bind /dev/pts /mnt/dev/pts
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys

# chroot 进入目标系统
sudo chroot /mnt

# 修改密码
passwd root
passwd username

# 退出并重启
exit
sudo reboot

方法五:直接修改 shadow 文件

通过 Live 环境或外部挂载

挂载后编辑 shadow

1
2
sudo mount /dev/sda1 /mnt
sudo nano /mnt/etc/shadow

清空密码

1
2
3
4
5
# 修改前
root:$6$salt$hash...:18000:0:99999:7:::

# 修改后
root::18000:0:99999:7:::

生成已知密码哈希

1
2
3
4
5
# Debian/Ubuntu 使用 SHA-512
openssl passwd -6 -salt randomsalt password123

# 或使用 mkpasswd
mkpasswd -m sha-512 password123

修改普通用户密码

Ubuntu 首个用户通常在 admin/sudo 组:

1
username:$6$salt$hash...:18000:0:99999:7:::

同样可以清空或替换哈希。


特殊情况处理

加密分区 (LUKS)

Ubuntu/Debian 可能使用全盘加密:

1
2
3
4
5
6
7
8
# 解锁加密分区
sudo cryptsetup luksOpen /dev/sda3 crypt_root

# 如果是 LVM on LUKS
sudo vgchange -ay

# 挂载
sudo mount /dev/mapper/ubuntu--vg-root /mnt

注意:如果不知道 LUKS 密码,无法通过此方法绕过

AppArmor

Debian/Ubuntu 使用 AppArmor 而非 SELinux:

  • 通常不影响密码修改
  • 无需类似 .autorelabel 的操作

systemd 相关

较新版本使用 systemd,可尝试:

1
systemd.unit=rescue.target

1
systemd.unit=emergency.target

添加到 GRUB 启动参数。


常见分区方案

标准分区

1
2
3
/dev/sda1  /boot  ext4
/dev/sda2 / ext4
/dev/sda3 swap

LVM 分区

1
2
3
4
5
/dev/sda1          /boot      ext4
/dev/sda2 LVM PV
└─ ubuntu-vg
├─ root / ext4
└─ swap swap

UEFI + LVM

1
2
3
/dev/sda1          /boot/efi  vfat (ESP)
/dev/sda2 /boot ext4
/dev/sda3 LVM PV

GRUB 菜单不显示

Ubuntu 默认隐藏 GRUB

方法 1:启动时按键

  • BIOS 模式:启动时长按 Shift
  • UEFI 模式:启动时按 Esc

方法 2:通过 Live 环境修改

1
2
sudo mount /dev/sda1 /mnt
sudo nano /mnt/etc/default/grub

修改:

1
2
GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=10

更新 GRUB(可选):

1
2
3
sudo chroot /mnt
update-grub
exit

常见问题

Q: 按 Shift 无法显示 GRUB?

A: 尝试连续快速按 Shift 或 Esc,或使用方法四 Live CD。

Q: 进入 bash 后键盘无响应?

A: 可能是 USB 键盘驱动问题,尝试 PS/2 键盘或使用 Live CD 方法。

Q: passwd 提示 “password unchanged”?

A: 密码不符合复杂度要求,但 root 权限下可以强制设置简单密码。

Q: Ubuntu 的 root 账户如何启用?

A:

1
2
passwd root        # 设置 root 密码
passwd -u root # 解锁账户(如果被锁定)

适用系统:Ubuntu 14.04+, Debian 8+, Linux Mint, Pop!_OS, elementary OS