凌峰创科服务平台

如何修改linux服务器密码

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

如何修改linux服务器密码-图1
(图片来源网络,侵删)

准备工作

在修改密码前,需确认以下事项:

  1. 权限确认:普通用户只能修改自己的密码(需知道当前密码);root用户或通过sudo提权的用户可修改其他用户密码。
  2. 登录方式:确保能通过SSH控制台或物理终端访问服务器,避免因密码错误导致无法登录。
  3. 备份重要数据:若修改root密码且无法通过其他方式登录(如救援模式),提前备份关键配置或数据,防止误操作导致数据丢失。

普通用户修改自己的密码

普通用户需使用passwd命令修改自己的密码,操作流程如下:

  1. 登录服务器
    通过SSH或终端登录到Linux系统,输入当前用户名和密码完成登录。

  2. 执行passwd命令
    在命令行输入passwd,按回车键,系统会提示输入当前密码(验证用户身份),然后要求输入新密码两次(确认新密码无误)。

    如何修改linux服务器密码-图2
    (图片来源网络,侵删)
    $ passwd
    Changing password for user your_username.
    Current password: 
    New password: 
    Retype new password: 
    passwd: all authentication tokens updated successfully.
    • 密码复杂度要求:若系统配置了PAM(可插入认证模块),新密码需满足复杂度策略(如长度≥8位,包含大小写字母、数字及特殊字符),否则会提示“BAD PASSWORD”。
    • 密码提示:输入密码时不会显示字符(即不显示星号或点),属于正常安全机制。
  3. 验证密码
    修改成功后,使用su - your_username切换用户或重新登录,输入新密码验证是否生效。

root用户修改其他用户密码

root用户或具备sudo权限的用户可修改任意用户的密码,无需知道该用户的当前密码,操作步骤如下:

  1. 以root身份登录或获取sudo权限

    • 若直接是root用户,直接进入终端;
    • 若是普通用户,需通过sudo -i切换到root用户,或使用sudo passwd username命令(无需切换root)。
  2. 执行passwd命令指定用户
    输入passwd 目标用户名,按回车键后系统会要求输入新密码两次(无需输入当前密码)。

    如何修改linux服务器密码-图3
    (图片来源网络,侵删)
    # 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.
  3. 验证修改结果
    使用su - 目标用户名切换到目标用户,输入新密码登录成功即表示修改生效。

通过单用户模式修改root密码(忘记密码时)

若忘记root密码且无法通过其他方式登录,可通过单用户模式(或救援模式)重置密码,具体步骤因Linux发行版而异:

以CentOS/RHEL为例(使用GRUB引导菜单):

  1. 重启服务器并进入GRUB菜单
    开机时按EscShift键(具体按键根据服务器配置),进入GRUB引导界面。

  2. 编辑启动参数
    选择内核启动项,按e键进入编辑模式,找到以linux16linux开头的行,在行尾添加rd.break(或single,根据版本调整),按Ctrl+X启动。

  3. 以读写模式挂载根文件系统
    系统会中断到紧急模式,执行以下命令:

    mount -o remount,rw /sysroot
    chroot /sysroot
  4. 修改root密码
    执行passwd命令,输入新密码两次,完成后更新SELinux上下文(若启用):

    passwd
    New password: 
    Retype new password: 
    touch /.autorelabel  # 可选,若SELinux导致登录问题,需重启后重新标记
    exit
    reboot

以Ubuntu/Debian为例(使用GRUB2):

  1. 重启并进入GRUB菜单
    开机时按Esc键,选择高级选项(Advanced options),进入recovery模式。

  2. 进入root shell
    选择“root Drop to root shell prompt”,按回车键。

  3. 挂载根文件系统并修改密码

    mount -o remount,rw /
    passwd root
    New password: 
    Retype new password: 
    exit
    reboot

通过远程SSH修改密码(需当前密码)

若已通过SSH登录服务器,可直接使用passwd命令修改当前用户密码(如前文“普通用户修改”步骤),或通过SSH以root身份修改其他用户密码(如前文“root用户修改”步骤)。

批量修改用户密码(企业场景)

对于需要批量修改多个用户密码的场景(如员工离职交接),可通过以下方式实现:

  1. 使用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
    • 安全注意:密码文件包含明文,操作后立即删除,避免泄露。
  2. 使用newusers命令批量创建用户并设置密码
    若需同时创建用户并设置密码,可准备格式为username:password:uid:gid:comment:home:shell的文件,通过newusers命令批量导入。

密码修改后的安全建议

  1. 更新相关服务配置:若密码用于数据库、FTP等服务,需同步修改对应服务的认证配置。
  2. 检查SSH密钥:若服务器使用SSH密钥登录,确保未泄露私钥,必要时禁用密码登录(修改/etc/ssh/sshd_config中的PasswordAuthentication no)。
  3. 记录修改时间:通过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天后过期)。

分享:
扫描分享到社交APP
上一篇
下一篇