SDB:恢复 root 密码

跳转到:导航搜索

设置 root 密码

如果您丢失了 root 密码,您可以使用以下步骤进行恢复。但是,某些系统受到启动加载程序密码的保护,如果没有密码,您将无法执行此操作。如果启动加载程序受到密码保护,您需要从其他介质启动,例如 OpenSUSE CD/DVD/mini-boot。OpenSUSE 安装 DVD 可能是最佳选择。


CD/DVD/USB 恢复模式

如果使用 CD/DVD/USB 启动介质,您需要选择 Rescue System(救援系统)。您将进入 root 权限,然后手动挂载磁盘。例如,Compaq raid 控制器可能为 /dev/ida/c0d0,而 ATA 驱动器可能为 /dev/sda1。使用 fdisk -l /dev/ida/c0d0 或 fdisk -l /dev/sda 查找分区,然后挂载您需要的内容。

# mount -o remount,rw /dev/sda1 /mnt
# mount -o bind /proc /mnt/proc
# mount -o bind /sys /mnt/sys
# mount -o bind /dev /mnt/dev
# chroot /mnt
# mount -a
# passwd

您现在拥有 root 权限,可以在已安装的系统中执行所有操作:passwd,以及 YaST...

"bind" 允许使用两个挂载点来访问系统虚拟文件夹。

如果一切都失败了,请考虑您可以拔出此驱动器(或在此机器中安装另一个驱动器),并从另一个正在运行的 Linux 系统中挂载它。然后,如上所述恢复 root 密码。


单用户模式

首先尝试启动到单用户模式。这可能对您不起作用,因为您的系统可能配置为仍然要求输入 root 密码才能进入单用户模式。如果是这样,我们将使用另一种技巧,将 init 替换为 /bin/bash。

首先,尝试单用户模式。如果您没有看到 LILO 或 GRUB 启动屏幕,请尝试按 CTRL-X 以获得一个。如果是 LILO,只需键入 "linux single",应该就可以(假设 "linux" 是 lilo 标签)。如果是文本模式 GRUB,按 'e',然后选择 "kernel" 行,再次按 "e",并在行尾添加 " single"(或仅 " 1")。按 ENTER,然后按 "b" 进行启动。(较新版本的 grub 使用 "a" 来附加到启动行)。如果使用图形 Grub,只需在编辑行上附加 1 或 single。

您应该获得一个相当正常的启动序列,除了它在 bash 提示符处提前终止。如果您收到“请输入系统维护的 root 密码”,则此方法将不起作用,请参阅下面的“INIT 或 /bin/bash”版本。

如果您获得提示符,/ 文件系统可能未以 rw 模式挂载(尽管 "mount" 可能显示已挂载)。执行

mount -o remount,rw /

如果这不起作用(可能不起作用),只需键入 "mount" 即可找到 "/" 挂载在何处。假设它位于 /dev/sda2。然后您将键入

mount -o remount,rw /dev/sda2

如果可以执行此操作,只需在进入后键入 "passwd",将其更改为您喜欢的任何内容。或者,只需编辑 /etc/shadow 以删除密码字段:移动到第一个 ":" 之后,然后删除到下一个 ":" 之前的所有内容。使用 vi,这将是 "/:" 移动到第一个 ":",空格键一次,然后 "d/:" 和 ENTER。您会收到有关更改只读文件的警告;这是正常的。在执行此操作之前,/etc/shadow 可能如下所示:

root:$1$8NFmV6tr$rT.INHxDBWn1VvU5gjGzi/:12209:0:99999:7:-1:-1:1074970543
bin:*:12187:0:99999:7:::
daemon:*:12187:0:99999:7:::
adm:*:12187:0:99999:7:::

编辑后,前几行应如下所示:

root::12209:0:99999:7:-1:-1:1074970543
bin:*:12187:0:99999:7:::
daemon:*:12187:0:99999:7:::
adm:*:12187:0:99999:7:::

您需要强制写入:使用 vi,":wq!"。(如果仍然不起作用,则需要执行上面的 -o remount,rw)。


INIT 或 /bin/bash 模式

另一种技巧是添加 "init=/bin/bash"(LILO "linux init=/bin/bash" 或将其添加到 Grub "kernel" 行)。这将使您转储到比单用户模式更早的 bash 提示符,并且初始化、挂载等操作也更少。您绝对需要使用 "-o remount,rw" 在此处。另请注意,其他文件系统根本没有挂载,因此如果需要它们,可能需要手动挂载它们。查看 /etc/fstab 以获取设备名称。

请记住,如果您有一台 Linux 机器位于公共可访问的位置:如果没有更多保护,恢复丢失的 root 密码通常并不难,这意味着对于其他人来说,更改它或在未经您知识的情况下访问 root 权限也同样容易。

另一种方法是从 /etc/shadow 中删除密码。以防万一您搞砸了,我建议先将其复制到安全的地方。您希望 root 行如下所示:

原始行

root:$1$EYBTVZHP$QtjkCG768giXzPvW4HqB5/:12832:0:99999:7:::

编辑后

root::12832:0:99999:7:::

如果您在编辑时遇到问题(您真的应该有一天学习 vi),您可以(在制作副本之后)

 echo  "root::12832:0:::::" > /mnt/etc/shadow 

或者,如果您处于单用户模式

 echo  "root::12832:0:::::" > /etc/shadow 

然后在重新启动时修复问题。