当前位置:首页 > Linux > 正文

Linux如何恢复root密码?

进入单用户模式修改root密码,重启系统,在GRUB菜单选择内核行,按’e’编辑,找到linux行,在行尾添加 init=/bin/bashsingle,按Ctrl+X启动,进入命令行后,执行 passwd root设置新密码,最后执行 exec /sbin/initreboot重启。

在Linux系统中,若忘记root密码,可通过以下物理访问系统的方式重置,操作需谨慎,不当步骤可能导致系统损坏,建议先备份数据,以下是两种主流方法:


通过单用户模式重置(适用于大多数发行版)

适用系统:CentOS/RHEL 7+、Ubuntu 16.04+、Debian 9+ 等使用GRUB2引导的系统。

步骤详解:

  1. 重启并进入GRUB菜单
    重启服务器,在启动界面长按 Shift 键(UEFI系统按 Esc 键)唤出GRUB菜单。

  2. 编辑内核启动参数

    • 选择默认启动项(通常为第一项),按 e 进入编辑模式。
    • 找到以 linuxlinux16 开头的行(CentOS)或 linux 行(Ubuntu)。
    • 将光标移至行尾,添加以下参数:
      rw init=/bin/bash

      (示例:原行 linux /boot/vmlinuz... ro quiet → 改为 ... rw init=/bin/bash quiet

  3. 启动单用户模式
    Ctrl+XF10 启动系统,进入bash shell(此时无需密码)。

    Linux如何恢复root密码?  第1张

  4. 挂载文件系统并重置密码

    mount -o remount,rw /        # 重新挂载根目录为可读写
    passwd root                 # 输入两次新密码
    sync                        # 同步数据到磁盘
    exec /sbin/init             # 正常重启系统(或直接 reboot)

使用Live CD/USB重置(适用于无法修改GRUB的场景)

适用场景:GRUB被锁定、系统无法启动或云服务器(需VNC/IPMI控制台)。

操作流程:

  1. 准备Live环境
    下载发行版ISO(如Ubuntu Live CD),制作启动U盘,从该设备启动系统。

  2. 挂载原系统分区

    • 进入Live系统后,打开终端。
    • 使用 lsblkfdisk -l 识别原系统的根分区(如 /dev/sda1)。
    • 挂载分区并访问:
      sudo mkdir /mnt/root
      sudo mount /dev/sda1 /mnt/root  # sda1替换为实际分区
  3. Chroot到原系统

    sudo chroot /mnt/root          # 切换至原系统环境
    passwd root                    # 修改密码
    exit                           # 退出chroot
  4. 卸载并重启

    sudo umount /mnt/root
    reboot

️ 关键注意事项

  1. 安全要求

    • 此操作需物理接触服务器,云服务器需通过控制台操作。
    • 重置后更新所有关联服务的密码(如SSH密钥、数据库账户)。
  2. 系统差异处理

    • Ubuntu 22.04+:若GRUB被密码保护,需在编辑模式前按 p 输入GRUB密码。
    • SELinux/AppArmor:重启后若遇权限问题,执行:
      touch /.autorelabel  # CentOS/RHEL(SELinux)  
      /usr/sbin/aa-status  # Ubuntu(检查AppArmor状态)
  3. 风险规避

    • 操作前对关键数据备份(如 /etc/shadow)。
    • 避免在磁盘满或异常断电时操作,防止文件损坏。

通过单用户模式(90%场景适用)或Live环境可高效重置root密码,定期使用 sudo 机制替代直接root登录,并启用密码管理工具(如KeePassXC)降低遗忘风险,企业环境建议配置LDAP统一认证。

引用说明:本文方法参考Linux官方文档(kernel.org)、Red Hat故障排除指南及Ubuntu Wiki恢复流程,经多版本实测验证可行性,操作需遵守系统所有者授权,禁止未授权访问。

0