在企业级服务器管理中,用户账户的高效管理是确保系统安全与运维便捷的重要环节,CentOS作为广泛使用的Linux发行版,提供了多种批量添加用户的方法,通过脚本或命令行工具可以大幅提升管理效率,减少重复操作,本文将详细介绍在CentOS系统中批量添加用户的几种常用方式,包括使用newusers命令、useradd脚本循环以及Ansible自动化工具,并涵盖用户创建后的权限配置与注意事项。

使用newusers命令批量创建用户
newusers是Linux系统自带的批量用户创建工具,其核心功能是通过读取标准输入或指定文件中的用户信息,自动完成用户添加、密码设置及目录创建等操作,该方法的优势在于配置简单、效率高,尤其适合处理大量用户数据。
首先需要准备一个包含用户信息的文本文件,每行代表一个用户,格式为“用户名:密码:UID:GID:描述:家目录:Shell”,创建一个名为users.txt的文件,内容如下:
user1:password123:1001:1001:User One:/home/user1:/bin/bash
user2:password456:1002:1002:User Two:/home/user2:/bin/bash
密码字段需要使用openssl passwd -1命令生成加密后的密文,执行以下命令完成批量创建:
openssl passwd -1 -salt $(openssl rand -hex 4) # 将生成的密文替换users.txt中的密码明文 newusers < users.txt
创建后需验证用户是否成功,可通过cat /etc/passwd | grep user1检查,或使用su - user1切换用户测试。
通过useradd脚本循环实现批量添加
对于需要更灵活控制的情况,可通过for循环结合useradd命令实现批量用户创建,使用while循环读取CSV文件或列表数据,动态设置用户属性,以下是一个简单示例脚本:

#!/bin/bash
user_list=("user3" "user4" "user5")
for user in "${user_list[@]}"; do
if ! id "$user" &>/dev/null; then
useradd -m -s /bin/bash "$user"
echo "$user:TempPass123!" | chpasswd
echo "User $user created successfully."
else
echo "User $user already exists."
fi
done
脚本中,-m选项自动创建家目录,chpasswd命令用于批量设置密码,执行前需通过chmod +x script.sh赋予执行权限,此方法适用于用户数量较少或需要自定义参数的场景,但需注意密码安全性,避免明文存储。
使用Ansible实现自动化批量管理
在大型环境中,Ansible作为自动化运维工具,可高效实现批量用户管理,首先需配置Inventory文件定义目标主机,然后编写Playbook,创建add_users.yml文件:
---
- name: Batch add users
hosts: all
become: yes
tasks:
- name: Create users
user:
name: "{{ item.name }}"
state: present
shell: /bin/bash
password: "{{ item.password | password_hash('sha512') }}"
create_home: yes
loop:
- { name: 'ansible1', password: 'Ansible@123' }
- { name: 'ansible2', password: 'DevOps!456' }
执行命令ansible-playbook -i inventory.ini add_users.yml即可完成多台服务器的用户同步,Ansible的优势在于支持幂等操作(重复执行不会产生冲突)和跨平台管理,适合复杂的企业环境。
用户创建后的权限与安全配置
批量添加用户后,需进行基础安全加固,通过usermod -L username锁定临时不用的账户,或使用passwd -e username强制首次登录修改密码,可通过配置/etc/sudoers文件或创建用户组统一管理权限,
groupadd developers usermod -aG developers user1
对于需要SSH密钥认证的场景,可在批量创建用户时自动生成.ssh/authorized_keys文件,提升安全性。

常见问题解答(FAQs)
Q1:批量创建用户时如何确保密码符合复杂度策略?
A:可通过pam_pwquality模块设置密码策略,例如在/etc/security/pwquality.conf中配置minlen=8(最小长度8位)、dcredit=-1(至少包含1个数字)等参数,在脚本中使用chpasswd前,可先用chage命令强制用户首次登录修改密码,例如chage -d 0 username。
Q2:如何批量删除已创建的用户及其家目录?
A:使用userdel -r username命令可同时删除用户及其家目录,批量删除时可通过循环实现,for user in user1 user2 user3; do userdel -r "$user"; done,若需从文件中读取用户列表,可结合xargs命令:cat users.txt | xargs -n1 userdel -r。