首页/系统/Linux 运维命令速查/批量创建账号与初始密码策略

批量创建账号与初始密码策略

批量建号:for 循环 useradd + chage 强制首登改密 + 加入组;或 newusers 批量导入,适合新团队/实验环境初始化。

Linux 运维命令速查系统更新于 2026-10-13

批量创建账号怎么做

新建团队或搭建实验环境时常常要一次建一批账号。常见做法是用 for 循环调 useradd,配合 chpasswd 批量设置初始密码、用 chage 强制首次登录改密并设定有效期;也可以把账号写进文件用 newusers 批量导入。关键不在命令本身,而是初始密码、组归属与过期策略这三件事要一起定好。

基本信息

用途批量初始化账号
常用方式for 循环 + useradd、chpasswd 批量设密、newusers 批量导入
策略要点强制首次登录改密、密码复杂度、有效期
密码处理chpasswd 从标准输入读取「用户:密码」对

典型使用场景

  • 新团队入职时批量开通账号
  • 实验环境里快速造一批测试用户
  • 系统迁移时按名单重建账号与组归属
  • 培训或演示环境需要一批临时账号
  • 大批量账号统一初始化口令策略
  • 应急情况下按备份名单恢复访问权限

for 循环方式

for 循环方式
for u in alice bob carol; do
  sudo useradd -m -G dev,ops -s /bin/bash "$u" || echo "skip $u"
  echo "$u:Init@$(openssl rand -hex 4)" | sudo chpasswd
  sudo chage -d 0 "$u"        # 强制下次登录改密
  sudo chage -M 90 "$u"       # 密码 90 天有效期
done
sudo chage -l alice | head      # 复核密码策略

newusers 方式

newusers 方式
printf 'dave:x:2001:2001::/home/dave:/bin/bash\nerin:x:2002:2002::/home/erin:/bin/bash\n' > /tmp/users.txt
sudo newusers /tmp/users.txt    # 按格式批量导入,但不设置密码
sudo passwd dave                # 导入后逐个设置密码
sudo chage -d 0 dave            # 要求首次登录改密

两种方式对照

方式适用情况注意点
for + useradd数量不大、需要逐个定制参数单条失败可单独处理,附带组与 shell
newusers按固定格式批量导入不处理密码,导入后必须立刻设置
chpasswd批量设置密码用标准输入传递,避免明文进历史
chage账号与密码有效期首登改密与最长有效期一起配
chpasswd 从标准输入读取「用户:密码」对,用管道传递比写在命令行上安全:写在命令行里会进入 shell 历史与审计记录,明文口令等于泄露。
newusers 不设置密码,导入后的账号可能处于无密码等异常状态,必须马上用 passwd 或 chpasswd 补齐口令再交付使用。
生产环境更推荐用配置中心或自动化编排工具管理账号;手工批量建号之后一定要核对 sudo 组与公钥,遗漏几乎都出在这一步。

易错点

  • 在命令行明文写密码:进入 shell 历史与审计记录,等同泄露初始口令
  • newusers 导入后不设置密码:账号处于异常状态,存在被直接利用的风险
  • 批量建号后不核对组与权限:少加一个组,等服务起不来才发现
  • 初始密码统一且不设过期:一个账号被攻破,其余账号连带受损

数据来源与参考

  • man 8 useradd
  • man 8 newusers
  • man 1 chpasswd

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