批量修改用户密码的命令chpasswd

步骤 1:准备密码文件

  1. 创建密码文件
    创建一个文本文件,每行包含一个用户名和密码,格式用户名:密码。例如:

    vi user_passwords.txt

    文件内容示例:

    user1:Password@123456
    user2:SecurePass67890
    user3:MyP@ssw0rd88888
  2. 验证文件格式

    • 确保文件中无空行或多余字符。
    • 用户名必须是系统中已存在的用户。
    • 密码需符合系统的密码策略(如长度、复杂度要求)。

步骤 2:执行批量修改命令

方法 1:直接从文件读取
  • 使用 chpasswd 命令
    以 root 用户身份运行以下命令:
    chpasswd < user_passwords.txt
    • 说明chpasswd 会逐行读取文件,并更新对应用户的密码。
方法 2:通过管道传递
  1. 单次修改多个用户
    直接通过管道传递用户名和密码对:

    echo "user1:Password@123456" | chpasswd
    echo "user2:SecurePass67890" | chpasswd
  2. 批量修改(推荐)
    将多个用户密码一次性传递

    cat user_passwords.txt | chpasswd

步骤 3:使用加密密码(可选)

如果需要避免明文密码暴露,可以使用加密密码:

  1. 生成加密密码
    使用 opensslmkpasswd 工具生成加密密码

    openssl passwd -1 "YourPassword"  # 生成 SHA-1 加密密码
    mkpasswd -m sha-512 "YourPassword"  # 生成 SHA-512 加密密码
  2. 修改密码文件格式
    在密码文件中使用加密后的密码:

    user1:$1$9E8ZkV2Udew$xKtXgt0eA1B2C3wD4E727vL6gHc5
    user2:$6$rounddw22k0$abc123$dhiudw29
  3. 使用 -e 参数
    执行命令时指定 -e 参数以处理加密密码:

    chpasswd -e < encrypted_passwords.txt

步骤 4:验证修改结果

  1. 检查用户密码状态
    使用 chage -l 用户名passwd -S 用户名 查看密码状态:

    chage -l user1  # 查看 user1 的密码过期信息
    passwd -S user2  # 查看 user2 的密码状态
  2. 手动验证登录
    使用新密码登录测试用户账户,确保修改生效。


注意事项

  • 权限要求

    • 必须以 root 用户或具有 sudo 权限的用户执行 chpasswd
    • 普通用户无权修改其他用户的密码。
  • 安全风险

    • 明文密码文件:确保密码文件权限设置为 600(仅所有者可读写):
      chmod 600 user_passwords.txt
    • 操作后清理:修改完成后立即删除密码文件:
      rm -f user_passwords.txt
  • 密码策略兼容性

    • 如果系统启用了 PAM 模块的密码复杂度检查(如 pam_pwquality),确保新密码符合以下要求:
      • 长度至少 8 位。
      • 包含大小写字母、数字和特殊字符。
      • 不与历史密码重复。
  • 错误处理

    • 如果文件中存在无效用户或格式错误,chpasswd 会静默失败。建议通过以下方式验证:
      grep -v '^$' user_passwords.txt | while IFS=: read user pass; do
        if id "$user" &>/dev/null; then
          echo "$user:$pass" | chpasswd
        else
          echo "User $user does not exist."
        fi
      done

完整示例

# 1. 创建密码文件
cat <<EOF > /mnt/user_passwords.txt
user1:Password@123456
user2:SecurePass67890
user3:MyP@ssw0rd88888
EOF

# 2. 设置文件权限
chmod 600 /mnt/user_passwords.txt

# 3. 批量修改密码
chpasswd < /mnt/user_passwords.txt

# 4. 删除文件
rm -f /mnt/user_passwords.txt
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值