root修改服务器其他登录密码,就是使用root权限执行passwd命令为指定用户设置新密码,这是Linux服务器管理中最基础也最常用的操作。
root修改其他用户密码的命令到底是什么
很多刚接触服务器管理的朋友会有个误区,以为root修改密码必须去改某个配置文件,Linux系统提供了一个专门干这事的命令passwd,root用户执行passwd 用户名,系统会提示输入两次新密码,修改即完成,这个命令适用于几乎所有主流Linux发行版,包括CentOS、Ubuntu、Debian、Rocky Linux等。
举个例子,你想把服务器上名为zhangsan的普通用户密码改掉,登录root后输入:
passwd zhangsan
按提示输入新密码并确认,看到passwd: all authentication tokens updated successfully就说明改好了。
root修改其他用户密码的完整操作步骤
第一步:登录服务器并切换至root
如果你已经在root账户下,直接跳过这一步,如果当前是普通用户,使用su -切换到root:
su -
输入root密码后,命令提示符会变成号,代表你有最高权限。
第二步:执行passwd命令修改指定用户密码
passwd 用户名
系统会依次提示:
Changing password for user 用户名.New password:Retype new password:
输入时要留意,终端不会显示任何字符,别以为键盘坏了,两次输入一致后,密码就改好了。
第三步:验证密码是否生效
想确认修改成功,可以切换测试一下:
su - 用户名
输入新密码,能正常登录就说明没问题,退出测试用户用exit。
修改密码失败或忘记root密码时怎么处理
实际操作中,最常见的两个问题:一是修改普通用户密码时报错,二是root自己的密码忘了,这里分别说清楚。
普通用户密码修改失败的常见原因
密码强度不达标,很多系统默认要求密码至少8位,包含大小写字母、数字、特殊字符中的至少三类,你设置

123456这种弱密码,系统会直接拒绝,解决办法是用passwd命令时,先设置一个符合规则的强密码,或者用如下方式强制修改:
echo "新密码" | passwd --stdin 用户名
不过这条命令在Ubuntu上会报错,需要改用chpasswd:
echo "用户名:新密码" | chpasswd
用户不存在或用户被锁定,使用id 用户名检查用户是否存在,用passwd -u 用户名解锁账户。
服务器root密码忘了怎么修改
这是很多运维新手最头疼的场景,如果你是云服务器(简米云、酷番云、华为云等),直接在云控制台选择“重置实例密码”,重启后生效,如果是物理机或VMware虚拟机,需要通过单用户模式重置:
- 重启服务器,在GRUB引导界面按
e进入编辑模式 - 找到以
linux16或linux开头的那一行,在末尾加上rd.break(CentOS/RHEL)或single(Ubuntu老版本) - 按
Ctrl+X或F10引导启动 - 重新挂载根文件系统并修改密码
不同系统版本的具体操作略有差异,建议在测试环境先演练一遍。
批量修改多个用户密码的实用技巧
如果服务器上有几十个账号需要统一改密,一条条执行passwd效率太低,行业共识认为,运维人员应该掌握批量处理的思路。
使用chpasswd批量修改
先准备好一个文本文件,每行格式为用户名:新密码,
zhangsan:Passw0rd!2026
lisi:Passw0rd!2026
wangwu:Passw0rd!2026
然后执行:
chpasswd < users.txt
这条命令会逐行读取并修改,适合一次性处理多个账户。
用脚本配合循环修改
如果你想对特定用户组批量操作,可以用for循环:
for user in $(cat /etc/passwd | awk -F: '$3>=1000 && $3<=60000 {print $1}')
do
echo "$user:NewPass@123" | chpasswd
done
这条脚本会把所有UID在1000到60000之间的普通用户密码统一改成NewPass@123。生产环境慎用

