批量创建账号怎么做
新建团队或搭建实验环境时常常要一次建一批账号。常见做法是用 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 组与公钥,遗漏几乎都出在这一步。