> 技术文档 > CentOS虚拟机忘记root密码?快速安全重置全流程详解_centos 重置root密码

CentOS虚拟机忘记root密码?快速安全重置全流程详解_centos 重置root密码


CentOS虚拟机忘记root密码?快速安全重置全流程详解

  • 一、操作原理图解
  • 二、详细操作步骤
    • 1. 进入GRUB编辑模式
    • 2. 修改启动参数
    • 3. 进入单用户模式Shell
    • 4. 挂载系统并重置密码
    • 5. SELinux重标记(重要)
    • 6. 安全退出并重启
    • 7. 使用新密码登录
  • 三、注意事项与技巧
  • 四、常见问题解答

在本地使用虚拟机进行测试时,长时间不登录很容易忘记密码。本文将详细介绍如何通过GRUB引导参数修改,安全重置CentOS虚拟机的root密码。本方法适用于CentOS 7/8/9及兼容系统。


一、操作原理图解

#mermaid-svg-T1GMvmi7XdHA7LJ4 {font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-T1GMvmi7XdHA7LJ4 .error-icon{fill:#552222;}#mermaid-svg-T1GMvmi7XdHA7LJ4 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-T1GMvmi7XdHA7LJ4 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-T1GMvmi7XdHA7LJ4 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-T1GMvmi7XdHA7LJ4 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-T1GMvmi7XdHA7LJ4 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-T1GMvmi7XdHA7LJ4 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-T1GMvmi7XdHA7LJ4 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-T1GMvmi7XdHA7LJ4 .marker.cross{stroke:#333333;}#mermaid-svg-T1GMvmi7XdHA7LJ4 svg{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-T1GMvmi7XdHA7LJ4 .label{font-family:\"trebuchet ms\",verdana,arial,sans-serif;color:#333;}#mermaid-svg-T1GMvmi7XdHA7LJ4 .cluster-label text{fill:#333;}#mermaid-svg-T1GMvmi7XdHA7LJ4 .cluster-label span{color:#333;}#mermaid-svg-T1GMvmi7XdHA7LJ4 .label text,#mermaid-svg-T1GMvmi7XdHA7LJ4 span{fill:#333;color:#333;}#mermaid-svg-T1GMvmi7XdHA7LJ4 .node rect,#mermaid-svg-T1GMvmi7XdHA7LJ4 .node circle,#mermaid-svg-T1GMvmi7XdHA7LJ4 .node ellipse,#mermaid-svg-T1GMvmi7XdHA7LJ4 .node polygon,#mermaid-svg-T1GMvmi7XdHA7LJ4 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-T1GMvmi7XdHA7LJ4 .node .label{text-align:center;}#mermaid-svg-T1GMvmi7XdHA7LJ4 .node.clickable{cursor:pointer;}#mermaid-svg-T1GMvmi7XdHA7LJ4 .arrowheadPath{fill:#333333;}#mermaid-svg-T1GMvmi7XdHA7LJ4 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-T1GMvmi7XdHA7LJ4 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-T1GMvmi7XdHA7LJ4 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-T1GMvmi7XdHA7LJ4 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-T1GMvmi7XdHA7LJ4 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-T1GMvmi7XdHA7LJ4 .cluster text{fill:#333;}#mermaid-svg-T1GMvmi7XdHA7LJ4 .cluster span{color:#333;}#mermaid-svg-T1GMvmi7XdHA7LJ4 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-T1GMvmi7XdHA7LJ4 :root{--mermaid-font-family:\"trebuchet ms\",verdana,arial,sans-serif;} 启动虚拟机 开机GRUB界面快速按E 编辑GRUB启动参数 将ro改为rw, 添加init=/sysroot/bin/sh Ctrl+X启动进入单用户模式Shell 执行 chroot /sysroot 执行 passwd root 重置密码 执行 touch /.autorelabel 执行 exit 退出 chroot 执行 reboot 重启系统 使用新密码登录系统


二、详细操作步骤

1. 进入GRUB编辑模式

  • 启动虚拟机时,在CentOS启动Logo出现前快速按 E 键进入编辑。

  • 如果是UEFI启动,先按 ESC 键进入GRUB菜单,再选择内核项后按 E

    CentOS虚拟机忘记root密码?快速安全重置全流程详解_centos 重置root密码

  • 进入编辑模式
    CentOS虚拟机忘记root密码?快速安全重置全流程详解_centos 重置root密码

2. 修改启动参数

  • 定位到以 linux16(CentOS7)或 linux(CentOS8/9)开头的那行。
  • ro(只读)改为 rw(读写)。
  • 在行尾追加 init=/sysroot/bin/sh
  • 注意各参数间保持空格分隔。

CentOS虚拟机忘记root密码?快速安全重置全流程详解_centos 重置root密码

CentOS虚拟机忘记root密码?快速安全重置全流程详解_centos 重置root密码


3. 进入单用户模式Shell

  • Ctrl+XF10 启动修改后的引导项。
  • 系统进入临时root shell,提示符通常为 :/#

CentOS虚拟机忘记root密码?快速安全重置全流程详解_centos 重置root密码


4. 挂载系统并重置密码

# 重新挂载根文件系统为读写mount -o remount,rw /# 进入系统根目录环境chroot /sysroot# 设置环境变量,避免乱码LANG=en# 修改root密码,输入两遍新密码passwd root

看到 passwd: all authentication tokens updated successfully. 表示密码重置成功。

CentOS虚拟机忘记root密码?快速安全重置全流程详解_centos 重置root密码


5. SELinux重标记(重要)

CentOS默认启用SELinux,修改密码后需重标记文件系统,避免登录失败。

touch /.autorelabel

查看SELinux状态(可选)

sestatus

若显示 disabled,则可跳过上步。

CentOS虚拟机忘记root密码?快速安全重置全流程详解_centos 重置root密码


6. 安全退出并重启

# 退出chroot环境exit# 强制重启系统,触发SELinux重标记reboot -f

系统重启过程中可能耗时较长,请耐心等待。

CentOS虚拟机忘记root密码?快速安全重置全流程详解_centos 重置root密码


7. 使用新密码登录

重启完成后,使用刚设置的密码登录系统即可。

CentOS虚拟机忘记root密码?快速安全重置全流程详解_centos 重置root密码


三、注意事项与技巧

  • SELinux重标记问题:
    若忘记执行 touch /.autorelabel,可能导致系统登录失败。重启进入GRUB编辑,追加 enforcing=0 以临时禁用SELinux。

  • 调整GRUB超时时间,方便操作:

    编辑 /etc/default/grub,修改:

    GRUB_TIMEOUT=5GRUB_DISABLE_SUBMENU=true

    保存后执行:

    grub2-mkconfig -o /boot/grub2/grub.cfg
  • 重置其他用户密码:

    chroot /sysrootpasswd username
  • 文件系统只读问题:

    如果遇到无法写入,执行:

    mount -o remount,rw /sysroote2fsck -f /dev/mapper/centos-root

    根据实际设备名调整。


四、常见问题解答

问题 解决方案 GRUB界面按E无反应 检查虚拟机EFI设置,尝试开启/关闭EFI或从虚拟机管理界面重启到固件菜单。 密码重置后仍无法登录 进入单用户模式时追加 enforcing=0 参数禁用SELinux,检查日志:journalctl -p 3 -xb 文件系统只读无法修改 使用 mount -o remount,rw /sysroot 强制读写,必要时检查磁盘健康。