服务器root密码并不存在一个明文独立文件里,主流Linux系统把root密码的加密哈希存放在 /etc/shadow 文件的第二个字段,忘记密码时优先用单用户模式或云控制台重置,而不是找原文件。
Linux root密码存储在哪个文件?/etc/shadow 是标准答案
很多人第一次接触Linux服务器,会直觉以为root密码像配置文件一样存在一个 .txt 或 .ini 文件里,实际不是,Linux把密码的安全策略分成了两层。
- /etc/passwd:所有用户可见,但root密码字段只显示一个字母 x。
- /etc/shadow:真正的密码哈希存放处,只有 root 或拥有适当权限的用户才能读取。
- 哈希不等于明文,系统不保存可逆的root明文密码。
用命令看一下就明白:
sudo cat /etc/shadow | grep root
输出里,root 行第二段有的以 $6$ 开头,有的以 $y$ 开头。$6$ 表示 SHA-512 算法,$y$ 表示 yescrypt,哈希加盐后不可逆。
root行结构大致如下:
root:$6$tbHlQmN/:19000:0:99999:7:::
九个字段分别对应账号名、密码哈希、上次修改时间、最小天数、最大天数、警告天数、失效天数、禁用天数、保留字段,第二个字段就是核心。
| 文件 | 权限要求 | 能直接改吗 | |
|---|---|---|---|
| /etc/passwd | 所有用户可读 | 账号信息,密码列为x | 可以改账号信息,不存放哈希 |
| /etc/shadow | 仅root可读 | 密码哈希、密码有效期 | 不建议直接编辑,格式错就锁账号 |
行业共识认为,/etc/shadow 每行九个字段,第二个字段就是密码哈希,两个冒号紧挨着表示该账号无密码,这一点在排查Linux ssh登录问题时会多次遇到。
服务器root密码忘了怎么修改?单用户模式实操步骤
忘记root密码后,服务器没被锁死,还有救,物理服务器和本地虚拟机的通用做法是进入单用户模式。

物理服务器/本地虚拟机进入单用户模式(GRUB2)
以CentOS、Rocky Linux、AlmaLinux为例,步骤如下:
- 重启服务器,在GRUB启动菜单按下 e 编辑当前启动项。
- 找到 linux 或 linuxefi 开头那一行。
- 把行尾的 ro 改成 rw,追加 init=/bin/bash,部分新版系统用 rd.break 更稳妥。
- 按 Ctrl+X 继续启动。
- 进入shell后,如果用了 rd.break,根目录还挂载在 /sysroot,而且是只读。
- 执行以下命令:
mount -o remount,rw /sysroot
chroot /sysroot
passwd root
- 输入两次新密码。
- 如果开启SELinux,执行 touch /.autorelabel,退出后重启:
exit
reboot -f
Debian和Ubuntu类似,在GRUB编辑行末尾加 init=/bin/bash,启动后执行 mount -o remount,rw /,再 passwd root。
CentOS 6或较老RHEL系统,可以在编辑启动项时把 root=UUID=xxx 后的 ro 改成 rw single,或者追加 emergency,也能进入维护模式,物理服务器如果配了RAID卡,进入单用户前通常不需要额外驱动,因为启动阶段已经加载。
使用救援光盘/Live CD挂载原系统
如果连GRUB都进不去,或者启动盘损坏,就用安装ISO启动,选择救援模式,进入后挂载原根分区到 /mnt,chroot /mnt,再执行 passwd root。
- 适用场景:grub密码丢失、磁盘引导异常、单用户模式被禁用。
- 操作本质和单用户模式一样,只是绕过了本地引导器。
云服务器root密码忘了怎么办?控制台重置与VNC场景
云服务器没有物理键盘,进单用户模式麻烦,更常见、更快的方式是直接在云控制台重置密码。
主流云服务器root密码重置入口
简米云、酷番云、华为云的操作路径大同小异:
- 登录云控制台。
-

