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 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 / '
Run Code Online (Sandbox Code Playgroud)
您应该包括前空间on
和后/
。
该命令产生类似于/dev/sda1 on / type ext4 (rw,errors=remount-ro,commit=0)
输出的内容。前面的文本on
(不包括空格)是包含 Ubuntu 系统根文件系统的分区的设备名称。记住它(或写下来)。
从 live CD/DVD/USB 启动计算机并选择Try Ubuntu without installation (not Install Ubuntu )。
打开一个终端窗口(Ctrl+ Alt+ T)。
运行此命令:
sudo mount /dev/sda1 /mnt
Run Code Online (Sandbox Code Playgroud)
/dev/sda1
如果不同,请替换为包含 Ubuntu 系统根文件系统的分区的设备名称。
如果您收到有关设备或分区如何不存在或有关“未知文件系统类型”的错误消息,那么您可能使用了错误的设备名称或分区号。如上所述,您系统的根分区可能不是/dev/sda1
.
运行此命令:
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
然后继续安装正确的分区。
执行这些任务之一,以获取/恢复对安装 Ubuntu 系统的访问权限。
如果要重置用户密码:
passwd username
Run Code Online (Sandbox Code Playgroud)
替换username
为您的用户名。(这是安装在硬盘上的系统上的用户名,而不是“ubuntu”,后者是 Ubuntu 桌面安装 CD 上默认用户的用户名。)
输入该用户所需的密码。
如果您不知道您的用户名,您可以通过运行以下命令获取系统上的用户列表:
ls /home
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为/home
包含所有用户的主目录,并且用户的主目录的名称与用户的名称相同。
或者,如果您想设置/重置root
密码:
由于您在root
shell 中,您可以使用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
为您要授予管理员权限的用户帐户的名称。
运行这三个命令:
exit
sudo umount /mnt
exit
Run Code Online (Sandbox Code Playgroud)
这些命令中的最后一个退出终端窗口。
通过单击屏幕右上角的电源图标并单击关机来重新启动系统。(然后在出现的对话框中点击重启。)确保在系统再次启动之前移除CD/DVD或U盘,这样您就可以在硬盘上进入您的Ubuntu系统。
如果您无法登录获取包含您的Ubuntu系统根文件系统的分区的设备名称,您可以在启动live CD后弄清楚。有几种方法可以做到这一点。我在这里介绍一种我认为最容易且最不可能导致错误的方法。(但是,您可能也对这种其他方法感兴趣。)
如果您还没有,请刻录 Ubuntu live CD/DVD(在Ubuntu、Windows或Mac OS X 上)或编写 Ubuntu live USB 闪存驱动器(在Ubuntu、Windows或Mac OS X 上)。
从 live CD/DVD/USB 启动计算机并选择Try Ubuntu without installation (not Install Ubuntu )。
打开 GParted。
要在大多数 Ubuntu 版本的默认桌面环境Unity 中执行此操作,请单击主页按钮(即屏幕左上角带有 Ubuntu 徽标的按钮)或按Super,这也称为作为 Windows 键。然后输入gparted
. GParted 将出现,您可以单击它。
Ubuntu 17.10 及更高版本使用 GNOME 3和 GNOME Shell 而不是 Unity。要打开 GParted,请单击出现在屏幕左下角的九个点的网格以打开应用程序面板。然后单击 GParted 图标。
特别感谢Videonauth解释了如何在 GNOME 3 中打开 GParted,并提供了这些截图。1
在使用 GNOME 2 而不是 Unity 或 Unity 2D 界面的非常旧版本的 Ubuntu 上,通过单击System ? 行政?GParted 分区编辑器。
其他 Ubuntu 版本,如 Ubuntu MATE、Xubuntu 和 Lubuntu,具有类似的嵌套菜单系统,您可以通过它访问 GParted,同时从实时 USB 或实时 CD/DVD 运行它们。
现在您可以以图形方式查看所有分区。如果您有多个驱动器,您可能需要在 GParted 右上角的下拉菜单中选择包含您的 Ubuntu 系统的驱动器。
包含您的 Ubuntu 系统根文件系统的分区很可能是一个大型分区类型ext4
(或对于非常旧的 Ubuntu 系统,ext3
)。通常只有一个ext4
(或ext3
)分区,或者只有一个大分区。否则,一个可能是/
分区(包含根文件系统,这就是您想要的),另一个可能是/home
分区。因此,如果有两个大的ext4
或ext3
分区,你可以假设第一个(表示最左边)可能包含你的系统根文件系统的一个。
这可能是错误的,但如果您这样做,这些说明不会损坏任何内容。在其他一些情况下,除了本文中描述的操作之外,做出这种假设不一定是安全的。
记住或记下(可能)包含根文件系统的分区的设备名称。GParted 向您展示了这一点。它通常采用其中是小写字母和数字的形式。/dev/sdXn
X
n
退出 GParted。
按照上述说明(“如果您可以以非管理用户身份登录”),从步骤 6开始。
这些帖子最初改编自我在Launchpad Answers question 中写的帖子 #9 。
1个 幸得Videonauth的向我解释如何在Ubuntu的17.10生活环境中启动的GParted。我没有 GNOME 3,否则无法提供这些说明。他还提供了两个屏幕截图。(我添加的只是丑陋的手绘箭头和圆圈。)
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
命令重新启动。
如果您需要更多信息,这些链接可以提供帮助:
归档时间: |
|
查看次数: |
142428 次 |
最近记录: |