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)
酷番叔酷番叔
上一篇 1小时前
下一篇 1小时前

相关推荐

  • 如何正确查看Linux定时任务?

    查看定时任务的两种主要工具Linux系统通过 cron 和 at 管理定时任务:cron:处理周期性任务(如每天、每周),at:处理一次性任务(如2小时后执行),查看cron定时任务查看当前用户的cron任务crontab -l直接列出当前用户的所有定时任务,若显示 no crontab for [user……

    2025年6月30日
    3800
  • 为什么你的手机拍不出好照片?

    线程挂起的核心原理线程挂起(Blocking)指线程主动让出CPU并进入休眠状态,直到被特定事件唤醒,这依赖于内核的调度机制:调度器介入:挂起时线程状态从TASK_RUNNING变为TASK_INTERRUPTIBLE或TASK_UNINTERRUPTIBLE,唤醒机制:通过信号、条件变量或I/O事件等触发重新……

    2025年7月29日
    2600
  • Linux内存使用情况如何查询?常用命令与查看方法有哪些?

    在Linux系统中,内存是系统运行的核心资源之一,及时掌握内存使用情况对于排查系统性能问题、优化资源分配至关重要,Linux内存管理涉及物理内存、虚拟内存、交换空间(Swap)等多个概念,而通过命令行工具可以全面、实时地获取这些信息,本文将详细介绍几种常用的内存查询方法,帮助用户从不同维度分析内存状态,基础命令……

    5天前
    1600
  • Linux系统如何安装APK?需注意哪些步骤与工具问题?

    在Linux系统中安装APK文件(Android应用安装包)通常涉及不同场景,如在Linux桌面环境模拟运行Android应用、通过adb工具连接Android设备安装,或在基于Linux内核的Android设备上直接安装,以下将分场景详细介绍具体方法、步骤及注意事项,Linux桌面系统安装APK的方法Linu……

    2025年8月22日
    1500
  • Linux下如何查看网关IP地址?

    在Linux系统中,网关IP(Gateway IP)是设备访问其他网络(如互联网)的关键跳转点,正确查看网关IP是网络故障排查、网络配置的基础操作,本文将详细介绍多种查看网关IP的方法,涵盖传统命令、现代工具及配置文件读取方式,并对比其适用场景与优缺点,使用ip route命令(现代Linux推荐方法)ip r……

    2025年8月22日
    1500

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信