【云计算学习之路】CentOS7 系统 ROOT 密码重置方法
-
- 一、适用场景与说明
- [二、重置 root 密码详细步骤](#二、重置 root 密码详细步骤)
-
- [1. 重启系统进入 GRUB 菜单](#1. 重启系统进入 GRUB 菜单)
- [2. 编辑 GRUB 启动项](#2. 编辑 GRUB 启动项)
- [3. 修改内核启动参数](#3. 修改内核启动参数)
- [4. 进入单用户模式](#4. 进入单用户模式)
- [5. 切换到系统真实环境](#5. 切换到系统真实环境)
- [6. 修改 root 密码](#6. 修改 root 密码)
- [7. 恢复 SELinux 安全标签(必须执行)](#7. 恢复 SELinux 安全标签(必须执行))
- [8. 重启系统生效](#8. 重启系统生效)
- 三、注意事项
- 四、总结
在服务器运维、云计算学习过程中,时常会遇到忘记 root 密码、人员交接未留存密码、长期未维护导致密码丢失 等情况。本文以 CentOS 7 为例,提供一套完整、可直接操作的 root 密码重置流程,全程无需启动盘,仅在本机重启即可完成。
一、适用场景与说明
- 适用系统:CentOS 7 / RHEL 7
- 适用场景:忘记 root 密码、无法登录系统
- 操作难度:低,按步骤执行即可
- 说明:操作需在服务器本地控制台/虚拟机控制台完成,远程 SSH 无法执行
二、重置 root 密码详细步骤
1. 重启系统进入 GRUB 菜单
执行重启命令:
bash
reboot
系统开机时会出现 GRUB 引导菜单,显示当前内核版本。
2. 编辑 GRUB 启动项
在 GRUB 菜单界面:
- 按 ↑ / ↓ 键停留在当前启动项
- 按 e 进入编辑模式
3. 修改内核启动参数
找到以 linux16 开头的一行,找到其中的:
ro crashkernel=auto ...
将 ro 修改为:
rw init=/sysroot/bin/sh
修改后该行类似:
linux16 /vmlinuz-xxx root=UUID=xxx rw init=/sysroot/bin/sh crashkernel=auto rhgb quiet ...
4. 进入单用户模式
修改完成后,按:
Ctrl + x
系统会直接进入 单用户急救模式 ,出现 :/# 提示符。
5. 切换到系统真实环境
执行 chroot 切换根目录:
bash
chroot /sysroot
执行后提示符变为 sh-4.2# 或 :/#,表示已进入真实系统环境。
6. 修改 root 密码
直接执行 passwd 命令:
bash
passwd root
按提示输入两次新密码:
New password:
Retype new password:
出现以下提示表示修改成功:
passwd: all authentication tokens updated successfully.
7. 恢复 SELinux 安全标签(必须执行)
如果系统开启了 SELinux,必须创建以下文件,否则重启后无法正常登录:
bash
touch /.autorelabel
8. 重启系统生效
bash
exec /sbin/init
或
bash
reboot -f
重启完成后,即可使用新密码登录 root。
三、注意事项
- 修改 GRUB 时,ro 必须改为 rw,否则无法写入系统分区。
init=/sysroot/bin/sh要完整书写,不能遗漏。- 密码建议包含字母+数字+符号,避免过于简单导致提示弱密码。
- 出现
BAD PASSWORD提示仅为警告,两次输入一致即可成功。 - 只要开启 SELinux,就必须执行
touch /.autorelabel,否则重启卡死或登录失败。 - 整个过程在虚拟机控制台/物理机显示器操作,远程 SSH 无法进入单用户模式。
- 执行
chroot /sysroot失败时,检查是否正确修改了rw权限。
四、总结
CentOS 7 重置 root 密码的核心思路:
GRUB 编辑 → 单用户模式 → chroot 切换 → passwd 修改 → SELinux 重标记 → 重启 。
掌握该方法,可快速解决服务器密码丢失问题,是云计算运维必备基础技能。