Linux忘记root密码怎么办?重置方法有哪些?

忘记Linux系统的root密码是管理员可能遇到的紧急情况,但通过正确的方法可以安全恢复,本文将分场景详细介绍解决步骤,涵盖本地系统、Live介质救援及云服务器场景,并提供注意事项和FAQs。

如何改linux root密码忘了怎么办

本地系统可进入GRUB菜单(常见场景)

当系统能正常启动到GRUB引导菜单时,可通过修改内核参数进入单用户模式或救援模式,直接重置密码,不同发行版的GRUB操作略有差异,需注意区分。

CentOS/RHEL系列(GRUB2引导)

  • 步骤1:重启服务器,在GRUB菜单出现时(通常按EscShift键呼出),选中要启动的内核条目(默认第一个),按e键进入编辑模式。
  • 步骤2:找到以linuxlinux16开头的行(内核加载行),将行尾的ro改为rw,并添加init=/bin/bash参数(表示以bash作为init进程启动)。
    原始行:linux /boot/vmlinuz-3.10.0-1160.el7.x86_64 ro root=UUID=xxx crashkernel=auto rhgb quiet
    修改后:linux /boot/vmlinuz-3.10.0-1160.el7.x86_64 rw root=UUID=xxx init=/bin/bash crashkernel=auto rhgb quiet
  • 步骤3:按Ctrl+XF10启动,系统会进入紧急模式(root shell),此时根文件系统以读写模式挂载(无需手动mount)。
  • 步骤4:执行passwd root命令,输入新密码两次(无回显),完成后执行exec /sbin/initreboot -f重启系统(避免文件系统未卸载导致损坏)。

Ubuntu/Debian系列(GRUB2引导)

  • 步骤1:重启时按住Shift键呼出GRUB菜单,选择高级选项(Advanced options for Ubuntu),选中“recovery mode”(恢复模式)内核条目,按e键编辑。
  • 步骤2:找到以linux开头的行,删除ro quiet splash参数,添加rw init=/bin/bash(或systemd.unit=rescue.target,适用于新版本Ubuntu)。
    原始行:linux /boot/vmlinuz-5.4.0-110-generic root=UUID=xxx ro recovery nomodeset
    修改后:linux /boot/vmlinuz-5.4.0-110-generic root=UUID=xxx rw init=/bin/bash recovery nomodeset
  • 步骤3:按Ctrl+X启动,进入root shell,若提示文件系统只读,执行mount -o remount,rw /重新挂载为读写模式。
  • 步骤4:执行passwd(Ubuntu默认无root密码,需先设置),或passwd root修改密码,完成后执行systemctl reboot重启。

不同发行版GRUB参数修改对比

发行版 内核参数修改位置 关键参数添加 注意事项
CentOS 7/8 linux16行,ro→rw init=/bin/bash 需确认UUID是否正确(通过lsblk -f查看)
Ubuntu 20.04 linux行,删除ro quiet splash rw init=/bin/bash 新版本可用systemd.unit=rescue.target
Debian 11 linux行,ro→rw init=/bin/bash 部分版本需手动挂载/boot分区

无法进入GRUB菜单(系统启动失败或GRUB被保护)

若系统因配置错误无法进入GRUB,或GRUB菜单被隐藏(如云服务器默认不显示),需通过Live CD/USB介质救援。

准备Live介质

  • 下载对应发行版的ISO镜像(如Ubuntu Desktop 22.04 LTS、CentOS 7 Live ISO),使用Ventoy或Rufus制作启动U盘(选择“DD模式”或“Legacy+UEFI”兼容模式)。

救援步骤

  • 步骤1:插入U盘重启,进入BIOS/UEFI设置(通常按F2DelEsc),将启动顺序调整为U盘优先。
  • 步骤2:从Live介质启动,选择“Try Ubuntu”或“Install CentOS”进入试用环境,打开终端。
  • 步骤3:查看系统分区:执行lsblkfdisk -l,识别根分区(通常为/dev/sda2/dev/nvme0n1p2等),若/boot单独分区,需同时挂载。
    示例(假设根分区为/dev/sda2):

    mount /dev/sda2 /mnt  # 挂载根分区
    mount /dev/sda1 /mnt/boot  # 若/boot单独分区,需额外挂载
  • 步骤4:切换到系统环境:执行chroot /mnt,此时终端提示符变为root@hostname:/#,表示已进入原系统环境。
  • 步骤5:修改密码:执行passwd root,输入新密码并确认。
  • 步骤6:更新引导(可选):若修改密码后GRUB配置未更新,需执行:
    • CentOS/RHEL:grub2-mkconfig -o /boot/grub2/grub.cfg
    • Ubuntu/Debian:update-grub
  • 步骤7:退出并重启:执行exit退出chroot,umount -R /mnt卸载分区,reboot移除U盘,用新密码登录。

云服务器场景(阿里云、腾讯云、AWS等)

云服务器通常无法直接访问物理控制台,需通过厂商提供的救援功能或VNC控制台操作。

如何改linux root密码忘了怎么办

阿里云ECS

  • 方法1:控制台重置密码
    登录阿里云ECS控制台,选择目标实例,点击“更多”→“实例与镜像”→“重置密码”,设置新密码并重启实例(需先停止实例,部分系统支持“运行中重置”)。
  • 方法2:VNC控制台进入GRUB
    若重置密码失败,通过VNC控制台登录(需先在实例设置中开启VNC),参照“本地系统GRUB菜单”方法修改内核参数进入单用户模式重置密码。

