
passwd命令无参数)sudo passwd username # 非root用户需sudo前缀
执行示例:
sudo passwd webadmin Changing password for user webadmin. New password: [输入时无回显] Retype new password: passwd: all authentication tokens updated successfully.
# 检查密码最后修改时间 sudo chage -l username | grep "Last password change"
| 方法 | 适用场景 | 依赖组件 | 安全等级 |
|---|---|---|---|
| passwd --stdin | 单用户快速设置 | libpam-modules | |
| chpasswd | 批量用户修改 | 核心工具 | |
| openssl+shadow | 紧急恢复场景 | openssl工具链 |
# RHEL/CentOS系 echo "NewPass123!" | sudo passwd --stdin dev_user # Debian/Ubuntu需先安装模块 sudo apt install libpam-modules -y
# 单用户 echo "admin:Admin@2023" | sudo chpasswd # 多用户文件导入 sudo chpasswd < users_passwords.txt
# 安装复杂度模块 sudo apt install libpam-pwquality -y # 配置策略(/etc/security/pwquality.conf) minlen = 12 dcredit = -1 # 至少1位数字 ucredit = -1 # 至少1位大写字母
# 强制下次登录修改密码 sudo passwd -e username # 设置密码有效期 sudo chage -M 90 -m 7 -W 14 username
# 设置LDAP用户密码策略 sudo passwd -x 90 -n 7 -w 14 ldapuser
- name: Secure password rotation
hosts: production
become: yes
vars:
password_rotation:
- { user: 'app1', pass: 'S3cure#2023' }
- { user: 'dbadmin', pass: 'Db@789!Pass' }
tasks:
- name: Update passwords
user:
name: "{{ item.user }}"
password: "{{ item.pass | password_hash('sha512') }}"
update_password: always
loop: "{{ password_rotation }}"
no_log: true # 保护敏感信息# 认证日志实时监控
sudo tail -f /var/log/auth.log | grep -E 'passwd|chpasswd'
# 失败尝试统计
sudo grep "authentication failure" /var/log/auth.log | awk '{print $NF}' | sort | uniq -csudo john --test-users /etc/shadow
| 错误代码 | 根本原因 | 解决方案 |
|---|---|---|
| EPERM | 权限不足 | 检查sudoers配置或切换root |
| EINVAL | 密码不符合复杂度要求 | 调整pwquality.conf参数 |
| EACCES | shadow文件锁冲突 | 删除/etc/.pwd.lock后重试 |
| EIO | 存储空间不足 | 检查df -h并释放空间 |
# 1. 进入单用户模式 systemctl rescue # 2. 重新挂载可写 mount -o remount,rw / # 3. 密码重置 passwd root
注:实际操作前建议在测试环境验证,生产环境应遵循变更管理流程,关键操作建议通过
script命令记录完整会话日志。