一、介绍与准备
前言:任何系统、无论物理机还是虚拟机,重置密码操作都必须要本地进行,无法通过远程处理!
RedHat发行
1.基于RedHat发行版的内容根据How to recover a root password in Red Hat-based Linux systems官网内容实操并编写;
2.基于RedHat 6及之前的系统本文不适用,详情请自行访问CentOS官网:参考重置忘记的 root 用户密码官方提示与技巧。
Debian发行
1.基于Debian发行版的内容根据4.7.4. root 密码安全官网内容整理、实操并编写;
2.其中基于Debian发行版的Ubuntu系统用户可以参照官方忘记密码操作来处理。
二、重置密码步骤
RedHat发行操作
- 重启系统,在引导程序界面,输入
e
进入Grub引导程序脚本编辑界面; - 找到内核版本行:
- 基于EL7内核的系统是以
linux16
开头的一行; - 基于EL8内核的系统是以
linux
开头的一行。
- 基于EL7内核的系统是以
- 在该行末尾添加一句
rd.break
语句; - 接着按Ctrl+X运行已修改的引导程序脚本;
- 系统将引导至“救援模式”以
switch_root:/#
开头的命令行终端; - 以读写模式挂载系统根分区:
mount -o remount,rw /sysroot
; - 进入chroot环境并切至
sysroot
目录以便执行相关命令:chroot /sysroot
; - 执行更改Root密码操作(此时可以修改任意用户密码):
passwd root
; - 为确保SELinux允许修改系统文件,需要在下次重新启动时,向SELinux发信号表明已修改了密码、并允许加载所做修改:
touch /.autorelabel
; - 输入
exit
退出chroot环境,然后输入reboot
重启系统即可。
Debian发行操作
- 同样重启系统,点击Esc或Shift键来停止引导;
- 通过↑或↓按键选择带有
Advanced options
文字的引导菜单并按Enter回车键进入; - 选择到带有
recovery mode
文字的“救援模式”菜单并按e
键进入编辑模式- 注意:部分基于Debian发行版的系统,可直接在当前引导菜单下按
e
键进入引导程序脚本编辑模式,无需选择到特定引导菜单。
- 注意:部分基于Debian发行版的系统,可直接在当前引导菜单下按
- 找到内核版本行,通常为以
linux
开头的一行; - 将
ro
、ro splash quiet
或ro recovery nomodeset
修改为rw init=/bin/bash
- 接着按Ctrl+X或F10运行已修改的引导程序脚本;
- 执行更改Root密码操作(此时可以修改任意用户密码):
passwd root
; - 使系统重启后自动加载所做修改:
touch /.autolabel
- 少数Debian发行版可能无需此步骤,例如Ubuntu系统,不过建议执行一下,以防意外。
- 密码修改完成后输入
reboot
重启系统即可。
三、相关操作总结
编号 | RedHat发行 | Debian发行 | 相关说明 |
---|---|---|---|
1 | —— | Esc或Shift | 停止系统引导 |
2 | e | e | 进入引导程序脚本编辑模式 |
3 | rd.break | rw init=/bin/bash | 修改引导程序运行规则 |
4 | Ctrl+X | Ctrl+X或F10 | 运行修改后的引导程序脚本 |
5 | mount -o remount,rw /sysroot | —— | 以读写模式挂载系统根分区 |
6 | chroot /sysroot | —— | 进入chroot环境并切至sysroot目录 |
7 | passwd root | passwd root | 修改root密码 |
8 | touch /.autorelabel | touch /.autolabel | 使系统允许并在重启后自动加载修改 |
9 | exit | —— | 退出chroot环境 |
10 | reboot | reboot | 重启系统 |