当前位置: 首页 > 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.xdnf.cn/news/1411057.html

相关文章:

  • 使用组合子构建抽象语法树
  • vsgCs显示谷歌全球倾斜模型-数据转换
  • 打工人日报#20250831
  • pyinstaller打包后失败问题记录
  • 贝叶斯分类(Bayes Classify)
  • Java面试-微服务(spring cloud篇)
  • 网络:相比于HTTP,HTTPS协议到底安全在哪?
  • 【HarmonyOS】天气预报 UI 的基本实现
  • 基于Echarts+HTML5可视化数据大屏展示-惠民服务平台
  • 一文理清TCP协议的通讯流程
  • 【车载开发系列】CAN与CANFD下篇
  • Linux-驱动积累
  • docker安装tomcat
  • 1.2 操作系统发展历程
  • dify docker compose操作命令指南
  • 【不懂就问】-手机相关学习
  • 内核等待队列以及用户态的类似机制
  • 基于Spring Cloud Sleuth与Zipkin的分布式链路追踪实战指南
  • 机器学习基础-day01-机器学习介绍
  • syn与quote的简单使用——实现debug
  • 萌宝喂养日志-我用AI做喂养记录小程序1-原型设计
  • 中科大少年班记
  • 编程与数学 03-004 数据库系统概论 10_数据库的实施
  • 【GaussDB】排查应用高可用切换出现数据库整体卡顿及报错自治事务无法创建的问题
  • 基于JavaScript的智能合约平台(Agoric)
  • join怎么用
  • Spring Boot单体项目整合Nacos
  • STAR法则
  • C/C++ 高阶数据结构 —— 二叉搜索树(二叉排序树)
  • 【Linux】系统部分——ELF文件格式与动态库加载