linux7密码忘记了怎么办
linux7密码忘记了怎么办详细介绍
如果在 Linux 7(如 CentOS 7)中忘记了 root 密码,可以通过以下步骤重置。不同方法适用于不同场景,建议优先使用推荐的 systemd 紧急模式:
方法一:使用 systemd 紧急模式(推荐)
- 重启系统并进入 GRUB 菜单
重启后,在启动界面出现 GRUB 菜单时,按下 e 键进入编辑模式。 - 修改内核参数
找到以linux16 /vmlinuz-开头的行,在该行末尾添加rd.break,例如:
plaintextlinux16 /vmlinuz-3.10.0-1160.el7.x86_64 root=/dev/mapper/centos-root ro rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet rd.break按下 Ctrl+X 启动系统。
- 重新挂载根文件系统为可读写
进入紧急模式后,执行以下命令:
bashswitch_root:/switch_root:/
此时提示符变为
sh-4.2#。 - 修改 root 密码
输入以下命令并按提示设置新密码:
bashsh-4.2若系统启用了 SELinux,需执行以下任一操作(二选一):
- 快速方式(推荐):bash
sh-4.2此操作会在重启时自动重新标记文件系统,但耗时较长。
- 手动方式(需额外命令):bash
sh-4.2sh-4.2
此方法可立即生效,但需手动处理 SELinux 标签。
- 快速方式(推荐):bash
- 重启系统
执行以下命令退出并重启:
bashsh-4.2switch_root:/
重启后即可使用新密码登录。
方法二:使用单用户模式(传统方法)
- 重启系统并进入 GRUB 菜单
同样按下 e 键进入编辑模式。 - 修改内核参数
找到以linux16 /vmlinuz-开头的行,将末尾的ro改为rw init=/sysroot/bin/sh,例如:
plaintextlinux16 /vmlinuz-3.10.0-1160.el7.x86_64 root=/dev/mapper/centos-root rw init=/sysroot/bin/sh rhgb quiet按下 Ctrl+X 启动系统。
- 切换根目录并修改密码
进入单用户模式后,执行以下命令:
bashsh-4.2sh-4.2
若启用 SELinux,需创建
.autorelabel文件:
bashsh-4.2最后重启系统:
bashsh-4.2或:
bashsh-4.2sh-4.2
即可使用新密码登录。
注意事项
- SELinux 处理
若未执行touch /.autorelabel或手动修改标签,重启后可能因 SELinux 策略冲突导致系统异常。建议优先使用快速方式。 - LVM 或加密卷
若系统使用 LVM 或加密分区,需在步骤 2 的内核参数中添加对应的卷组信息(如rd.lvm.lv=centos/root),否则可能无法挂载根文件系统。 - GRUB 菜单显示
部分系统默认隐藏 GRUB 菜单,需在启动时按住 Shift 或 Esc 键强制显示。 - 远程服务器
此方法需物理访问服务器或虚拟机控制台。若为云服务器,可通过云平台提供的 “重置密码” 功能操作。
总结
- 推荐方法:使用
rd.break进入紧急模式,流程更符合 CentOS 7 的 systemd 机制。 - 传统方法:使用
init=/sysroot/bin/sh进入单用户模式,适用于习惯旧操作的用户。 - SELinux 处理:务必执行
touch /.autorelabel或手动标签修改,避免系统启动问题。
通过以上步骤,可安全重置 Linux 7 的 root 密码,且不会影响系统数据。