腾讯云CVM

  • 登录腾讯云CVM控制台,选择实例,点击“登录”→“VNC远程登录”,进入系统后:
    • 若能登录普通用户:执行sudo passwd root修改密码。
    • 若无法登录:重启实例,在VNC界面按Esc进入GRUB,参照CentOS/Ubuntu步骤修改参数。

AWS EC2

  • 使用AWS Systems Manager Session Manager:若实例已安装SSM Agent,可通过控制台“会话管理”启动Session,直接执行passwd root
  • 若无法使用SSM:通过EC2 Rescue for Linux工具(下载至实例或本地)自动重置密码,或使用VNC控制台进入GRUB修改参数。

注意事项

  1. 安全性

    • 修改密码后立即检查/etc/ssh/sshd_config,确保PermitRootLogin no(禁用root直接SSH登录),改用普通用户+sudo提权。
    • 避免使用简单密码(如123456),建议结合大小写字母、数字、特殊字符(如Linux@2023!)。
  2. SELinux与文件系统

    • CentOS/RHEL默认开启SELinux,修改密码后可能因上下文问题导致登录失败,可执行restorecon -Rv /恢复文件安全上下文。
    • 若通过Live介质挂载时提示“device is busy”,执行fuser -km /mnt强制卸载(谨慎操作,可能导致数据丢失)。
  3. 密码管理

    如何改linux root密码忘了怎么办

    • 使用pwgen(安装:apt install pwgen/yum install pwgen)生成强密码,如pwgen -sBcn 16 1(生成16位含大小写、数字的安全密码)。
    • 密码保存到密码管理工具(如Bitwarden、KeePass),避免遗忘。

相关问答FAQs

问题1:修改root密码后登录提示“Authentication failure”怎么办?

解答

  • 原因1:密码输入错误(注意大小写、特殊字符),可尝试在终端输入su -,粘贴密码(避免手误)。
  • 原因2:SELinux强制模式(CentOS/RHEL),执行getenforce检查,若返回Enforcing,临时关闭setenforce 0,再尝试登录,成功后执行restorecon -Rv /修复上下文。
  • 原因3:PAM模块限制,检查/etc/pam.d/passwd,确保未配置minlen(最小长度)或ucredit(大写字母)等限制导致密码被拒绝。

问题2:如何避免再次忘记root密码?

解答

  • 方案1:使用sudo替代root操作,创建普通用户(adduser admin),加入wheel组(usermod -aG wheel admin),配置/etc/sudoersvisudo)允许admin ALL=(ALL) ALL,日常操作通过sudo执行,减少root使用频率。
  • 方案2:启用SSH密钥认证,生成密钥对(ssh-keygen -t rsa),将公钥(~/.ssh/id_rsa.pub)添加到/home/admin/.ssh/authorized_keys,禁用密码登录(PasswordAuthentication no),实现免密登录且无需记忆密码。
  • 方案3:定期自动备份密码,通过Ansible或Shell脚本定期将新密码加密保存至云存储(如阿里云OSS、AWS S3),并设置访问权限,仅管理员可查看。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/27332.html

(0)
酷番叔酷番叔
上一篇 2025年9月21日 06:04
下一篇 2025年9月21日 06:19

相关推荐

  • Linux系统下编译.cu文件的具体步骤是什么?

    在Linux系统中编译.cu文件(NVIDIA CUDA的C++源文件)需要使用NVIDIA提供的CUDA工具链,核心编译器为nvcc,以下是详细步骤和注意事项,涵盖环境准备、基础编译、多文件处理及常用选项,环境准备:安装CUDA Toolkit编译.cu文件的前提是系统已安装CUDA Toolkit,该工具包……

    2025年10月3日
    12600
  • Telnet主要作用是什么?网络管理必知

    在Linux系统中,Telnet是一种历史悠久的网络协议工具,用于通过命令行远程连接其他主机或测试网络服务,注意:Telnet协议本身不加密数据传输,存在安全风险,仅建议用于本地测试或诊断,生产环境务必使用SSH等加密替代方案, 以下是详细操作指南:远程登录(已基本被SSH取代)网络服务诊断:测试端口连通性(如……

    2025年7月1日
    16700
  • Linux当前活动设备如何添加?

    在Linux系统中,”当前活动设备”通常指系统正在使用或已识别的硬件设备,如USB设备、声卡、网络接口、存储设备等,动态添加这些设备并使其成为”当前活动”状态,涉及设备识别、驱动加载、配置激活等多个环节,本文将详细讲解不同类型设备的添加方法,包括基础原理、操作步骤及常见场景处理,Linux设备管理基础:核心概念……

    2025年9月26日
    12500
  • Linux如何安全覆盖文件内容?

    命令行工具覆盖(高效推荐)重定向符号 >原理:将命令输出覆盖到文件(文件不存在则创建),命令示例:echo "新内容" > file.txt # 覆盖为单行文本cat newfile.txt > file.txt # 用另一文件内容覆盖注意:若需清空文件,用 > fi……

    2025年6月13日
    16200
  • Linux虚拟机分区方案怎么选?

    为Linux虚拟机选择分区方案需平衡性能与管理需求,推荐基础方案:根分区(/)占主要空间,单独/boot分区(约1GB),交换分区(swap)按内存大小设置(通常1-2倍内存),数据密集型场景可增加/home或/var独立分区,LVM提供灵活调整空间优势,适合动态需求。

    2025年7月21日
    16700

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信