如何重置丢失的密码(使用恢复模式需要我输入密码)?

ple*_* me 36 grub2 password-recovery

我需要重设密码。我已按照以下步骤操作:

如何重置丢失的管理密码?

但是,然后我转到“root”或“netroot”恢复选项,它告诉我:

Give root password for maintenance (or type Control-D to continue)
Run Code Online (Sandbox Code Playgroud)

显然,我不知道 root 密码。如果我输入CTRL+ D,我将返回到选项列表。从这个页面我读到:

在“另一种方式”一章下:

4. Highlight the line that begins kernel and press 'e' to edit`
Run Code Online (Sandbox Code Playgroud)

但是在 grub 配置文件中,我没有以kernel. 仅有的:

setparams 'Ubuntu...'
recordfail
set gxfpayload...
insmod part_msdos
insmod ext2
set root=...
search --no-floppy...
linux /boot/vmlinuz-2.6.38...
initrd /boot/initrd.img-2.6....
Run Code Online (Sandbox Code Playgroud)

这些都是我的 GRUB 中的所有行。我应该编辑哪一行?或者还有其他方法可以重置我的密码吗?

Eli*_*gan 34

由于您无法访问恢复模式,您必须通过从 live CD/DVD 或 live USB 系统访问已安装的 Ubuntu 系统来更改密码。下面是有关如何执行此操作的详细演练。

如果您已经可以使用 Ubuntu 系统(即使没有管理权限),这是最简单的。但如果你不能,那也不算太难。

  • 根据我的经验,大多数最终被锁定在自己系统之外的 Ubuntu 用户都启用了自动登录,这就是他们忘记密码的方式(因为他们不必输入密码即可登录)。在您的情况下可能是也可能不是这种情况,但是我已经介绍了如果您可以首先使用已安装的 Ubuntu 系统如何执行此操作,因为我认为这将对大多数阅读本文的人有所帮助。

如果您可以使用已安装的 Ubuntu 系统,即使是非管理员用户

  1. 如果您还没有,请编写一个 Ubuntu live USB 闪存驱动器(在UbuntuWindowsMac OS X 上),或刻录 Ubuntu live CD/DVD(在UbuntuWindowsMac OS X 上)。

  2. 如果您知道包含 Ubuntu 系统根文件系统的分区的设备名称,请跳到第 5 步

  3. 在您的 Ubuntu 系统(不是 live CD/DVD/USB 系统)中,在终端中运行以下命令:

    mount | grep ' on / '
    
    Run Code Online (Sandbox Code Playgroud)

    您应该包括前空间on和后/

  4. 该命令产生类似于/dev/sda1 on / type ext4 (rw,errors=remount-ro,commit=0)输出的内容。前面的文本on(不包括空格)是包含 Ubuntu 系统根文件系统的分区的设备名称。记住它(或写下来)。

  5. 从 live CD/DVD/USB 启动计算机并选择Try Ubuntu without installation (not Install Ubuntu )。

  6. 打开一个终端窗口(Ctrl+ Alt+ T)。

  7. 运行此命令:

    sudo mount /dev/sda1 /mnt
    Run Code Online (Sandbox Code Playgroud)

    /dev/sda1如果不同,请替换为包含 Ubuntu 系统根文件系统的分区的设备名称。

    如果您收到有关设备或分区如何不存在或有关“未知文件系统类型”的错误消息,那么您可能使用了错误的设备名称或分区号。如上所述,您系统的根分区可能不是/dev/sda1.

  8. 运行此命令:

    sudo chroot /mnt
    
    Run Code Online (Sandbox Code Playgroud)

    为了能够重置密码,或者能够改变什么组用户的成员,这就是你需要做的,在chroot环境的目的。特别是,还需要安装其他文件系统一样/dev/dev/pts/sys,和/proc. 更复杂的chroot 程序,它允许您完全使用您被 chroot 进入的系统——例如,更新和安装其中的软件——确实需要这样做,以及进入 chroot 后的其他步骤,但这不需要。

    如果您运行sudo chroot /mnt并看到此消息,则几乎总是意味着您将错误的分区安装到--/mnt记住,它实际上不会/dev/sda1在所有系统上--尽管如果您删除也会发生这种情况/bin/bash

    chroot: failed to run command ‘/bin/bash’: No such file or directory
    
    Run Code Online (Sandbox Code Playgroud)

    如果确实发生这种情况,那么您可以卸载它,sudo umount /mnt然后继续安装正确的分区。

  9. 执行这些任务之一,以获取/恢复对安装 Ubuntu 系统的访问权限。

    • 如果要重置用户密码:

      passwd username
      Run Code Online (Sandbox Code Playgroud)

      替换username为您的用户名。(这是安装在硬盘上的系统上的用户名,而不是“ubuntu”,后者是 Ubuntu 桌面安装 CD 上默认用户的用户名。)

      输入该用户所需的密码。

      • 如果您不知道您的用户名,您可以通过运行以下命令获取系统上的用户列表:

        ls /home
        
        Run Code Online (Sandbox Code Playgroud)

        这是有效的,因为/home包含所有用户的主目录,并且用户的主目录的名称与用户的名称相同。

    • 或者,如果您想设置/重置root密码:

      由于您在rootshell 中,您可以使用passwd不带参数的命令来重置root密码:

      passwd
      
      Run Code Online (Sandbox Code Playgroud)

      但请参阅此页面,其中解释了为什么root不建议在 Ubuntu 中启用该帐户。

    • 或者,如果您想让用户成为管理员(以便他们可以执行管理操作,包括root与一样运行命令sudo):

      在Ubuntu 12.04及更高版本(可以运行lsb_release -r,看看你有什么Ubuntu的版本,只要确保你运行它chroot或它会告诉你的是什么版本的live CD了),运行:

      usermod -a -G sudo username
      Run Code Online (Sandbox Code Playgroud)

      在 Ubuntu 11.10 及更低版本中,管理能力是由admin组中的成员而不是sudo组授予的。那么你应该运行:

      usermod -a -G admin username
      Run Code Online (Sandbox Code Playgroud)

      在这两种情况下,请替换username为您要授予管理员权限的用户帐户的名称。

  10. 运行这三个命令:

    exit
    sudo umount /mnt
    exit
    
    Run Code Online (Sandbox Code Playgroud)

    这些命令中的最后一个退出终端窗口。

  11. 通过单击屏幕右上角的电源图标并单击关机来重新启动系统。(然后在出现的对话框中点击重启。)确保在系统再次启动之前移除CD/DVD或U盘,这样您就可以在硬盘上进入您的Ubuntu系统。

    • 如果您运行的是足够旧的 Ubuntu live CD,电源菜单中有一个Restart选项,您应该单击它而不是Shut Down

如果您根本无法使用已安装的 Ubuntu 系统

如果您无法登录获取包含您的Ubuntu系统根文件系统的分区的设备名称,您可以在启动live CD后弄清楚。有几种方法可以做到这一点。我在这里介绍一种我认为最容易且最不可能导致错误的方法。(但是,您可能也对这种其他方法感兴趣。)

  1. 如果您还没有,请刻录 Ubuntu live CD/DVD(在UbuntuWindowsMac OS X 上)或编写 Ubuntu live USB 闪存驱动器(在UbuntuWindowsMac OS X 上)。

  2. 从 live CD/DVD/USB 启动计算机并选择Try Ubuntu without installation (not Install Ubuntu )。

  3. 打开 GParted。

    • 在大多数 Ubuntu 版本的默认桌面环境Unity 中执行此操作,请单击主页按钮(即屏幕左上角带有 Ubuntu 徽标的按钮)或按Super,这也称为作为 Windows 键。然后输入gparted. GParted 将出现,您可以单击它。

    • Ubuntu 17.10 及更高版本使用 GNOME 3和 GNOME Shell 而不是 Unity。要打开 GParted,请单击出现在屏幕左下角的九个点的网格以打开应用程序面板。然后单击 GParted 图标。

      GNOME 3 在 Ubuntu 17.10 实时环境中使用 GNOME Shell 的两个屏幕截图,由 Videonauth 提供,并排放置,并添加了手绘标记以显示*应用程序面板*的按钮位置,以及 GParted图标看起来像在应用程序面板中。 请注意,此图标被标记为 GParted,因此无需通过图标的外观来识别它。
      特别感谢Videonauth解释了如何在 GNOME 3 中打开 GParted,并提供了这些截图。1

    • 在使用 GNOME 2 而不是 Unity 或 Unity 2D 界面的非常旧版本的 Ubuntu 上,通过单击System ? 行政GParted 分区编辑器

    • 其他 Ubuntu 版本,如 Ubuntu MATE、Xubuntu 和 Lubuntu,具有类似的嵌套菜单系统,您可以通过它访问 GParted,同时从实时 USB 或实时 CD/DVD 运行它们。

  4. 现在您可以以图形方式查看所有分区。如果您有多个驱动器,您可能需要在 GParted 右上角的下拉菜单中选择包含您的 Ubuntu 系统的驱动器。

  5. 包含您的 Ubuntu 系统根文件系统的分区很可能是一个大型分区类型ext4(或对于非常旧的 Ubuntu 系统,ext3)。通常只有一个ext4(或ext3)分区,或者只有一个大分区。否则,一个可能是/分区(包含根文件系统,这就是您想要的),另一个可能是/home分区。因此,如果有两个大的ext4ext3分区,你可以假设第一个(表示最左边)可能包含你的系统根文件系统的一个。

    这可能是错误的,但如果您这样做,这些说明不会损坏任何内容。在其他一些情况下,除了本文中描述的操作之外,做出这种假设不一定是安全的。

  6. 记住或记下(可能)包含根文件系统的分区的设备名称。GParted 向您展示了这一点。它通常采用其中是小写字母和数字的形式。/dev/sdXnXn

  7. 退出 GParted。

  8. 按照上述说明(“如果您可以以非管理用户身份登录”),从步骤 6开始。

这些帖子最初改编自我Launchpad Answers question 中写的帖子 #9 。

1个 幸得Videonauth的向我解释如何在Ubuntu的17.10生活环境中启动的GParted。我没有 GNOME 3,否则无法提供这些说明。他还提供了两个屏幕截图。(我添加的只是丑陋的手绘箭头和圆圈。)

  • 考虑不同的场景,详细描述每一步,最重要的是解决了我在其他任何地方都找不到答案的问题,使这个答案成为迄今为止我在社区中看到的最好的答案。如果可以的话,我会为它点赞 100 次! (2认同)

phi*_*lew 10

如果您需要更改您的 root 密码但不知道旧密码,您将需要进入 root shell。当您启动计算机时,一旦 BIOS 屏幕消失(带有您计算机徽标的屏幕),开始点击该Shift键,直到 GRUB 菜单出现,如果此选项不起作用,请点击该Esc键。(如果它已经配置为出现,则不需要此步骤。)

当您看到菜单时,选择最新内核(或您通常使用的内核)的选项,然后选择下面称为“恢复模式”的选项。

它应该是这样的:

在此处输入图片说明

这将带您进入如下所示的菜单:

在此处输入图片说明

接下来选择Root选项。

等待并让所有内容加载,直到您到达 shell。现在是乐趣。输入以下命令:

passwd your-username
Run Code Online (Sandbox Code Playgroud)

替换your-username为您的实际用户名。

如果您不确定自己的用户名,可以通过以下方式查看主文件夹中文件的名称:

cd /home
Run Code Online (Sandbox Code Playgroud)

然后运行:

ls
Run Code Online (Sandbox Code Playgroud)

这将显示您计算机上的用户名称。

现在输入我上面提到的命令:. 所以如果你的用户名是 jane,我会输入:passwd your-username

passwd jane
Run Code Online (Sandbox Code Playgroud)

接下来,您将看到一个选项来输入您的新 unix 密码。这是您输入密码的地方。它将要求您重新键入命令,然后在输入两次成功密码后,密码已更改。现在通过以下方式重新登录您的系统

reboot
Run Code Online (Sandbox Code Playgroud)

如果在输入新密码时要求您输入 root 密码,这通常会有所帮助:

替代方法

如果您在进入单用户模式时被要求输入 root 密码,请使用init=/bin/bash内核附加行,该行应该将机器引导到 bash 控制台,您可以在那里获得对/etc/shadow文件的读/写访问权限。然后,您可以passwd直接运行或编辑影子文件以放入一个空字符串。这允许您将机器重新启动到正常环境并以 root 身份登录,将密码留空,然后运行passwd程序以设置 root 密码。这应该只在机器与任何网络分离时才能完成。

(引自 Shawn Lee 在下面列出的一篇文章中。)

init=/bin/bash按照建议启动,请在启动时访问 GRUB 菜单,然后按e进入编辑器。将光标移动到以 开头的行linux,然后将光标移动到该行的末尾。输入文字

init=/bin/bash
Run Code Online (Sandbox Code Playgroud)

并按下F10启动。您应该以纯文本模式进入 root shell。文件系统将以只读方式挂载。要使文件系统可写,请输入命令

mount -o remount,rw /
Run Code Online (Sandbox Code Playgroud)

然后你可以运行

passwd username
Run Code Online (Sandbox Code Playgroud)

其中username是您要设置其密码的用户的名称。完成后,您可以使用reboot命令重新启动。


如果您需要更多信息,这些链接可以提供帮助:

  • 问题是,他设置了 root 密码,所以除非他写,否则他不能降到 root shell。但他不知道。 (3认同)