在Linux系统中,root用户是拥有最高权限的管理员账户,有时我们需要通过命令行修改root密码,例如忘记密码、初始密码未设置或需要定期更换密码以确保系统安全,以下是详细的操作步骤和注意事项,涵盖不同Linux发行版(如CentOS、Ubuntu等)的常见场景。

准备工作
在修改root密码前,确保满足以下条件:
- 系统访问权限:需要拥有系统中的普通用户账户,且该账户具有sudo权限(Ubuntu/Debian系统)或属于wheel组(CentOS/RHEL系统),若无法通过普通用户登录,可能需要进入单用户模式或救援模式(详见后文)。
- 谨慎操作:root密码修改后,需妥善保管新密码,避免泄露,修改前建议记录当前密码(若已知),以防误操作导致无法登录。
- 区分发行版:不同Linux发行版的命令和操作界面可能略有差异,例如Ubuntu默认使用
passwd命令,而CentOS同样适用passwd,但进入单用户模式的步骤可能不同。
常规场景下修改root密码(已知当前密码)
使用普通用户登录并提升权限
- 步骤1:通过普通用户账户登录系统,打开终端(Terminal)。
- 步骤2:输入以下命令切换至root用户或获取sudo权限:
sudo su - # 切换至root用户,需输入当前用户密码
或直接使用sudo执行修改密码命令:
sudo passwd root
执行密码修改命令
- 步骤3:输入
passwd root后,系统会提示输入新密码(两次),注意密码输入时不会显示字符(即无回显),这是正常的安全设计。passwd root New password: # 输入新密码 Retype new password: # 确认新密码 passwd: password updated successfully # 提示修改成功
验证密码
- 步骤4:使用新密码尝试切换至root用户或登录系统,确保修改生效:
su - # 输入新密码后切换成功
忘记root密码时的应急处理(需进入单用户模式)
若忘记root密码且无法通过普通用户获取sudo权限,可通过以下步骤重置密码,以CentOS/RHEL系统为例:
重启系统并进入GRUB菜单
- 步骤1:重启系统,在开机出现GRUB引导界面时,迅速按下
e键进入编辑模式(需在倒计时结束前操作)。
修改内核启动参数
- 步骤2:在内核启动参数行(通常以
linux16或linux开头),找到ro(只读模式)字样,将其修改为rw(读写模式),并在行末添加init=/bin/bash,以单用户模式启动系统。原始行:linux16 /boot/vmlinuz-3.10.0-1160.el7.x86_64 ro root=UUID=xxx crashkernel=auto rhgb quiet 修改后:linux16 /boot/vmlinuz-3.10.0-1160.el7.x86_64 rw root=UUID=xxx init=/bin/bash crashkernel=auto rhgb quiet
挂载文件系统并重置密码
- 步骤3:按
Ctrl+X或F10启动系统,进入bash命令行,此时根文件系统以读写模式挂载,但可能未挂载其他分区,需执行以下命令:mount -o remount,rw / # 重新挂载根分区为读写模式 passwd root # 直接修改root密码 New password: # 输入新密码 Retype new password: # 确认新密码
重启系统
- 步骤4:执行以下命令重启系统,注意需先同步文件系统并重启:
sync # 同步文件系统 exec /sbin/init # 正常重启(推荐方式)
或直接使用
reboot命令(部分系统可能需要强制重启)。
(图片来源网络,侵删)
Ubuntu/Debian系统的单用户模式
Ubuntu系统默认可能不显示GRUB菜单,需通过以下步骤启用:
- 修改
/etc/default/grub文件,将GRUB_HIDDEN_TIMEOUT设为false,然后执行update-grub更新GRUB配置。 - 进入GRUB后选择
Advanced options,找到recovery mode,进入后选择rootshell,执行mount -o remount,rw /和passwd root修改密码。
注意事项与常见问题
- 密码复杂度:Linux系统默认可能要求密码包含一定长度和复杂度(如大小写字母、数字、特殊符号),若提示密码过于简单,可尝试添加复杂字符或忽略规则(临时通过
sudo passwd root或chage命令调整)。 - SELinux影响:CentOS等系统开启SELinux时,单用户模式修改密码后可能因上下文问题导致登录失败,可通过
enforcing=0临时关闭SELinux(在GRUB参数中添加)。 - 虚拟机与物理机:物理机可能需要通过BIOS/UEFI设置禁用Secure Boot才能修改GRUB参数,虚拟机(如VMware、VirtualBox)通常可直接操作。
不同发行版命令对比
| 操作场景 | CentOS/RHEL | Ubuntu/Debian |
|---|---|---|
| 普通用户修改root密码 | sudo passwd root |
sudo passwd root |
| 单用户模式进入GRUB | 开机按e |
开机按Shift或ESC |
| 修改内核参数 | ro改为rw + init=/bin/bash |
同左 |
| 重启命令 | exec /sbin/init |
exec /sbin/init或reboot |
相关问答FAQs
Q1:修改root密码后提示“Authentication token manipulation error”怎么办?
A:该错误通常是由于文件系统权限问题或SELinux导致,可尝试在单用户模式下执行restorecon -Rv /(恢复SELinux上下文)或检查/etc/shadow文件权限是否为600(chmod 600 /etc/shadow),若问题仍存在,可尝试卸载/etc/shadow并重新挂载,或使用pwconv命令同步密码数据库。
Q2:如何避免忘记root密码?有哪些最佳实践?
A:为避免忘记root密码,建议采取以下措施:
- 定期更换密码:通过
chage -M 90 root设置密码有效期(90天),到期前系统会提醒。 - 记录密码:使用密码管理工具(如KeePass、Bitwarden)加密存储密码,并定期备份。
- 限制root登录:通过
/etc/ssh/sshd_config配置PermitRootLogin no,禁止直接SSH登录root,改用普通用户+sudo提权。 - 创建管理员账户:除root外,额外具有sudo权限的普通用户账户,作为日常管理和应急备用。

