当前位置: 首页>>技术问答>>正文


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

, ,

问题描述

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

How do I reset a lost administrative password?

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

Give root password for maintenance (or type Control-D to continue)

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

在“其他方式”一章下:

4. Highlight the line that begins kernel and press 'e' to edit`

但是在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....

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

最佳解决方案

由于您无法访问recovery mode,因此您必须通过accessing your installed Ubuntu system from a live CD/DVD or live USB system更改密码。以下是有关如何执行此操作的详细演练。

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

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

如果您可以使用已安装的Ubuntu系统,即使作为Non-Administrative用户

  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 / '
    

    您应该在on之前和/之后包含空格。

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

  5. 从Live CD /DVD /USB启动计算机并选择Try Ubuntu而不安装(不安装Ubuntu)。

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

  7. 运行此命令:

    sudo mount /dev/sda1 /mnt

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

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

  8. 运行此命令:

    sudo chroot /mnt
    

    为了能够重置密码,或者能够更改用户所属的组,您需要做的就是chroot。特别是,您不需要安装其他文件系统,如/dev/dev/pts/sys/proc如何在意外删除所有内核后恢复系统? chrooting程序,允许您完全使用您被chrootin的系统 – 例如,更新和安装其中的软件 – 确实需要,以及进入chroot后的其他步骤,但事实并非如此。

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

    chroot: failed to run command ‘/bin/bash’: No such file or directory
    

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

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

    • 如果要重置用户密码:passwd usernameusername替换为您的用户名。 (这是安装在硬盘驱动器上的系统上的用户名,而不是”ubuntu”,它是Ubuntu桌面安装CD上默认用户的用户名。)输入您希望该用户使用的密码。

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

        ls /home
        

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

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

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

      passwd
      

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

    • 或者,如果您想让用户成为管理员(这样他们就可以执行管理操作,包括将命令作为rootsudo一起运行):

      在Ubuntu 12.04及更高版本中(您可以运行lsb_release -r来查看您拥有的Ubuntu版本,只需确保在chroot中运行它,或者它将告诉您Live CD的版本),运行:

      usermod -a -G sudo username

      在Ubuntu 11.10及更低版本中,管理能力由admin组的成员资格而非sudo组授予。那么你会改为运行:

      usermod -a -G admin username

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

  10. 运行以下三个命令:

    exit
    sudo umount /mnt
    exit
    

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

  11. 单击屏幕upper-right一角的电源图标,然后单击“关机”,重新启动系统。 (然后在出现的对话框中单击“重新启动”。)确保在系统再次启动之前卸下CD /DVD或USB闪存驱动器,以便可以进入硬盘上的Ubuntu系统。

    • 如果您运行的是足够旧的Ubuntu live CD,电源菜单中有“重启”选项,则应单击该选项而不是“关机”。

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

如果您无法登录以获取包含Ubuntu系统根文件系统的分区的设备名称,则可以在启动Live CD后进行计算。有几种方法可以做到这一点。我在这里提出一个我认为最简单且最不可能导致错误的人。 (不过,您也可能对this other method感兴趣。)

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

  2. 从Live CD /DVD /USB启动计算机并选择Try Ubuntu而不安装(不安装Ubuntu)。

  3. 打开GParted。

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

    • Ubuntu 17.10及更高版本将GNOME 3与GNOME Shell一起使用而不是Unity。要打开GParted,请单击屏幕左下角显示的九个点的网格以打开应用程序面板。然后单击GParted图标。特别感谢Videonauth解释如何在GNOME 3中打开GParted,以及providing这些截图.1

      grub2,password-recovery,ubuntu

    • 在使用GNOME 2而不是Unity或Unity 2D界面的非常旧版本的Ubuntu上,通过单击系统¢¢”管理↔GParted分区编辑器从顶部菜单打开GParted。

    • 其他Ubuntu风格,如Ubuntu MATE,Xubuntu和Lubuntu,都有一个类似的嵌套菜单系统,通过它可以访问GParted,同时从现场USB或实时CD /DVD运行它们。

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

  5. 包含Ubuntu系统根文件系统的分区很可能是ext4类型的大分区(或者对于非常旧的Ubuntu系统,ext3)。通常只有一个ext4(或ext3)分区,或者只有一个大分区。否则,可能是/分区(包含根文件系统,这是您想要的),另一个可能是/home分区。因此,如果有两个大的ext4ext3分区,您可以假设第一个(显示在最左侧)可能是包含系统根文件系统的分区。这可能是错误的,但是如果你这样做的话,这些指令都不会损坏。在其他一些情况下,除了这篇文章中描述的行动之外,做出这个假设并不一定是安全的。

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

  7. 退出GParted。

  8. 按照上面的说明(“如果您可以以Non-Administrative用户身份登录”),从步骤6开始。

这篇文章最初改编自我在this Launchpad Answers question编写的第9篇文章。

1 Credit转到Videonauth,向我解释如何在Ubuntu 17.10实时环境中启动GParted。我没有GNOME 3,否则无法提供这些说明。他还提供了两个截图。 (我添加的只是丑陋的hand-drawn箭头和圆圈。)

次佳解决方案

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

当您看到菜单时,选择最新内核(或您通常使用的内核)的选项并选择下面名为”recovery mode”的选项它应如下所示:

grub2,password-recovery,ubuntu

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

grub2,password-recovery,ubuntu

接下来选择Root选项

等等,让一切都加载,直到你得到一个shell。现在来了很有趣;输入以下命令:

passwd "your username"  
(no qoutes though)

如果您不确定自己的用户名,可以通过以下方式查看家庭浏览器中文件的名称:

cd /home

比进入

ls

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

现在输入我上面说的命令; passwd “your username”没有qoutes。所以如果你的用户名是jane,我会输入:

passwd jane

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

reboot

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

第二步可能

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

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

https://wiki.ubuntu.com/RecoveryMode

http://www.psychocats.net/ubuntu/resetpassword

http://www.debuntu.org/recover-root-password-single-user-mode-and-grub

http://www.debianadmin.com/how-to-reset-debian-root-password.html

第三种解决方案

如果设置了root密码并且您忘记了它,但可以正常启动并且可以使用sudo从终端尝试此操作

sudo passwd -dl root

如果您获得正常(和sudo)密码并且根目录混淆,则不明显。

您重置passwd的链接通常可以正常工作。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/6717.html,未经允许,请勿转载。