服务器CentOS 6登录密码忘了,如何破解才能不重装系统?

在系统管理的工作中,忘记 root 密码是一个虽然尴尬但时有发生的问题,特别是对于像 CentOS 6 这样的老版本系统,幸运的是,通过进入单用户模式,我们可以轻松地重置密码,而无需重新安装整个系统,这个过程需要物理访问或具备控制台访问权限(如 KVM、iDRAC 或虚拟机控制台),以下是详细、安全且结构清晰的步骤指南,帮助您恢复对 CentOS 6 服务器的访问权限。

服务器CentOS 6登录密码忘了,如何破解才能不重装系统?

操作准备

在开始之前,请确保您拥有服务器的直接控制台访问权限,这个过程无法通过 SSH 或其他远程连接方式完成,您需要能够在系统启动的瞬间进行按键操作。

第一步:重启系统并进入 GRUB 菜单

重启您的 CentOS 6 服务器,在开机自检(POST)完成后,系统会加载 GRUB 引导加载程序,您会看到一个启动菜单,列出了可用的内核版本,这个界面停留的时间很短,默认可能只有几秒钟。

当看到 GRUB 启动菜单时,立即按下键盘上的 e 键,这将进入内核编辑界面,如果您没有看到菜单,系统可能在超时后直接进入了默认启动项,此时请重启服务器并更早、更果断地按下 e 键。

第二步:编辑内核启动参数

进入编辑界面后,您会看到几行文本,通常以 rootkernelinitrd 开头,我们需要修改的是 kernel 那一行。

  1. 使用键盘上的方向键,将光标移动到以 kernellinux 开头的那一行,这一行很长,包含了许多内核启动参数。
  2. 在该行中,找到类似 ro 的参数。ro 代表 “read-only”(只读),它指示系统在启动时以只读模式挂载根文件系统,我们需要将其修改为 rw(read-write,读写),以便稍后能修改密码文件。
  3. 移动光标到该行的最末尾,添加一个空格,然后输入 init=/bin/bash

这个参数 init=/bin/bash 是整个操作的核心,它告诉系统在内核加载完成后,不要运行正常的初始化进程(如 /sbin/init),而是直接运行一个 Bash shell,这样,我们就能获得一个具有 root 权限的命令行环境,且无需输入任何密码。

完成修改后,该行末尾应类似:... rhgb quiet init=/bin/bash

第三步:启动并挂载文件系统

参数修改完毕后,按下 Ctrl + Xb 键(取决于 GRUB 版本)来使用修改后的参数启动系统。

系统会直接进入一个命令行提示符,通常显示为 sh-4.1# 或类似形式,虽然我们已经是 root 用户,但为了确保万无一失,最好检查一下根文件系统的挂载状态,输入以下命令:

服务器CentOS 6登录密码忘了,如何破解才能不重装系统?

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 参数是强制重启,因为正常的重启进程并未运行。

服务器CentOS 6登录密码忘了,如何破解才能不重装系统?

系统重启后,您就可以使用新设置的密码登录 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 命令即可成功。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-09 00:28
下一篇 2025-10-09 00:32

相关推荐

  • flutter可以用 mysql数据库_使用Flutter构建

    Flutter可以使用MySQL数据库。要在Flutter中连接MySQL,您需要使用第三方库,如mysql1或moor。这些库允许您在Flutter应用程序中执行SQL查询和操作数据。

    2024-07-05
    004
  • CentOS7安装R语言时遇到依赖问题怎么办?

    在数据科学、统计分析和机器学习领域,R 语言凭借其强大的社区支持和丰富的包生态系统,占据了举足轻重的地位,CentOS 7 则以其稳定性和可靠性,成为许多服务器和企业环境的首选操作系统,将这两者结合,构建一个强大且稳定的数据分析平台,是许多开发者和数据科学家的常见需求,本文将详细介绍如何在 CentOS 7 系……

    2025-10-02
    001
  • 老系统CentOS6如何通过pyenv安装新版Python?

    在信息技术领域,尤其是在企业环境中,维护老旧系统是一项常见且充满挑战的任务,CentOS 6,作为曾经非常稳定和流行的服务器操作系统,至今仍在许多关键业务中服役,其默认搭载的Python 2.6版本已远远不能满足现代软件开发的需求,为了在不破坏系统稳定性的前提下使用Python 3.x等新版本,pyenv成为了……

    2025-10-04
    003
  • 分布式数据库每个数据库_标签

    分布式数据库是一种通过网络连接的、在多个数据库服务器上分布数据和查询负载的系统,每个数据库节点可以独立处理请求并与其他节点协调以提供一致的数据视图。

    2024-07-20
    0023

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

QQ-14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信