最稳妥高效的方式是用newusers命令配合结构化用户文件;需更高灵活性时再搭配shell脚本+useradd和chpasswd。

Linux 批量创建多个系统用户,最稳妥高效的方式是用 newusers 命令配合结构化用户文件;若需更高灵活性(比如动态组、权限或后续操作),再搭配 shell 脚本 + useradd 和 chpasswd。
用 newusers 一次性完成创建与配置
这是专为批量场景设计的命令,能自动处理用户、密码、UID/GID、家目录、shell 等全部字段,无需额外脚本。
- 准备一个纯文本文件(如
users.txt),每行一个用户,格式为:用户名:加密密码:UID:GID:描述:家目录:登录shell - 密码必须是加密后的字符串(不能明文),可用
openssl passwd -6生成,例如:echo -n "123456" | openssl passwd -6 -stdin - UID/GID 可留空,系统自动分配;家目录路径建议写全(如
/home/username);shell 推荐指定为/bin/bash - 执行命令:
sudo newusers users.txt - 验证:检查
getent passwd 用户名、ls -ld /home/用户名、id 用户名
用 useradd + chpasswd 组合实现可控流程
适合需要分步控制、统一加组、设置 sudo 权限或处理特殊字符用户名的场景。
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- 用户名文件保持每行一个(避免空格分割错误),例如
names.txt: - 用
while read -r name安全读取,不依赖空格切分:while read -r name; do sudo useradd -m -s /bin/bash -U "$name"; done - 密码单独用
chpasswd批量注入,格式为用户名:密码(明文即可):paste -d: names.txt passwords.txt | sudo chpasswd - 如需强制首次登录改密,加参数:
sudo chage -d 0 用户名
关键细节不能跳过
很多失败其实源于默认配置没调好,不是命令写错。
- 先手动试一次:
sudo useradd -m -s /bin/bash testuser,确认id testuser和ls /home/testuser都正常 - 检查
/etc/default/useradd中的HOME、SHELL、CREATE_HOME是否合理;用useradd -D查当前默认值 - 别省略
-U(自动建同名私有组),否则多人共用users组易引发权限混乱 - 密码文件若含中文或特殊字符,确保文件编码为 UTF-8,且终端 locale 支持(如
zh_CN.UTF-8)
安全与维护提醒
批量操作后务必核验,防止静默失败。
- 对比
wc -l /etc/passwd和用户名文件行数,数量应一致 - 检查家目录权限:
ls -ld /home/*应为drwx------,属主属组正确 - 密码设完立即删掉明文密码文件,或用
shred -u安全擦除 - 如需统一策略(如密码过期、最大登录失败次数),可后续用
chage或修改/etc/login.defs

















