可使用Shell脚本批量添加用户并设初始密码:先通过useradd创建用户,再用chpasswd批量设置密码并强制首次修改。需准备严格权限的users.txt文件,每行“用户名:密码”,适配不同发行版密码加密差异。

在Linux系统中批量添加用户并设置初始密码,可以通过Shell脚本结合useradd、chpasswd和passwd等命令高效完成。关键在于避免交互式输入、确保密码安全可见性可控,并适配不同发行版(如CentOS/RHEL与Ubuntu/Debian对密码加密方式的细微差异)。
准备用户信息文件
创建一个纯文本文件(如users.txt),每行包含用户名和初始密码,用冒号分隔:
bob:Secur3P@ss
charlie:MyL1nuxPwd
确保该文件权限严格(如chmod 600 users.txt),防止密码泄露。
使用chpasswd批量设置密码(推荐)
chpasswd支持从标准输入或文件批量更新密码,且自动处理密码加密,无需额外调用openssl或mkpasswd:
- 先批量建用户(不设密码):
while IFS=: read -r user pass; do useradd -m -s /bin/bash "$user"; done - 再批量设密码:
chpasswd - 可选:强制首次登录修改密码:
while IFS=: read -r user pass; do passwd -e "$user"; done
处理密码过期与账户状态
为增强安全性,建议新用户首次登录即重置密码,并限制账户有效期(如30天):
- 设置密码立即过期:
passwd -e username - 锁定账户直到管理员启用:
usermod -L username(后续用usermod -U解锁) - 指定账户过期时间:
usermod -e "2024-12-31" username
完整可执行脚本示例
保存为batch_add_users.sh,赋予执行权限(chmod +x)后运行:
USERS_FILE="users.txt"
if [[ ! -f "$USERS_FILE" ]]; then
echo "错误:找不到 $USERS_FILE"
exit 1
fi
while IFS=: read -r user pass; do
if [[ -z "$user" || -z "$pass" ]]; then continue; fi
# 创建用户,主目录,bash shell
useradd -m -s /bin/bash "$user" 2>/dev/null
if [[ $? -eq 0 ]]; then
echo "✓ 已创建用户:$user"
# 设置密码并强制首次修改
echo "$user:$pass" | chpasswd
passwd -e "$user" >/dev/null
else
echo "⚠ 用户 $user 已存在,跳过"
fi
done











