需求场景
在CentOS服务器运维中,经常需要批量创建系统账号并配置管理权限。特别是在以下场景:
- VPS多用户管理
- 自动化部署系统
- 后台服务账户管理
核心脚本实现
以下是一个完整的Bash脚本示例,实现用户创建、密码设置和sudo权限配置的一体化操作:
#!/bin/bash
# 定义用户名和密码变量
USERNAME="newuser"
PASSWORD="your_secure_password"
# 创建用户
useradd $USERNAME
if [ $? -eq 0 ]; then
echo "用户 $USERNAME 创建成功"
else
echo "用户创建失败"
exit 1
fi
# 设置密码
echo "$PASSWORD" | passwd --stdin $USERNAME
if [ $? -eq 0 ]; then
echo "密码设置成功"
else
echo "密码设置失败"
exit 1
fi
# 配置sudo权限
echo "$USERNAME ALL=(ALL) ALL" >> /etc/sudoers
if [ $? -eq 0 ]; then
echo "sudo权限配置成功"
else
echo "sudo权限配置失败"
exit 1
fi
安全增强方案
实际生产环境中,建议采用以下安全措施:
# 随机密码生成
PASSWORD=$(date +%s | sha256sum | base64 | head -c 16)
# 使用visudo安全编辑
echo "$USERNAME ALL=(ALL) NOPASSWD:ALL" | EDITOR='tee -a' visudo >/dev/null
批量处理实现
对于需要批量创建多个用户的情况,可以结合CSV文件处理:
#!/bin/bash
while IFS=, read -r username password
do
useradd $username
echo "$password" | passwd --stdin $username
echo "$username ALL=(ALL) ALL" >> /etc/sudoers.d/$username
chmod 440 /etc/sudoers.d/$username
done < users.csv
错误处理机制
完善的脚本应该包含错误检测和日志记录:
LOG_FILE="/var/log/user_creation.log"
{
useradd $USERNAME || exit 1
echo "$PASSWORD" | passwd --stdin $USERNAME || exit 1
echo "$USERNAME ALL=(ALL) ALL" | tee -a /etc/sudoers.d/$USERNAME || exit 1
} 2>&1 | tee -a $LOG_FILE
实际应用建议
- 建议将脚本放在/usr/local/bin目录下
- 通过chmod +x赋予可执行权限
- 可以结合crontab实现定时任务