当前位置: 首页 > news >正文

批量修改用户密码的命令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; doif id "$user" &>/dev/null; thenecho "$user:$pass" | chpasswdelseecho "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
http://www.dtcms.com/a/360674.html

相关文章:

  • FTP - 学习/实践
  • JPEG XS概述
  • 草图大师SketchUp 2025下载安装教程与胚子库插件包安装for SketchUp 2025安装教程
  • 【AI智能体】LLM记账智能体+MCP服务-实现步骤与效果展示
  • 网络流量分析——使用Wireshark进行分析
  • SW - 用装配图的方式组合多个子零件然后转换成为零件,可维护性好
  • DRF快速构建RESTful API指南
  • 告别强化学习?GEPA:用“反思性提示词进化”实现超越的新范式
  • 【机器学习】-torch相关知识01
  • shell 命令拓展二——流程控制
  • springboot项目启动时打印maven打包时间
  • 华秋DFM检查PCB设计缺陷、一键导出Gerber、BOM、坐标文件
  • 平面椭圆转化为三阶Bezier曲线的方法
  • 目标检测算法YOLOv4详解
  • cloudflare 负载均衡器介绍
  • 用 MATLAB 实现遗传算法求解一元函数极值:从代码到实践
  • JS实现默认显示部分文字点击按钮显示全部内容
  • 使用组合子构建抽象语法树
  • 24数学建模国赛C
  • Linux性能调试工具之ftrace
  • 【开题答辩全过程】以 基于Java的城市公交查询系统设计与实现为例,包含答辩的问题和答案
  • 元宇宙与旅游产业:虚实融合的文旅新体验
  • 【代码随想录day 21】 力扣 216.组合总和III
  • 【代码随想录day 22】 力扣 39. 组合总和
  • 2025年跨领域职业发展证书选择指南
  • 设计模式:外观模式(Facade Pattern)
  • [线上问题排查]深度剖析:一条MySQL慢查询的全面优化实战
  • 操作文件 File类
  • Linux网络编程04:网络基础(万字图文解析)
  • Day19_【机器学习—线性回归 (2)】