news 2026/3/2 0:04:00

【原创实践】使用 shell 脚本批量创建 Linux 用户并生成随机密码

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【原创实践】使用 shell 脚本批量创建 Linux 用户并生成随机密码

在日常 Linux 运维或测试环境中,经常会遇到需要批量创建用户并设置密码的场景,比如:

  • 测试多用户登录
  • 教学或实验环境初始化
  • 内部系统批量账号准备

手动逐个创建不仅效率低,而且容易出错。本文介绍一种使用 Bash 脚本 + Linux 命令批量创建 100 个用户,并将用户名和密码保存到文本文件中的方法。


一、实现思路

整体流程如下:

  1. 使用for循环生成用户列表(user1 ~ user100)
  2. 通过openssl生成随机密码
  3. 使用useradd创建用户
  4. 使用chpasswd批量设置密码
  5. 将用户名和密码保存到.txt文件中,方便后续分发或查看

二、完整脚本示例

#!/bin/bash# 保存用户名和密码的文件output_file="user_credentials.txt"# 创建或清空文件>"$output_file"# 循环创建 100 个用户foriin{1..100};dousername="user${i}"# 生成随机密码(12 位)password=$(openssl rand -base6412|tr-d'/+=')# 创建用户(-m 自动创建 home 目录)sudouseradd-m"$username"# 设置用户密码echo"$username:$password"|sudochpasswd# 将用户名和密码写入文件echo"$username:$password">>"$output_file"doneecho"用户创建完成,账号信息已保存到$output_file"

三、脚本说明

1、 用户名规则

username="user${i}"

生成的用户名为:

user1 user2 ... user100

你可以根据需要修改为testuser${i}dev${i}等。


2、 随机密码生成

openssl rand -base6412|tr-d'/+='

说明:

  • openssl rand -base64 12:生成 12 字节随机字符串
  • tr -d '/+=':去掉可能导致输入问题的特殊字符

这样生成的密码:

  • 随机性强
  • 适合测试 / 内部使用

3、 创建用户

sudouseradd-m"$username"

参数说明:

  • -m:自动创建/home/username目录
  • 需要root 权限

4、 设置密码(推荐方式)

echo"$username:$password"|sudochpasswd

相比passwd交互式方式,chpasswd非常适合脚本自动化。


5、 保存账号信息

echo"$username:$password">>"$output_file"

最终生成的user_credentials.txt内容类似:

user1:KjS82jds9As user2:9DJkS8sd2Lm ...

⚠️注意:该文件包含明文密码,请妥善保管或仅用于测试环境。


四、脚本使用方法

1、 保存脚本

vicreate_users.sh

粘贴脚本内容并保存。


2、 添加执行权限

chmod+x create_users.sh

3、 执行脚本

sudo./create_users.sh

必须使用sudo或 root 用户运行。


五、补充:使用 openssl 生成加密密码

如果你只想生成加密后的密码字符串(例如用于/etc/shadow或配置文件),可以使用:

opensslpasswd-1"123456"

示例输出:

$1$R9E3fH2J$gXGk3L1ZC8mZkYQ5DqGJb/

说明:

  • -1:使用MD5-crypt
  • "123456":原始明文密码

📌 实际脚本中更推荐使用chpasswd,系统会自动选择合适的加密算法。


六、安全建议

  • 仅在测试或内部环境使用明文密码文件

  • ❌ 不要在生产环境长期保存明文密码

  • 🔐 用完后建议删除:

    shred -u user_credentials.txt
  • 👥 如果是服务器环境,建议结合:

    • SSH key 登录
    • 强制首次登录修改密码

七、总结

通过 Bash 脚本 + Linux 原生命令,你可以:

  • 快速批量创建用户
  • 自动生成安全随机密码
  • 方便地导出账号信息

这是一个非常实用的Linux 运维自动化小技巧,适合新服务器初始化或测试环境搭建。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/28 6:56:41

33、服务性能优化技术全解析

服务性能优化技术全解析 1. 服务数据签名与配置优化 1.1 数据签名确保完整性 以 Standard Mold 的 Catalog 服务为例,该服务传输的数据既不敏感也不机密,所以在响应服务请求时,从业务需求角度看无需加密目录数据。不过,为保证目录数据准确,架构师认为无需加密,但决定对…

作者头像 李华
网站建设 2026/2/28 11:42:32

Vuls并发处理优化:Goroutine调度与并行扫描技术解析

Vuls并发处理优化:Goroutine调度与并行扫描技术解析 【免费下载链接】vuls Agent-less vulnerability scanner for Linux, FreeBSD, Container, WordPress, Programming language libraries, Network devices 项目地址: https://gitcode.com/gh_mirrors/vu/vuls …

作者头像 李华
网站建设 2026/2/23 8:10:36

如何用TensorFlow模型库实现零代码AI应用?

当你面对海量数据却不知如何构建深度学习模型时,是否曾想过:有没有一种方法能让我像搭积木一样快速创建AI应用?今天我们就来探索TensorFlow模型库这个"AI工具箱",看看如何在不写代码的情况下实现专业级模型部署。 【免费…

作者头像 李华
网站建设 2026/2/28 14:26:46

终极指南:用Keil Assistant在VS Code中高效开发ARM项目

终极指南:用Keil Assistant在VS Code中高效开发ARM项目 【免费下载链接】keil-assistant 项目地址: https://gitcode.com/gh_mirrors/ke/keil-assistant 作为嵌入式开发者的你,是否曾因Keil uVision的笨重界面而烦恼?现在&#xff0c…

作者头像 李华
网站建设 2026/2/26 14:07:15

Qwen2-VL-2B-Instruct:如何用20亿参数重新定义多模态AI边界?

Qwen2-VL-2B-Instruct:如何用20亿参数重新定义多模态AI边界? 【免费下载链接】Qwen2-VL-2B-Instruct 项目地址: https://ai.gitcode.com/hf_mirrors/Qwen/Qwen2-VL-2B-Instruct 你是否曾为传统大模型的资源消耗而苦恼?是否在视觉理解…

作者头像 李华
网站建设 2026/2/28 4:13:34

破局之道:软件测试流程创新的五大战略支点

在数字化转型浪潮席卷各行各业的当下,软件质量已成为企业竞争力的核心要素。传统的瀑布模型测试流程日益暴露出响应迟缓、覆盖率不足、成本高昂等痛点。根据Gartner最新研究报告,到2026年,采用AI驱动测试策略的企业将减少40%的生产环境缺陷逃…

作者头像 李华