【原创实践】使用 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 运维自动化小技巧,适合新服务器初始化或测试环境搭建。

相关推荐
梦曦i5 小时前
@meng-xi/create-uni-app vs unibest:轻量脚手架与重型框架的定位之争
前端·uni-app
平头哥技术团队5 小时前
Day 10 | 工欲善其事:VS Code 配置与项目归档
android·开发语言·前端·javascript·html·交互
乌恩大侠5 小时前
GH200 新增 NVMe SSD 分区、格式化与挂载完整流程
运维·服务器·前端
tangwangbi5 小时前
Linux 系统配置文件:/etc/profile、~/.bashrc 和 ~/.bash_profile 三者之间的区别与作用
linux·运维·bash
yume_sibai6 小时前
Element Plus 数据展示组件完全指南(15个核心组件)
前端·javascript·vue.js
蜀道山老天师6 小时前
Shell Bash变量与运算符(含条件测试与流程控制)
linux·运维·bash
Mr.朱鹏6 小时前
Linux 服务器 LVM 根分区在线动态扩容
linux·服务器·数据库
qiuhaipeng16 小时前
Claude code 升级后上下文长度变短问题
java·前端·数据库
mengge.cloud6 小时前
存储技术基础小白教程
linux·运维·服务器·wpf·存储
zzz_23686 小时前
个人 AI 记忆如何跨工具复用:用 Markdown、索引和 Skill 搭一个可治理的记忆库
前端·人工智能·react.js·前端框架·agent·agent测评