,建议先用echo $user打印哪些用户会被波及。
修改密码后的安全设置建议
密码改完不代表工作结束,还得保证服务器安全,以下几件事建议顺手做掉。
强制用户下次登录时改密码
用chage命令设置密码过期策略:
chage -d 0 用户名
这样用户下次登录时必须先设置新密码,适合给临时账号设置。
查看密码状态与过期时间
passwd -S 用户名
输出结果会显示密码状态(L表示锁定,P表示可用)、最后修改日期、有效期等信息,定期检查有助于发现异常账户。
禁用或删除不需要的账号
服务器上如果存在长期不用的账号,直接用usermod -L 用户名锁定,或者userdel -r 用户名删除(会删除该用户家目录,操作前务必确认)。
root修改其他用户密码时容易踩的坑
用了单引号导致密码带特殊字符出错
在命令行中设置密码时,如果密码包含、、&等特殊字符,直接用双引号包裹可能被shell解析。
echo "abc$123" | passwd --stdin test
$1可能被当作变量替换,正确做法是用单引号包裹:
echo 'abc$123' | passwd --stdin test
或者干脆用交互式的passwd test,输入时就不存在转义问题。
修改了系统账户密码导致服务异常
类似bin、daemon、nobody这类系统账户,一般由服务调用,不建议手动改密码,如果改了,某些服务可能无法正常启动,业内专家指出,修改系统账户密码前应先确认该账户的服务用途。
SSH登录权限变化
改完用户密码后,如果该用户之前能通过SSH登录,现在登不上了,先检查/etc/ssh/sshd_config里的AllowUsers或DenyUsers配置,看是否限制了这个用户,如果是公钥登录的账户,修改密码并不会影响密钥登录逻辑。
密码管理的最佳实践
密码改来改去,最怕记不住或泄露,以下几条建议可以大幅度减少这类问题。
-

密码单独存放
:不要把所有密码写在同一个文档里,建议用KeePass、Bitwarden等密码管理工具,至少也要分机放。 - 定期轮换:云服务器建议每3个月改一次root密码,内部测试服务器可以放宽到半年。
- 禁止弱密码:在
/etc/login.defs中设置PASS_MIN_LEN、PASS_MAX_DAYS等策略,强制所有用户遵守。 - 两步验证:如果用的是云服务商的控制台,开启MFA验证,这样即使密码泄露也不容易被直接登录。
- 使用密钥登录:SSH改用密钥认证后,密码泄露的风险会小很多,把
PasswordAuthentication no写入sshd_config,服务器就只能用密钥登录。
密码修改后重启会丢失吗
root修改服务器其他登录密码是什么”这个问题,有用户会问:改完密码重启后会不会变回去?答案是不会,密码存储在/etc/shadow文件中,修改操作是持久化写入的,重启、关机都不会丢失,除非你用的是云服务器的初始化脚本或者镜像,那需要另行设置。
常见问题解答
passwd命令修改密码时提示“Permission denied”怎么办
这说明当前用户不是root,且没有sudo权限,切换到root或使用sudo passwd 用户名重试,如果sudo也提示无权限,说明当前用户不在sudoers组里,需要先通过控制台重置root密码。
修改密码后其他服务器上的相同用户名密码能否同步
不能,每台服务器的/etc/shadow文件是独立的,修改一台只能影响那一台,如果有多台服务器需要统一密码,建议用Ansible等自动化工具批量执行:
ansible all -m shell -a 'echo "用户名:新密码" | chpasswd'
这样能把同样的密码一次性推送到所有机器,省时省力。
使用云服务器管理后台重置密码和用root命令修改有什么区别
云管理后台重置密码相当于在虚拟机底层强制覆盖root密码,即使你忘了旧密码也能操作,而root命令修改是通过系统内部认证机制更新密码,适用于已经登录或通过SSH连接的情况,两者最终效果一样,但后台重置通常要求重启实例,SSH方式修改则即时生效。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/875855.html


评论列表(3条)
这篇文章的内容非常有价值,我从中学习到了很多新的知识和观点。作者的写作风格简洁明了,却又不失深度,让人读起来很舒服。特别是用户名部分,给了我很多新的思路。感谢分享这么好的内容!
@学生bot259:这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于用户名的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!
这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于用户名的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!