重置另一个 Linux 的密码

Ble*_*ers 6 password

我有一个外部硬盘分为两个。其中一个分区上安装了 Linux (Ubuntu)(可引导)。问题是我忘记了它的密码user(单个用户)。

如何user通过将外部硬盘插入另一台 Linux 机器然后编辑一些文件、通过终端使用一些命令、更改 bash(记得很久以前做过类似的事情)或其他东西来重置密码?

而且我不想进入 Grub 等。通过该驱动器启动不是一个选项(虽然它是但我不愿意进入它并且不想重新启动正在运行的(“另一个”)Linux 机器)。

Jos*_* R. 15

即使 michas 给了您最佳答案,它仍然涉及从外部硬盘驱动器启动,出于某种原因,您似乎反对。这是一种您可以从另一个 Linux 系统使用而无需从外部驱动器启动的方法。我假设你的外置硬盘上的 Linux 分区是/dev/sdb1,根据需要修改以下内容。在其他 Linux 安装上运行此代码:

[root@host]# mount /dev/sdb1 /mnt
[root@host]# chroot /mnt
[root@host]# passwd user
Enter new Unix password:
Retype new Unix password:
passwd: password updated successfully
[root@host]# exit
[root@host]# umount /mnt
Run Code Online (Sandbox Code Playgroud)

  • 如果挂载来自不同的架构(例如 x86 与 ARM),`chroot` 将无法工作,因为 chroot 运行 /bin/bash (7认同)
  • 的确。如果您想在 raspberrypi 上重置密码(并且没有配备 32 位 ARM 的 PC),则此方法不起作用。有没有办法在没有 chroot 的情况下执行 passwd?我试过 `passwd -R /run/media/username/drivename root` 但我得到了 `passwd: 无法确定你的用户名。` (5认同)

mic*_*has 13

无需将磁盘放入另一台机器。

我假设您的计算机使用 Grub 作为引导加载程序。(启动过程开始时的操作系统选择。)

您可以使用它来临时编辑 linux 命令行添加init=/bin/sh. 这将不会引导整个系统,而只是打开一个 root shell,它允许您使用passwd username.

再次重新启动后,一切都应该好了。


如果您真的坚持使用另一台计算机设置另一个密码,则必须挂载该磁盘并编辑$mountpoint/etc/shadow存储散列密码的文件。(应该可以从另一台计算机为您知道密码的用户粘贴一行。)

一个更安全的方式来达到同样的先使用chroot $mountpoint,然后使用更改密码passwd username。这也将更改同一个文件,但您可以确保它以正确的方式存储密码并且不会冒无效行的风险。