CentOS 7 忘记 root 密码?三步教你轻松重置!

CentOS 7 忘记 root 密码?别慌,三步搞定!

相信不少Linux管理员都有过忘记root密码的经历,尤其是在测试环境或者许久未登录的服务器上。别担心,CentOS 7 提供了多种恢复密码的方式,最简单的方法就是通过单用户模式(Single User Mode)进行重置。本文将手把手教你如何操作,哪怕你是新手也能轻松上手。

准备工作

  • 一台安装了 CentOS 7 的物理机或虚拟机(本文以虚拟机为例)。
  • 拥有物理访问权限(即能直接操作服务器或通过远程控制卡)。
  • 耐心和细心,因为操作涉及系统引导修改。

方法一:通过 GRUB 引导进入单用户模式(推荐)

这是最常用的方法,不需要U盘或光盘,只需在开机时修改GRUB参数。

  1. 重启系统,在GRUB引导界面出现时(通常是开机后第一个界面),按下键盘上的 e 键进入编辑模式。
  2. 找到以 linux16 或 linux 开头的行(通常是倒数第二行),在该行末尾添加 rd.break 或 single 参数。建议添加 rd.break,因为它会进入紧急模式,然后你可以挂载文件系统并修改密码。
  3. 按 Ctrl+X 或 F10 启动进入紧急模式。
  4. 此时系统会挂载根文件系统为只读。执行以下命令重新挂载为读写:
    mount -o remount,rw /sysroot
  5. 切换到实际根目录:chroot /sysroot
  6. 使用 passwd 命令重置 root 密码:
    passwd root
    输入新密码并确认。
  7. 如果 SELinux 处于启用状态,建议创建隐藏文件以重新标记文件系统:
    touch /.autorelabel
  8. 退出 chroot 并重启:
    exit
    reboot

重启后即可使用新密码登录 root。注意:如果系统启用了 Secure Boot,可能需要禁用或使用其他方法。

方法二:使用系统安装光盘/DVD 进入救援模式

如果没有 GRUB 菜单(比如UEFI问题),可以使用CentOS安装光盘启动进入救援模式。

  1. 插入 CentOS 7 安装光盘或启动U盘,从该介质启动。
  2. 在安装界面选择 Troubleshooting -> Rescue a CentOS system。
  3. 按提示选择语言和键盘布局,然后选择 1 继续。
  4. 系统会尝试挂载现有Linux安装,完成后会进入命令行(shell)。
  5. 执行 chroot /mnt/sysimage 切换到系统的根目录。
  6. 使用 passwd root 重置密码。
  7. 如果 SELinux 开启,执行 touch /.autorelabel。
  8. 输入 exit 退出 chroot,然后 reboot 重启。

常见问题与提示

  • 如果在单用户模式下无法挂载 /sysroot,可能需要使用 mount -o rw,remount /sysroot。
  • 部分系统可能使用了 LVM 或加密分区,需要额外挂载步骤,但基本思路一致。
  • 重置密码后,建议检查 /etc/shadow 文件的权限,确保密码正确生效。
  • 如果因为密码丢失而无法 sudo,此方法同样适用。

总之,忘记root密码不是世界末日,只要你能物理接触机器,就能恢复访问。建议大家在重置后立即记录新密码,或者配置SSH密钥登录,避免再次遗忘。希望本文能帮你解决燃眉之急!