在系统管理的工作中,忘记 root 密码是一个虽然尴尬但时有发生的问题,特别是对于像 CentOS 6 这样的老版本系统,幸运的是,通过进入单用户模式,我们可以轻松地重置密码,而无需重新安装整个系统,这个过程需要物理访问或具备控制台访问权限(如 KVM、iDRAC 或虚拟机控制台),以下是详细、安全且结构清晰的步骤指南,帮助您恢复对 CentOS 6 服务器的访问权限。
操作准备
在开始之前,请确保您拥有服务器的直接控制台访问权限,这个过程无法通过 SSH 或其他远程连接方式完成,您需要能够在系统启动的瞬间进行按键操作。
第一步:重启系统并进入 GRUB 菜单
重启您的 CentOS 6 服务器,在开机自检(POST)完成后,系统会加载 GRUB 引导加载程序,您会看到一个启动菜单,列出了可用的内核版本,这个界面停留的时间很短,默认可能只有几秒钟。
当看到 GRUB 启动菜单时,立即按下键盘上的 e
键,这将进入内核编辑界面,如果您没有看到菜单,系统可能在超时后直接进入了默认启动项,此时请重启服务器并更早、更果断地按下 e
键。
第二步:编辑内核启动参数
进入编辑界面后,您会看到几行文本,通常以 root
、kernel
和 initrd
开头,我们需要修改的是 kernel
那一行。
- 使用键盘上的方向键,将光标移动到以
kernel
或linux
开头的那一行,这一行很长,包含了许多内核启动参数。 - 在该行中,找到类似
ro
的参数。ro
代表 “read-only”(只读),它指示系统在启动时以只读模式挂载根文件系统,我们需要将其修改为rw
(read-write,读写),以便稍后能修改密码文件。 - 移动光标到该行的最末尾,添加一个空格,然后输入
init=/bin/bash
。
这个参数 init=/bin/bash
是整个操作的核心,它告诉系统在内核加载完成后,不要运行正常的初始化进程(如 /sbin/init
),而是直接运行一个 Bash shell,这样,我们就能获得一个具有 root 权限的命令行环境,且无需输入任何密码。
完成修改后,该行末尾应类似:... rhgb quiet init=/bin/bash
。
第三步:启动并挂载文件系统
参数修改完毕后,按下 Ctrl + X
或 b
键(取决于 GRUB 版本)来使用修改后的参数启动系统。
系统会直接进入一个命令行提示符,通常显示为 sh-4.1#
或类似形式,虽然我们已经是 root 用户,但为了确保万无一失,最好检查一下根文件系统的挂载状态,输入以下命令:
mount | grep "on /"
您应该看到类似 /dev/mapper/vg_centos-lv_root on / type ext4 (rw)
的输出,括号中的 rw
表示根分区已成功挂载为读写模式,如果它显示为 ro
,您需要手动重新挂载:
mount -o remount,rw /
第四步:重置 root 密码
我们可以使用 passwd
命令来重置密码了,直接输入:
passwd
或者明确指定为 root 用户:
passwd root
系统会提示您输入新的 UNIX 密码,并再次确认,在输入密码时,屏幕上不会有任何字符显示,这是正常的安全措施,输入完成后按回车键。
第五步:更新 SELinux 上下文并重启
由于我们直接修改了 /etc/shadow
文件,可能会触发 SELinux 的安全策略,导致重启后依然无法登录,为了防止这种情况,建议执行以下命令来修正安全上下文:
touch /.autorelabel
这个命令会在根目录创建一个空文件,系统在下次启动时会检测到它,并为整个文件系统重新标记 SELinux 上下文,这个过程可能需要几分钟时间,取决于文件数量和磁盘性能。
执行以下命令,将内存中的所有更改写入磁盘,并强制重启系统:
sync
sync
reboot -f
sync
命令执行两次是为了确保数据完整写入。reboot -f
中的 -f
参数是强制重启,因为正常的重启进程并未运行。
系统重启后,您就可以使用新设置的密码登录 root 账户了。
相关问答 (FAQs)
问题1:在启动时按下 e
键后,没有进入 GRUB 编辑界面,而是直接启动了系统,怎么办?
解答: 这通常是因为 GRUB 菜单的等待时间(timeout)被设置为了 0,您可以重启服务器,并在开机画面一出现时就持续、快速地按 e
键,直到成功进入编辑界面,如果依然不行,您可能需要在启动时进入 BIOS/UEFI 设置,查看是否有相关选项可以显示详细的启动信息或启用启动菜单,某些虚拟机平台(如 VMware)可能需要您在启动窗口内点击一下,确保键盘输入被捕获。
问题2:在单用户模式下执行 passwd
命令后,系统提示 “Authentication token manipulation error” 错误,是什么原因?
解答: 这个错误是密码重置失败最常见的提示,根本原因在于根文件系统是以只读(read-only)模式挂载的,导致 passwd
程序无法将新密码写入 /etc/shadow
文件,请务必按照指南中的第三步,使用 mount | grep "on /"
命令检查挂载状态,如果确实是 ro
,请执行 mount -o remount,rw /
命令将其重新挂载为读写模式,然后再尝试运行 passwd
命令即可成功。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复