我需要重置密码。我已按照以下步骤操作:
但是,当我转到“root”或“netroot”恢复选项时,它告诉我:
Give root password for maintenance (or type Control-D to continue)
显然,我不知道 root 密码。如果我输入CTRL+ D,我会返回到选项列表。从这一页我读:
在“另一种方式”一章下:
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 中的行。我应该编辑哪一行?或者还有其他方法可以重置我的密码?
答案1
由于您无法访问恢复模式,你必须通过以下方式更改密码从实时 CD/DVD 或实时 USB 系统访问已安装的 Ubuntu 系统。下面是有关如何执行此操作的详细演练。
如果您已经可以使用 Ubuntu 系统(即使没有管理员权限),那么这是最简单的。但是如果您不能使用,也不会太难。
- 根据我的经验,大多数最终被锁定在自己的系统之外的 Ubuntu 用户都启用了自动登录,这就是他们忘记密码的原因(因为他们不必输入密码即可登录)。 在您的情况下,情况可能如此,也可能并非如此,但我已经介绍了如果您能首先使用已安装的 Ubuntu 系统,因为我认为这将对阅读这篇文章的大多数人有所帮助。
如果你能够以非管理员用户身份使用已安装的 Ubuntu 系统
如果你还没有,可以写入一个 Ubuntu live USB 闪存驱动器(在Ubuntu,视窗, 或者Mac OS X),或者刻录 Ubuntu Live CD/DVD(Ubuntu,视窗, 或者Mac OS X)。
如果你知道包含 Ubuntu 系统根文件系统的分区的设备名称,请直接跳至步骤 5。
在您的 Ubuntu 系统(不是实时 CD/DVD/USB 系统)中,在终端中运行此命令:
mount | grep ' on / '
on
您应该在 之前和 之后添加空格/
。该命令会产生类似于
/dev/sda1 on / type ext4 (rw,errors=remount-ro,commit=0)
输出的内容。前面的文本on
(不包括空格)是包含 Ubuntu 系统根文件系统的分区的设备名称。记住它(或写下来)。从实时 CD/DVD/USB 启动计算机并选择无需安装即可试用 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 程序允许您充分利用被 chroot 到的系统(例如,在其中更新和安装软件)——确实需要这样做,以及进入 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
包含所有用户的主目录,并且用户的主目录名称与用户的名称相同。
或者,如果您想设置/重置密码
root
:由于您在
root
shell 中,因此您可以使用passwd
不带参数的命令来重置root
密码:passwd
但请看看这一页,这解释了为什么
root
不建议在 Ubuntu 中启用该帐户。或者,如果您想让用户成为管理员(这样他们就可以执行管理操作,包括运行命令
root
)sudo
:在 Ubuntu 12.04 及更高版本中(你可以运行
lsb_release -r
来查看你的 Ubuntu 版本,只要确保你运行它在或者它chroot
会告诉你什么版本的现场 CD有),运行:usermod -a -G sudo username
在 Ubuntu 11.10 及更低版本中,管理能力由组成员身份授予,
admin
而不是由sudo
组授予。因此,您需要运行:usermod -a -G admin username
在这两种情况下,更换
username
使用您想要授予管理员权限的用户帐户的名称。
运行以下三个命令:
exit sudo umount /mnt exit
最后一个命令退出终端窗口。
单击屏幕右上角的电源图标并单击以重新启动系统关闭(然后点击重新开始在出现的对话框中。)请确保在系统再次启动之前移除 CD/DVD 或 USB 闪存驱动器,以便您可以进入硬盘上的 Ubuntu 系统。
- 如果你运行的是较旧的 Ubuntu Live CD,其中有一个重新开始电源菜单中的选项,你应该点击它,而不是关闭。
如果你根本无法使用已安装的 Ubuntu 系统
如果您无法登录以获取包含 Ubuntu 系统根文件系统的分区的设备名称,您可以在启动 Live CD 后找出答案。有几种方法可以做到这一点。我在这里介绍一种我认为最简单且最不容易出错的方法。(但是,您可能还对另一种方法。
如果你还没有,请刻录 Ubuntu Live CD/DVD(Ubuntu,视窗, 或者Mac OS X)或写入 Ubuntu Live USB 闪存驱动器(在Ubuntu,视窗, 或者Mac OS X)。
从实时 CD/DVD/USB 启动计算机并选择无需安装即可试用 Ubuntu(不是安装 Ubuntu)。
打开 GParted。
在 Unity 中执行此操作,这是大多数 Ubuntu 版本中的默认桌面环境,点击主页按钮(即屏幕左上角带有 Ubuntu 徽标的按钮)或按Super,也称为 Windows 键。然后输入
gparted
。GParted 将出现,您可以单击它。Ubuntu 17.10 及更高版本使用 GNOME 3使用 GNOME Shell 而不是 Unity。要打开 GParted,请单击屏幕左下角出现的九点网格以打开应用程序面板。然后单击 GParted 图标。
在非常旧的版本对于使用 GNOME 2 而不是 Unity 或 Unity 2D 界面的 Ubuntu,请点击顶部菜单打开 GParted系统→行政→GParted 分区编辑器。
其他 Ubuntu 版本与 Ubuntu MATE、Xubuntu 和 Lubuntu 一样,它们都有类似的嵌套菜单系统,您可以通过该系统在从实时 USB 或实时 CD/DVD 运行它们时访问 GParted。
现在,您可以以图形方式查看所有分区。如果您有多个驱动器,则可能需要在 GParted 右上角的下拉菜单中选择包含 Ubuntu 系统的驱动器。
包含 Ubuntu 系统根文件系统的分区很可能是 类型的大分区
ext4
(对于非常旧的 Ubuntu 系统,ext3
)。通常只有一个ext4
(或ext3
)分区,或者只有一个大分区。否则,一个可能是 分区/
(包含根文件系统,这是您想要的),另一个可能是 分区/home
。因此,如果有两个大ext4
或ext3
分区,您可以假设第一个(最左边显示)可能是包含系统根文件系统的分区。这可能是错误的,但不会造成任何损害这些说明如果你是。在其他一些情况下,除了本文中描述的操作之外,做出这种假设不一定是安全的。
记住或写下可能包含根文件系统的分区的设备名称。GParted 会向您显示此信息。它通常采用以下形式:
/dev/sdXn
X
是小写字母,并且n
是一个数字。退出 GParted。
按照上面的说明进行操作(“如果您可以以非管理员用户身份登录“), 从...开始第 6 步。
这些帖子最初改编自我在此 Launchpad 解答问题。
1 功劳归于视频直播向我解释如何在 Ubuntu 17.10 实时环境中启动 GParted。我没有 GNOME 3,否则无法提供这些说明。他还提供了两个屏幕截图。(我只添加了丑陋的手绘箭头和圆圈。)
答案2
如果您需要更改 root 密码但不知道旧密码,则需要进入 root shell。启动计算机时,一旦 BIOS 屏幕消失(屏幕上显示计算机徽标),就开始按 键Shift直到出现 GRUB 菜单,如果此选项不起作用,则按 键Esc。(如果已配置为出现,则此步骤不是必需的。)
当您看到菜单时,选择最新内核(或您通常使用的内核)选项,然后选择下面的“恢复模式”选项。
它看起来应该是这样的:
这会将你带到如下所示的菜单:
接下来选择 Root 选项。
等待一切加载,直到进入 shell。现在开始好玩了。输入以下命令:
passwd your-username
代替your-username
使用您的实际用户名。
如果您不确定您的用户名,您可以通过以下方式查看主文件夹中文件的名称:
cd /home
然后运行:
ls
这将显示您计算机上的用户的姓名。
现在输入我上面所述的命令:。因此,如果您的用户名是 jane,我会输入:passwd your-username
passwd jane
接下来,您将看到一个选项,让您输入新的 unix 密码。这是您输入密码的地方。它会要求您重新输入命令,然后在两次成功输入密码后,密码已更改。现在通过以下方式重新登录您的系统
reboot
如果在输入新密码时要求您输入 root 密码,这通常会有所帮助:
替代方法
如果在进入单用户模式时系统要求您输入 root 密码,请使用
init=/bin/bash
内核附加行,该行应将计算机引导到 bash 控制台,您可以在其中获得对/etc/shadow
文件的读/写访问权限。然后,您可以passwd
直接运行或编辑影子文件以输入一个空字符串。这允许您将计算机重新启动到其正常环境并以 root 身份登录,密码为空,然后运行程序passwd
以设置 root 密码。这实际上只应在计算机与任何网络断开连接时执行。
(引自 Shawn Lee 在一篇文章下面列出。)
要init=/bin/bash
按照建议启动,请在启动时访问 GRUB 菜单,然后按e进入编辑器。将光标移动到以 开头的行linux
,然后将光标移动到该行的末尾。输入文本
init=/bin/bash
然后F10按 启动。您应该进入纯文本模式的 root shell。文件系统将以只读方式挂载。要使文件系统可写,请输入命令
mount -o remount,rw /
然后你可以运行
passwd username
在哪里username
是要设置其密码的用户名。完成后,您可以使用该reboot
命令重新启动。
如果您需要更多信息,这些链接可以提供帮助:
答案3
如果设置了 root 密码而您忘记了它,但可以正常启动并可以使用 sudo,请从终端尝试此操作
sudo passwd -dl root
如果您混淆了普通密码(和 sudo)和 root 密码,则并不明显。
您提供的用于重置密码的链接应该可以正常工作。