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

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

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

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


一、实现思路

整体流程如下:

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

二、完整脚本示例

bash 复制代码
#!/bin/bash

# 保存用户名和密码的文件
output_file="user_credentials.txt"

# 创建或清空文件
> "$output_file"

# 循环创建 100 个用户
for i in {1..100}; do
    username="user${i}"

    # 生成随机密码(12 位)
    password=$(openssl rand -base64 12 | tr -d '/+=')

    # 创建用户(-m 自动创建 home 目录)
    sudo useradd -m "$username"

    # 设置用户密码
    echo "$username:$password" | sudo chpasswd

    # 将用户名和密码写入文件
    echo "$username:$password" >> "$output_file"
done

echo "用户创建完成,账号信息已保存到 $output_file"

三、脚本说明

1、 用户名规则

bash 复制代码
username="user${i}"

生成的用户名为:

复制代码
user1
user2
...
user100

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


2、 随机密码生成

bash 复制代码
openssl rand -base64 12 | tr -d '/+='

说明:

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

这样生成的密码:

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

3、 创建用户

bash 复制代码
sudo useradd -m "$username"

参数说明:

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

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

bash 复制代码
echo "$username:$password" | sudo chpasswd

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


5、 保存账号信息

bash 复制代码
echo "$username:$password" >> "$output_file"

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

复制代码
user1:KjS82jds9As
user2:9DJkS8sd2Lm
...

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


四、脚本使用方法

1、 保存脚本

bash 复制代码
vi create_users.sh

粘贴脚本内容并保存。


2、 添加执行权限

bash 复制代码
chmod +x create_users.sh

3、 执行脚本

bash 复制代码
sudo ./create_users.sh

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


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

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

bash 复制代码
openssl passwd -1 "123456"

示例输出:

复制代码
$1$R9E3fH2J$gXGk3L1ZC8mZkYQ5DqGJb/

说明:

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

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


六、安全建议

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

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

  • 🔐 用完后建议删除:

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

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

七、总结

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

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

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

相关推荐
派小心.1 分钟前
网站统计采样数据的误差核对
大数据·服务器·前端·数据库·人工智能·小程序·数据分析
Coisinier21 分钟前
docker命令管理镜像及容器
linux·运维·nginx·docker·容器·操作系统
变与不变80640 分钟前
防抖节流详解
开发语言·前端·javascript
A心有千千结1 小时前
通过 SSH 反向代理让服务器借用本机网络访问 GitHub 的最佳实践
linux·服务器·网络·git·ssh·github
用户72526496629691 小时前
浏览器为什么加载不了超大图片
前端·javascript
fengkai45451 小时前
十三、Zabbix 监控
运维·服务器·zabbix·监控·网络设备
数字新视界1 小时前
机房动环监控助力智能管理
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
酷炫码神1 小时前
Day 2|CSS 盒模型:把昨天的骨架,变成能看的页面
前端·css
书生执笔画浮沉1 小时前
Linux 内核模块为什么不能自己解决兼容性问题?
linux·c·kernel·update·灵感
Amos_Web1 小时前
我做了一个 Chrome 插件,专治“这篇文章我明明看过,但重点去哪了?”
前端·浏览器