一、前言
在日常使用 Linux 系统过程中,经常会遇到需要修改 root 密码或者不慎忘记 root 密码的情况。root 作为系统最高权限用户,密码丢失会导致无法正常管理服务器,本文分两种场景讲解:已知原密码修改 root 密码、忘记密码重置 root 密码,步骤简单易懂,新手也能轻松操作。
二、场景一:已知 root 密码,正常修改密码
如果还记得当前 root 密码,修改操作非常简单,直接使用 passwd 命令即可完成。
操作命令
登录 root 账号后,在终端执行以下命令:
# 两种写法效果一致,单独 passwd 默认修改当前 root 用户密码
passwd
# 也可以明确指定用户 root
passwd root
执行过程演示
[root@localhost ~]# passwd root
更改用户 root 的密码 。
新的 密码: # 输入新密码(界面不显示输入内容)
无效的密码: 密码少于 8 个字符 # 密码复杂度不足会出现该提示,可继续执行
重新输入新的 密码: # 再次确认新密码
passwd:所有的身份验证令牌已经成功更新。
补充说明
1. Linux 输入密码时不会显示字符、不显示星号,属于正常现象,正常输入即可。
2. 若要修改普通用户密码,只需在 passwd 后加上对应用户名,格式:passwd 用户名。
3. 系统默认要求密码长度不少于 8 位,复杂度太低会给出警告,但依旧可以设置成功。
三、场景二:忘记 root 密码,进入单用户模式重置
当彻底遗忘 root 登录密码时,需要通过系统启动项进入单用户模式重置密码,该方法适用于主流 CentOS 7/8、RHEL 等使用 GRUB 引导的 Linux 系统,全程在服务器开机界面操作。
操作完整步骤
步骤 1:进入 GRUB 引导编辑界面
1. 重启 Linux 服务器/虚拟机,系统开机后会出现系统选择界面(默认停留约 5 秒)。
2. 快速按下上下方向键,暂停开机倒计时,选中默认的系统启动项(第一行)。
3. 按下小写字母 e,进入启动项编辑模式。
步骤 2:修改启动参数,进入单用户模式
1. 在编辑界面中,通过上下键找到以 linux16 开头的一行配置。
2. 在该行内容的末尾追加参数:init=/bin/sh。
3. 按下组合键 Ctrl + x,系统会按照修改后的配置启动,最终进入单用户 shell 环境。
步骤 3:重新挂载根目录为读写模式
进入单用户模式后,系统根目录默认是只读状态,无法修改密码,需要先执行挂载命令:
mount -o remount,rw /
命令作用:将根目录 / 重新挂载为读写权限,为修改密码做准备。
注意:原命令中逗号为英文逗号,切勿输入中文符号。
步骤 4:执行命令重置 root 密码
直接执行 passwd 命令修改密码,无需加用户名:
passwd
按照提示连续两次输入新密码,两次密码保持一致即可。
步骤 5:处理 SELinux 安全标签(关键步骤)
如果系统开启了 SELinux,必须执行以下命令,否则重置后的密码无法生效:
touch /.autorelabel
该命令用于创建自动标签文件,让 SELinux 识别新的用户密码权限。
步骤 6:恢复系统正常启动
最后执行命令退出单用户模式,恢复正常系统启动流程:
exec /sbin/init
执行后系统会自动重启并加载完整服务,等待 30 秒左右,即可进入正常登录界面,使用新设置的 root 密码登录。
四、常见问题总结
1. 开机界面倒计时太快,来不及按按键?
重启设备后紧盯屏幕,出现系统选择界面立刻按上下键暂停倒计时即可。
2. 修改密码后依旧无法登录?
大概率是遗漏了 touch /.autorelabel 命令,SELinux 拦截了登录权限,重新走一遍流程补全该步骤。
3. 命令输入报错?
检查符号:所有标点、逗号均为英文符号,区分大小写(Linux 命令严格区分大小写)。
五、总结
1. 已知密码改密码:直接使用 passwd 命令,简单高效。
2. 遗忘密码重置:核心思路是 GRUB编辑启动项 → 进入单用户模式 → 挂载读写根目录 → 改密码 → 处理SELinux → 正常启动。
以上就是 Linux 系统 root 密码修改与重置的全部教程,该方案适配绝大多数主流 Linux 发行版,实操性强,收藏备用哦!