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

相关推荐

  • Linux7系统如何启动网络功能?

    在Linux 7系统中,网络功能的正确启用与管理是系统运维的基础操作,Linux 7默认采用NetworkManager作为核心网络管理服务,它支持动态网络配置、有线/无线网络统一管理,并提供了命令行(nmcli)和图形界面(nmtui)两种操作方式,对于需要静态配置或兼容旧版脚本的场景,传统的network服……

    2025年10月4日
    5200
  • 为什么裁剪内核能让系统性能飙升?

    裁剪 Linux 内核是通过移除未使用的代码和模块来优化系统性能、减少资源占用(内存/存储)并提升安全性的高级操作,本文提供专业、可验证的操作指南,所有步骤均基于 Linux 官方文档及社区最佳实践,适合具备基础 Linux 知识的用户,操作前请备份重要数据,性能提升:减少冗余代码,降低内存占用,加快启动速度……

    2025年7月21日
    9800
  • 更新软件源列表是安装前必做吗?

    使用系统包管理器(推荐)包管理器是Linux安装软件最安全高效的方式,自动处理依赖关系和更新,不同发行版命令不同:Debian/Ubuntu系(APT)# 搜索软件(如Firefox)apt search firefox# 安装软件sudo apt install firefox# 卸载软件sudo apt r……

    2025年7月15日
    11300
  • 如何清理arp linux

    Linux中,可使用ip -s neigh flush all命令来清理ARP缓存

    2025年8月13日
    9400
  • linux如何关闭网站

    Linux中关闭网站,可停止相关Web服务,如使用

    2025年8月14日
    8900

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信