打开云服务器实例列表。
- 找到目标实例,点击“更多”或“操作”列。
- 选择“密码/密钥”下的“重置密码”。
- 输入新密码,部分厂商要求先关机。
- 重置后重启实例,用新密码登录。
以华为云服务器root密码重置为例,入口在“弹性云服务器”控制台,左侧实例列表勾选目标ECS,操作列点“更多 -> 密码/密钥 -> 重置密码”,如果是关机状态,入口更清晰。
云服务器控制台重置适合不熟悉GRUB操作的新手,物理服务器则更适合单用户模式,如果云实例还绑定密钥登录,可以优先用密钥登录后执行 sudo passwd root,比控制台重置更直接。
云服务器root密码重置收费吗?
多数云厂商将控制台自助重置密码作为免费基础功能,真正产生费用的场景通常不是重置动作本身,而是人工介入或资源占用。
| 重置方式 | 费用情况 |
|---|---|
| 控制台自助重置 | 多数免费 |
| VNC登录后进单用户重置 | 免费,需要一定Linux操作能力 |
| 工单人工协助重置 | 视服务等级,部分收费 |
| 线下机房代操作 | 按次计费,价格差异较大 |
近年来自助重置已经成为云服务器的标准能力,基本不需要额外付费,地域不同不会改变流程,北京、上海、广州的云服务器重置入口步调一致。
直接编辑 /etc/shadow 为什么不是首选?
有些运维教程会说,root密码忘了就编辑 /etc/shadow,把哈希字段清空,这样做确实能让root临时无密码登录,但风险很大。
- 手动修改格式容易多删一个冒号,导致账号无法解析。
- 直接粘贴网上随便找的哈希,可能包含隐藏字符。
- 让root无密码登录后如果忘记重新设置,等于给服务器开了一个大洞。

更安全的做法是用系统自带命令。
- 交互式修改:passwd root
- 非交互批量修改:echo ‘新密码’ | chpasswd
- 有sudo权限的普通用户:sudo passwd root
如果必须手动编辑,先备份:
cp /etc/shadow /etc/shadow.bak
编辑后执行 pwck 检查密码文件完整性,再退出登录测试。
日常管理root密码的四个好习惯
服务器root密码文件位置搞清楚了,日常维护也要跟上。
- root密码不要在所有服务器通用,按业务隔离。
- 云服务器优先开启密钥登录,关闭SSH密码登录。
- 保留一个低权限普通账号,通过sudo执行管理命令。
- 每次修改密码后,在另一终端验证登录,再关闭当前会话。
这些习惯能减少“服务器root密码忘了怎么办”这类问题出现的频率。
服务器root密码是哪个文件相关问题解答
问:/etc/shadow 里的root密码为什么不是明文?
答:/etc/shadow 第二字段保存的是加密哈希,哈希采用带盐算法,攻击者拿到文件也不能直接反推出明文密码,系统登录时只做哈希比对,不需要保存明文。
问:centos root密码修改命令怎么写?
答:root用户登录后执行 passwd root,按提示输入两次新密码,脚本场景可以用 echo ‘新密码’ | passwd –stdin root,该参数在CentOS和部分RHEL系发行版可用。
问:服务器root密码不记得了,能恢复原密码吗?
答:不能恢复原密码,只能重置为新密码,因为系统里只有哈希值,没有可逆的明文记录,任何声称能恢复原密码的服务,本质上都是绕过或重置。
服务器root密码的哈希文件固定在 /etc/shadow,但真正维护安全的是“不乱改、常重置、用密钥、控入口”,忘记密码时,优先走单用户模式或云控制台,比手动翻文件、改文件可靠得多。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/835538.html


评论列表(3条)
读了这篇文章,我深有感触。作者对服务器的理解非常深刻,论述也很有逻辑性。内容既有理论深度,又有实践指导意义,确实是一篇值得细细品味的好文章。希望作者能继续创作更多优秀的作品!
这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于服务器的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!
这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于服务器的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!