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如何查看U盘设备路径?

    为什么需要查看U盘位置?挂载/卸载:Linux不会自动挂载U盘,需手动指定位置,格式化/分区:操作前需确认设备路径,避免误选硬盘,故障排查:检查U盘是否被系统识别,查看U盘位置的4种方法使用 lsblk 命令(推荐)原理:列出所有块设备(硬盘、U盘、分区),清晰显示层级关系,步骤:lsblk输出示例:NAME……

    2025年8月4日
    5800
  • 手机如何通过USB或WiFi连接Linux系统?详细步骤与方法?

    手机与Linux系统的连接在日常使用中十分常见,无论是文件传输、远程控制还是数据备份,掌握正确的方法能极大提升效率,以下是几种主流的连接方式及具体操作步骤,涵盖有线、无线及专用工具等多种场景,适用于不同需求的用户,USB有线连接(基础文件传输)USB连接是最直接的方式,适合需要快速传输大文件或无需网络的环境,操……

    2025年9月20日
    6000
  • Linux中如何创建孙进程?

    在Linux系统中,进程创建是操作系统管理的核心功能之一,而创建孙进程本质是通过两次fork()系统调用实现的,fork()是Linux中用于创建新进程的系统调用,它会复制当前进程(父进程)的副本,包括代码段、数据段、堆栈等资源,新创建的进程称为子进程,与父进程几乎完全相同,但拥有独立的PID(进程ID)和PP……

    2025年10月7日
    3200
  • bash脚本为何总报错?

    MOTD 的核心机制Linux通过 PAM(Pluggable Authentication Modules) 控制登录流程,当用户登录时,PAM会触发脚本读取MOTD内容,关键文件如下:静态MOTD:/etc/motd直接修改此文件可显示固定内容(需root权限):sudo nano /etc/motd……

    2025年7月9日
    8200
  • Linux系统如何取消登录密码?操作步骤是怎样的?

    在Linux系统中,“取消密码”通常指让特定用户或操作无需输入密码即可完成,常见于本地登录、sudo提权或SSH远程访问等场景,但需注意,取消密码会显著降低系统安全性,仅建议在完全可控的测试环境中使用,生产环境应优先采用密钥认证等安全方式,以下从不同场景详细说明操作方法及注意事项,本地用户登录密码取消(设置为空……

    2025年9月20日
    5800

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信