在系统管理领域,“破解”一词通常并非指恶意攻击,而是指在合法权限下,因遗忘密码等原因需要重新获得系统控制权的过程,最常见的就是重置root密码,本文将详细讲解如何在已停止维护的古老系统CentOS 5上,通过单用户模式重置丢失的root管理员密码。
重要声明:CentOS 5已于2017年3月31日结束其生命周期(EOL),不再接收任何安全更新或官方支持,在当今的网络环境中运行CentOS 5存在极大的安全风险,极易受到各种网络攻击,本文内容仅用于学习、怀旧或处理完全隔离的离线遗留环境,强烈建议将任何仍在运行的服务迁移到受支持的现代操作系统,如CentOS Stream、Rocky Linux、AlmaLinux或其他主流发行版。
前提条件
执行此操作的核心前提是您必须拥有对服务器的物理访问权限或通过KVM、iDRAC、iLO等远程控制台获得的直接访问权限,此过程无法通过SSH等远程网络连接完成,因为它需要在系统启动的最初阶段进行干预。
详细操作步骤
整个过程围绕中断GRUB引导加载程序,修改内核启动参数,使系统进入一个无需密码验证的“单用户模式”环境,然后在该环境下修改密码。
第一步:重启系统并中断GRUB引导菜单
重启您的CentOS 5服务器,在系统启动过程中,当屏幕上出现GRUB引导菜单时,通常会显示类似如下的内容:
CentOS (2.6.18-398.el5)
CentOS (2.6.18-371.el5)
您需要立即按下键盘上的任意键(如空格键或方向键),以中断自动倒计时并停留在该菜单界面,如果操作过慢,系统将继续正常启动,您需要再次重启。
第二步:编辑内核启动参数
在GRUB菜单中,使用上下方向键高亮选中您通常启动的内核版本(一般是第一个),按下键盘上的 e
键,进入编辑模式,屏幕会显示几行配置,大致如下:
root (hd0,0)
kernel /vmlinuz-2.6.18-398.el5 ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.18-398.el5.img
请再次使用方向键,将光标移动到以 kernel
开头的那一行,再次按下 e
键,以编辑该行参数。
您会看到该行的完整内容出现在屏幕下方可供编辑,请移动光标到该行的末尾,添加一个空格,然后输入单词 single
。
修改前:kernel /vmlinuz-2.6.18-398.el5 ro root=LABEL=/ rhgb quiet
修改后:kernel /vmlinuz-2.6.18-398.el5 ro root=LABEL=/ rhgb quiet single
输入完毕后,按回车键确认修改,您将返回到之前的编辑界面。
第三步:引导进入单用户模式
回到内核选择界面后,按下 b
键(代表boot),系统将使用刚刚修改过的参数开始引导,由于添加了 single
参数,系统将不会启动完整的图形或多用户服务,而是直接进入一个最小化的、只有root权限的Shell环境。
您将看到一个类似 sh-3.2#
的命令提示符,这表示您已成功进入单用户模式。
第四步:重置root密码
在 sh-3.2#
提示符下,您现在就是root用户,并且可以执行任何管理命令,包括修改密码,输入以下命令:
passwd
或者更明确地指定为root用户:
passwd root
系统会提示您输入新的UNIX密码,输入您想设置的新密码,然后按回车,系统会要求您再次输入以进行确认,出于安全考虑,您输入的密码在屏幕上不会显示任何字符(包括星号)。
Changing password for user root.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
看到 all authentication tokens updated successfully.
的提示,即表示密码修改成功。
第五步:重启系统
密码修改完成后,为了确保所有更改都已写入磁盘并让系统以正常模式重新启动,可以执行以下命令:
sync
reboot -f
sync
命令强制将内存中的缓冲区数据写入硬盘,reboot -f
则强制重启系统,系统重启后,您就可以使用新设置的root密码正常登录了。
操作流程概览表
阶段 | 操作 | 关键命令/按键 | 说明 |
---|---|---|---|
引导中断 | 在GRUB菜单暂停 | 空格键/方向键 | 防止系统自动启动 |
参数编辑 | 编辑内核行 | e -> 选择kernel行 -> e | 进入GRUB编辑模式 |
添加参数 | 在行尾添加 | single | 告诉内核进入单用户模式 |
启动系统 | 使用修改后的参数引导 | b | Boot,启动系统 |
修改密码 | 在单用户Shell中执行 | passwd | 设置新的root密码 |
重启 | 正常重启系统 | sync 和 reboot -f | 保存更改并退出单用户模式 |
重要安全提醒
此方法虽然简单有效,但也揭示了一个基本的安全原则:物理安全是系统安全的最后一道防线,任何人只要能接触到您的服务器物理键盘,就能通过类似方法获得系统的最高控制权,请务必将服务器放置在安全、受控的机房环境中。
相关问答 (FAQs)
问题1:如果我的GRUB菜单设置了密码,无法编辑内核参数怎么办?
解答: 如果GRUB被设置了密码,那么上述方法将无法直接使用,因为在编辑内核参数前需要输入GRUB密码,这是一种增强的安全措施,在这种情况下,您需要使用CentOS 5的安装光盘或USB启动盘进入“救援模式”,在救援模式下,您可以将系统的根文件系统 挂载到一个临时目录(/mnt/sysimage
),然后使用 chroot /mnt/sysimage
命令切换到原系统环境,之后执行 passwd
命令即可修改密码,这比单用户模式复杂一些,但同样有效。
问题2:这个方法适用于CentOS 7、CentOS 8或更新的Linux发行版吗?
解答: 基本原理是相通的,即通过引导进入一个特殊环境来修改密码,但具体实现细节有较大差异,从CentOS 7开始,系统默认使用 systemd
和 GRUB 2
,其引导过程和文件系统管理方式发生了变化,在CentOS 7/8等现代系统上,更常用的方法是在内核参数末尾添加 rd.break
,系统会进入一个临时的RAMFS环境,之后需要执行一系列命令来重新挂载根文件系统为读写模式(mount -o remount,rw /sysroot
),切换到原系统环境(chroot /sysroot
),修改密码(passwd
),并使SELinux上下文生效(touch /.autorelabel
),最后才能重启,不能将CentOS 5的步骤直接套用在新系统上。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复