个人技术分享

在Ubuntu中,如果你需要进入恢复模式(Recovery Mode)来修改用户密码,可以按照以下步骤进行:

  • 重启计算机

    重新启动你的Ubuntu系统,等待GRUB菜单出现。

  • 进入恢复模式

    如果GRUB菜单没有自动出现,在系统启动过程中看到首个加载信息时,持续按下 Shift 或者不停地敲击 Esc 键,以显示GRUB菜单。

  1. 在GRUB菜单中,用箭头键选中带有 (recovery mode) 的选项,通常名称类似于 “Ubuntu, with Linux 3.13.0-XX-generic (recovery mode)”。

  2. 按下 Enter 键以选择恢复模式。

  3. 系统会加载一个特殊的恢复菜单,在这个菜单上,使用箭头键选择 “root Drop to root shell prompt”,然后按 Enter

  4. 现在你应该会看到一个命令行界面。

  5. 在命令行中,你可能需要首先重新挂载根文件系统为读写模式,使用以下命令:

   mount -o remount,rw /

或者对于较新的系统,可能要使用:

   mount -o remount,rw /sysroot
   chroot /sysroot

    6. 输入以下命令来重置用户密码(将 username 替换为你的用户名):

   passwd username

按照提示输入并确认新密码。
    7. 完成后,你可以通过输入以下命令重启系统并以新密码登录:

   reboot -f

如果你在Ubuntu的恢复模式下无法访问root shell,因为系统提示你输入root密码,而且你无法提供这个密码,那么直接在恢复模式下重置root密码的选项就很有限了。但还有一个间接的方法可以尝试:

编辑GRUB引导参数进入单用户模式

    1. 启动时编辑GRUB菜单
当电脑启动时,在GRUB菜单出现的那一刻,你通常需要按下 Shift 或 Esc 键来让菜单显示出来。选择Ubuntu的普通启动项(不是恢复模式),但不要直接按Enter,而是按 e 进入编辑模式。

    2. 修改启动参数
在编辑模式中,找到以 linux 开头的那行,它指定了启动时使用的内核以及相关的参数。你需要找到 ro 或 rw 关键字,然后在这个单词之后添加 init=/bin/bash。这会指示内核启动时直接运行bash shell,而非标准的init系统。

举例:

linux /vmlinuz-4.15.0-213-generic root=/dev/mapper/ubuntu--vg-ubuntu--lv ro maybe-ubiquity
修改后:
linux /vmlinuz-4.15.0-213-generic root=/dev/mapper/ubuntu--vg-ubuntu--lv rw init=/bin/bash

    3. 启动到单用户模式
修改完成后,根据屏幕下方的提示来启动系统。通常是按 Ctrl + X 或 F10

    4. 重新挂载文件系统为读写模式
系统启动后,你会立即进入bash shell。此时,根文件系统是只读模式,需要重新挂载为读写模式以便于修改密码。运行以下命令:

   mount -o remount,rw /

     5. 重置密码

现在,你可以使用 passwd 命令来重置root密码(或任何用户的密码):

   passwd

如果想重置非root用户的密码,可以使用 passwd username,将username替换为具体的用户名。

     6. 重启系统
完成后,通过执行以下命令来安全重新启动电脑:

   exec /sbin/init

或者硬重启(不推荐,因为可能导致数据丢失):

   reboot -f

通过这种方式,你可以绕过在恢复模式中无法访问的限制。请注意,在系统中使用单用户模式是一个高权限操作,并且有可能会对系统造成影响,所以请谨慎操作。同时,不同的版本和配置可能需要稍作修改才能成功。