问题描述
我需要重置密码。我已按照以下步骤操作:
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用户
-
如果您还没有,请编写Ubuntu live USB闪存盘(在Ubuntu,Windows或Mac OS X上),或刻录Ubuntu live CD /DVD(在Ubuntu,Windows或Mac OS X上)。
-
如果您知道包含Ubuntu系统根文件系统的分区的设备名称,请跳到步骤5。
-
在您的Ubuntu系统(不是Live CD /DVD /USB系统)中,在终端中运行此命令:
mount | grep ' on / '
您应该在
on
之前和/
之后包含空格。 -
该命令产生类似
/dev/sda1 on / type ext4 (rw,errors=remount-ro,commit=0)
的输出。on
之前的文本(不包括空格)是包含Ubuntu系统根文件系统的分区的设备名称。记住它(或写下来)。 -
从Live CD /DVD /USB启动计算机并选择Try Ubuntu而不安装(不安装Ubuntu)。
-
打开终端窗口(
Ctrl
+Alt
+T
)。 -
运行此命令:
sudo mount /dev/sda1 /mnt
将
/dev/sda1
替换为包含Ubuntu系统根文件系统的分区的设备名称(如果不同)。如果您收到有关设备或分区不存在或“未知文件系统类型”的错误消息,那么您可能使用了错误的设备名称或分区号。如上所述,您系统的根分区可能不是
/dev/sda1
。 -
运行此命令:
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
卸载它,然后继续安装正确的分区。 -
执行以下任务之一,以获取/恢复对安装Ubuntu系统的访问权限。
-
如果要重置用户密码:
passwd username
将username
替换为您的用户名。 (这是安装在硬盘驱动器上的系统上的用户名,而不是”ubuntu”,它是Ubuntu桌面安装CD上默认用户的用户名。)输入您希望该用户使用的密码。-
如果您不知道用户名,可以通过运行以下命令获取系统上的用户列表:
ls /home
这是因为
/home
包含所有用户的home directories,并且用户主目录的名称与用户名相同。
-
-
或者,如果要设置/重置
root
密码:由于您位于
root
shell中,因此可以使用不带参数的passwd
命令来重置root
的密码:passwd
但请参阅this page,其中解释了为什么不建议在Ubuntu中启用
root
帐户。 -
或者,如果您想让用户成为管理员(这样他们就可以执行管理操作,包括将命令作为
root
与sudo
一起运行):在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
替换为您要授予管理员权限的用户帐户的名称。
-
-
运行以下三个命令:
exit sudo umount /mnt exit
这些命令中的最后一个退出终端窗口。
-
单击屏幕upper-right一角的电源图标,然后单击“关机”,重新启动系统。 (然后在出现的对话框中单击“重新启动”。)确保在系统再次启动之前卸下CD /DVD或USB闪存驱动器,以便可以进入硬盘上的Ubuntu系统。
-
如果您运行的是足够旧的Ubuntu live CD,电源菜单中有“重启”选项,则应单击该选项而不是“关机”。
-
如果您根本无法使用已安装的Ubuntu系统
如果您无法登录以获取包含Ubuntu系统根文件系统的分区的设备名称,则可以在启动Live CD后进行计算。有几种方法可以做到这一点。我在这里提出一个我认为最简单且最不可能导致错误的人。 (不过,您也可能对this other method感兴趣。)
-
如果您还没有,请刻录Ubuntu live CD /DVD(在Ubuntu,Windows或Mac OS X上)或编写Ubuntu live USB闪存盘(在Ubuntu,Windows或Mac OS X上)。
-
从Live CD /DVD /USB启动计算机并选择Try Ubuntu而不安装(不安装Ubuntu)。
-
打开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
-
在使用GNOME 2而不是Unity或Unity 2D界面的非常旧版本的Ubuntu上,通过单击系统¢¢”管理↔GParted分区编辑器从顶部菜单打开GParted。
-
其他Ubuntu风格,如Ubuntu MATE,Xubuntu和Lubuntu,都有一个类似的嵌套菜单系统,通过它可以访问GParted,同时从现场USB或实时CD /DVD运行它们。
-
-
现在,您可以以图形方式查看所有分区。如果您有多个驱动器,则可能需要在GParted的upper-right角的drop-down菜单中选择包含Ubuntu系统的驱动器。
-
包含Ubuntu系统根文件系统的分区很可能是
ext4
类型的大分区(或者对于非常旧的Ubuntu系统,ext3
)。通常只有一个ext4
(或ext3
)分区,或者只有一个大分区。否则,可能是/
分区(包含根文件系统,这是您想要的),另一个可能是/home
分区。因此,如果有两个大的ext4
或ext3
分区,您可以假设第一个(显示在最左侧)可能是包含系统根文件系统的分区。这可能是错误的,但是如果你这样做的话,这些指令都不会损坏。在其他一些情况下,除了这篇文章中描述的行动之外,做出这个假设并不一定是安全的。 -
记住或记下(可能)包含根文件系统的分区的设备名称。 GParted向您展示了这一点。它通常采用
/dev/sdXn
形式,其中X
是lower-case字母,n
是数字。 -
退出GParted。
-
按照上面的说明(“如果您可以以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”的选项它应如下所示:
这将带您进入如下所示的菜单:
接下来选择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的链接通常可以正常工作。
参考资料