重置 Ubuntu 16.04 的 root 密码 - 恢复模式要求输入 root 密码

zlo*_*lon 9 root password recovery-mode

我们丢失了来自 supermicro 服务器的文件服务器的 root 密码。

我尝试按照通用说明通过左移重新启动并降到 root shell,如本答案中所述

当我在此菜单中选择 root 时:

菜单

Ubuntu 仍然要求输入 root 密码或建议按Ctrl+D返回到恢复菜单。

还有其他方法可以重置root密码吗?

Vid*_*uth 12

由于您可以物理访问机器,因此您可以通过 Live USB/CD 执行此操作。

  1. 从您的 USB 启动并选择“尝试 Ubuntu”而不是“安装 Ubuntu”。

    在此处输入图片说明

  2. 打开一个终端(Ctrl+ Alt+ T),并先来看看什么设备处理您的机磁盘了。你可以这样做,lsblk它应该会产生这样的输出(我使用了一张 live CD,因为我在虚拟机中重现了这些步骤):

    $ lsblk
    NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    sda      8:0    0 119,2G  0 disk 
    ??sda1   8:2    0    16G  0 part [SWAP]
    ??sda2   8:3    0 103,2G  0 part /
    sr0     11:0    1  1024M  0 rom  /cdrom
    
    Run Code Online (Sandbox Code Playgroud)

    所以在这种情况下它会是,/dev/sda2但这可能因您的安装而异。

  3. 现在挂载有问题的分区:

    sudo mount /dev/sda2 /mnt
    
    Run Code Online (Sandbox Code Playgroud)
  4. 现在来到您最终可以1 chroot进入的部分。

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

    您将看到您的提示已更改为类似的内容root@ubuntu:/#,现在接下来的步骤非常简单。

  5. 使用以下命令更改用户的密码passwd

    passwd root
    passwd <main-user>
    
    Run Code Online (Sandbox Code Playgroud)

    这应该已经完成​​了,但是如果在任何情况下使用passwd命令设置密码失败,您都可以深入兔子洞并更改/etc/shadow文件,但要注意:这是非常危险的,您需要自担风险

  6. 退出chrootCtrl+D或类型退出。卸载机器,sudo umount /mnt然后重启sudo reboot。您想取出 USB/CD 并确保您确实在启动有问题的机器。


1chrooting方法足以重置密码,甚至可以从组中添加和删除用户,但它不允许您通过chroot完全使用已安装的系统。apt如果您在以这种方式设置的 chroot 中运行它们,许多其他命令(例如)将失败。

如果您需要对从实时 CD/DVD/USB 访问的已安装系统执行更广泛的修复(例如通过安装、删除或更新软件),那么您需要在此之前设置一些额外的安装chrooting。您可以通过运行之后运行这些命令来做到这一点,sudo mount /dev/sda2 /mnt运行之前sudo chroot /mnt

sudo mount -o bind /dev /mnt/dev
sudo mount -o bind /dev/pts /mnt/dev/pts
sudo mount -t sysfs /sys /mnt/sys
sudo mount -t proc /proc /mnt/proc
Run Code Online (Sandbox Code Playgroud)

如果操作系统的不同部分有多个分区,例如一个单独的/boot分区,那么您可能希望将它们安装到正确的位置。例如,sdX该特定驱动器的设备名称和n分区号在哪里:

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

如果您chroot在使用该passwd命令重置密码之前运行这些命令,那很好。不过,这不是必需的。