在Linux服务器管理中,定期修改密码是保障系统安全的重要措施,无论是忘记密码、怀疑密码泄露,还是遵循安全策略定期更新,掌握正确的密码修改方法都至关重要,以下是详细的Linux服务器密码修改步骤及注意事项,涵盖不同场景和用户类型,确保操作过程安全高效。

准备工作
在修改密码前,需确认以下事项:
- 权限确认:普通用户只能修改自己的密码(需知道当前密码);root用户或通过sudo提权的用户可修改其他用户密码。
- 登录方式:确保能通过SSH控制台或物理终端访问服务器,避免因密码错误导致无法登录。
- 备份重要数据:若修改root密码且无法通过其他方式登录(如救援模式),提前备份关键配置或数据,防止误操作导致数据丢失。
普通用户修改自己的密码
普通用户需使用passwd命令修改自己的密码,操作流程如下:
-
登录服务器
通过SSH或终端登录到Linux系统,输入当前用户名和密码完成登录。 -
执行passwd命令
在命令行输入passwd,按回车键,系统会提示输入当前密码(验证用户身份),然后要求输入新密码两次(确认新密码无误)。
(图片来源网络,侵删)$ passwd Changing password for user your_username. Current password: New password: Retype new password: passwd: all authentication tokens updated successfully.
- 密码复杂度要求:若系统配置了PAM(可插入认证模块),新密码需满足复杂度策略(如长度≥8位,包含大小写字母、数字及特殊字符),否则会提示“BAD PASSWORD”。
- 密码提示:输入密码时不会显示字符(即不显示星号或点),属于正常安全机制。
-
验证密码
修改成功后,使用su - your_username切换用户或重新登录,输入新密码验证是否生效。
root用户修改其他用户密码
root用户或具备sudo权限的用户可修改任意用户的密码,无需知道该用户的当前密码,操作步骤如下:
-
以root身份登录或获取sudo权限
- 若直接是root用户,直接进入终端;
- 若是普通用户,需通过
sudo -i切换到root用户,或使用sudo passwd username命令(无需切换root)。
-
执行passwd命令指定用户
输入passwd 目标用户名,按回车键后系统会要求输入新密码两次(无需输入当前密码)。
(图片来源网络,侵删)# root用户直接执行 $ passwd target_user Changing password for user target_user. New password: Retype new password: passwd: password updated successfully. # 普通用户通过sudo执行 $ sudo passwd target_user [sudo] password for your_username: # 输入当前用户密码 New password: Retype new password: passwd: password updated successfully.
-
验证修改结果
使用su - 目标用户名切换到目标用户,输入新密码登录成功即表示修改生效。
通过单用户模式修改root密码(忘记密码时)
若忘记root密码且无法通过其他方式登录,可通过单用户模式(或救援模式)重置密码,具体步骤因Linux发行版而异:
以CentOS/RHEL为例(使用GRUB引导菜单):
-
重启服务器并进入GRUB菜单
开机时按Esc或Shift键(具体按键根据服务器配置),进入GRUB引导界面。 -
编辑启动参数
选择内核启动项,按e键进入编辑模式,找到以linux16或linux开头的行,在行尾添加rd.break(或single,根据版本调整),按Ctrl+X启动。 -
以读写模式挂载根文件系统
系统会中断到紧急模式,执行以下命令:mount -o remount,rw /sysroot chroot /sysroot
-
修改root密码
执行passwd命令,输入新密码两次,完成后更新SELinux上下文(若启用):passwd New password: Retype new password: touch /.autorelabel # 可选,若SELinux导致登录问题,需重启后重新标记 exit reboot
以Ubuntu/Debian为例(使用GRUB2):
-
重启并进入GRUB菜单
开机时按Esc键,选择高级选项(Advanced options),进入recovery模式。 -
进入root shell
选择“root Drop to root shell prompt”,按回车键。 -
挂载根文件系统并修改密码
mount -o remount,rw / passwd root New password: Retype new password: exit reboot
通过远程SSH修改密码(需当前密码)
若已通过SSH登录服务器,可直接使用passwd命令修改当前用户密码(如前文“普通用户修改”步骤),或通过SSH以root身份修改其他用户密码(如前文“root用户修改”步骤)。
批量修改用户密码(企业场景)
对于需要批量修改多个用户密码的场景(如员工离职交接),可通过以下方式实现:
-
使用chpasswd命令
chpasswd命令可从标准输入读取“用户名:密码”格式的数据并批量更新密码,适合脚本自动化操作。# 创建密码文件(每行格式:用户名:密码) echo "user1:NewPass123!" > /tmp/passwd_list.txt echo "user2:SecurePass456!" >> /tmp/passwd_list.txt # 使用chpasswd批量更新 chpasswd < /tmp/passwd_list.txt # 清理临时文件 rm -f /tmp/passwd_list.txt
- 安全注意:密码文件包含明文,操作后立即删除,避免泄露。
-
使用newusers命令批量创建用户并设置密码
若需同时创建用户并设置密码,可准备格式为username:password:uid:gid:comment:home:shell的文件,通过newusers命令批量导入。
密码修改后的安全建议
- 更新相关服务配置:若密码用于数据库、FTP等服务,需同步修改对应服务的认证配置。
- 检查SSH密钥:若服务器使用SSH密钥登录,确保未泄露私钥,必要时禁用密码登录(修改
/etc/ssh/sshd_config中的PasswordAuthentication no)。 - 记录修改时间:通过
chage命令设置密码有效期,强制用户定期更新密码(如chage -M 90 username,90天后强制修改)。
常见问题与注意事项
| 问题场景 | 解决方案 |
|---|---|
| 提示“Authentication token manipulation error” | 检查文件系统是否为只读模式(执行mount -o remount,rw /),或确认磁盘空间是否不足(df -h)。 |
| 修改密码后仍提示“Permission denied” | 检查密码是否正确(注意大小写),或确认用户账户是否被锁定(执行passwd -S username查看状态,若被锁定需用passwd -u username解锁)。 |
相关问答FAQs
Q1:修改Linux密码时提示“BAD PASSWORD: it is based on a dictionary word”,如何解决?
A:该提示表示新密码过于简单或包含常见字典词汇,需增加密码复杂度,
- 混合大小写字母(如Linux123@);
- 添加数字和特殊符号(如P@ssw0rd!2025);
- 避免使用连续字符(如123、abc)或个人信息(如生日、姓名)。
若确需使用简单密码(如测试环境),可临时修改PAM配置(编辑/etc/pam.d/passwd,注释掉pam_cracklib.so相关行),但生产环境不推荐。
Q2:如何查看Linux用户密码的最后修改时间和有效期?
A:使用chage -l username命令可查看用户密码的详细信息,包括:
- Last password change:最后一次修改密码的时间;
- Password expires:密码过期时间;
- Password inactive:密码过期后账户被锁定前的宽限天数;
- Account expires:账户过期时间。
$ chage -l root Last password change : Oct 20, 2025 Password expires : never Password inactive : never Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7
若需修改密码有效期,可通过
chage命令参数调整,如chage -M 90 root(设置密码90天后过期)。
