在Linux操作系统中,用户身份验证是系统安全的核心防线,修改密码不仅是日常维护的基本操作,更是应对安全威胁的应急手段。最核心的修改方法是使用 passwd 命令,而在忘记密码或无法登录的情况下,则需要通过引导加载程序(GRUB)进入单用户模式或使用Live CD进行重置,掌握这两种场景下的操作,是Linux系统管理员必须具备的专业技能。

基础操作:使用passwd命令修改密码
对于拥有当前登录用户权限或超级用户权限的管理员来说,passwd 是最直接、最高效的工具,该命令不仅用于修改用户密码,还涉及密码老化策略的管理。
修改当前用户密码
普通用户若想修改自己的登录密码,只需在终端输入 passwd 并回车,系统会提示输入当前密码以验证身份,验证通过后,需输入两次新密码,需要注意的是,Linux系统对密码复杂度有严格要求,通常要求包含大小写字母、数字及特殊符号,且长度不少于8个字符,如果输入的密码过于简单(如“123456”),系统会拒绝修改并提示“BAD PASSWORD: it is too simplistic”,这是基于PAM(Pluggable Authentication Modules)模块的安全策略。
修改其他用户密码(Root权限)
系统管理员(root)可以直接修改任何用户的密码,且无需知道该用户的原密码,操作命令为 passwd username,要修改用户“tom”的密码,只需执行 passwd tom,系统直接提示输入新密码即可,这一特性在用户忘记密码或账户被锁定时非常关键,管理员可以使用 passwd -e username 强制用户在下次登录时必须修改密码,这是一种提升安全性的有效手段。
批量修改密码与自动化管理
在管理大量服务器或用户时,逐个交互式输入密码效率极低,此时可以使用 chpasswd 命令结合管道流进行批量修改,可以通过 echo "username:newpassword" | chpasswd 的格式快速更新密码,在编写Shell脚本进行自动化部署时,这种方法能显著提升运维效率,但出于安全审计考虑,建议在脚本执行完毕后立即清除历史命令记录,避免密码明文泄露。
进阶实战:破解与重置丢失的Root密码
在实际运维场景中,忘记root密码是常见的问题,此时无法通过 passwd 命令操作,必须深入系统引导层进行干预,这一过程体现了Linux系统启动流程的原理,是区分初级运维与高级专家的分水岭。

基于GRUB引导界面的单用户模式重置(CentOS/RHEL 7/8)
对于使用RedHat系列系统的服务器,重启主机并在GRUB启动菜单出现时,迅速按方向键暂停倒计时,选中内核行(通常是以 linux16 或 linux 开头的行),按 e 键进入编辑模式,找到以 ro(Read Only)开头的参数,将其修改为 rw init=/sysroot/bin/sh,这一步将根文件系统挂载为读写模式,并指定初始化进程为Shell,按 Ctrl+x 启动系统后,会进入单用户模式Shell,执行 chroot /sysroot 切换根目录,此时即可直接运行 passwd 修改root密码,修改完成后,务必执行 touch /.autorelabel,这是为了让SELinux在重启时自动重新标记文件上下文,否则系统可能无法正常启动,最后输入 exit 退出chroot环境,reboot 重启系统即可。
基于GRUB引导界面的单用户模式重置(Ubuntu/Debian)
对于Debian系列的发行版,操作略有不同,同样在GRUB界面按 e 编辑启动项,找到 linux 行,在末尾添加 init=/bin/bash,按 F10 启动后,系统会进入Shell界面,此时根文件系统默认是只读的,必须先执行 mount -o remount,rw / 将其挂载为读写模式,随后直接执行 passwd root 修改密码,修改完毕后,为了确保系统正常重启,建议执行 exec /sbin/init 或强制重启,部分新版本Ubuntu可能需要输入 sync 同步缓存数据。
使用Live CD/USB进行物理修复
如果GRUB被加密或引导文件损坏,上述方法将失效,此时需要准备一个Linux安装盘或Live USB,从光盘启动,进入试用系统后,打开终端查找原系统的根分区(通常使用 lsblk 或 fdisk -l 识别),假设原系统根分区为 /dev/sda2,执行 mount /dev/sda2 /mnt 挂载分区,接着使用 chroot /mnt 切换环境,此时原系统已成为当前目录,直接使用 passwd 命令修改密码即可,这种方法虽然繁琐,但适用性最广,几乎能解决所有因忘记密码导致的登录问题。
安全策略与最佳实践
仅仅知道如何修改密码是不够的,专业的系统管理员必须建立完善的密码管理策略。
密码复杂度与过期策略
利用 chage 命令可以精细化管理密码生命周期。chage -M 90 username 设置密码每90天过期一次,强制用户定期更新;chage -W 7 username 设置过期前7天开始提醒用户,结合 /etc/login.defs 配置文件,可以全局定义密码最小长度、最小使用天数等策略,构建符合企业安全基线的防护体系。

避免密码明文传输
在远程修改密码时,严禁使用Telnet等明文传输协议,必须通过SSH加密通道进行操作,对于自动化脚本中出现的密码明文,建议使用SSH密钥认证替代密码认证,从根本上杜绝密码被窃听的风险。
相关问答
Q1:修改Linux密码时提示“Authentication token manipulation error”怎么办?
A:这是一个典型的权限或文件系统错误,请确认是否使用了 sudo 或以root身份运行命令,检查根分区是否已满(使用 df -h 查看),磁盘空间不足会导致密码文件无法写入,检查 /etc/passwd 和 /etc/shadow 文件的权限是否正确,通常应为644和600,且所有者为root,如果是只读文件系统挂载,需要重新挂载为读写模式。
Q2:如何让Linux新创建的用户必须第一次登录时修改密码?
A:可以使用 passwd -e username 命令,该命令会将用户的密码过期时间设置为1970年1月1日,从而强制用户在下次登录时立即修改新密码,这在创建临时账户或移交账户时是非常好的安全习惯。
能帮助您全面掌握Linux密码管理的技巧,如果您在操作过程中遇到任何疑难杂症,欢迎在评论区留言讨论,我们一起解决。

















