本文目录导读:

要批量删除FTP账号,可以通过编写脚本调用系统命令或FTP管理命令来实现,下面提供几种常见场景的脚本方法(基于 Linux 系统 vsftpd 或 pure-ftpd,以及 Windows IIS FTP)。
Linux 环境 (vsftpd / pure-ftpd)
删除 vsftpd 虚拟用户(基于文本数据库)
假设用户信息存储在 /etc/vsftpd/virtual_users.txt 文件中,格式为:
username1
password1
username2
password2
删除用户的核心逻辑:从文件中移除对应行。
脚本示例 (bash):
#!/bin/bash
# 要删除的用户列表
users_to_delete=("user1" "user2" "user3")
# 用户数据库文件
db_file="/etc/vsftpd/virtual_users.txt"
# 逐行读取原文件,跳过要删除的用户
tmp_file=$(mktemp)
while IFS= read -r line; do
# 跳过用户名行(奇数行)且用户名在删除列表中
if (( count % 2 == 0 )) && [[ " ${users_to_delete[*]} " =~ " $line " ]]; then
# 跳过该用户名及其下一行的密码
read -r skip_password
else
echo "$line" >> "$tmp_file"
fi
((count++))
done < "$db_file"
# 覆盖原文件
mv "$tmp_file" "$db_file"
# 重建数据库(根据实际配置)
# /usr/bin/db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
echo "已删除指定用户"
注意:如果用户少,建议直接用
sed:
sed -i '/^user1$/,+1d' /etc/vsftpd/virtual_users.txt
删除 pure-ftpd 用户(基于系统账户或 MySQL)
系统账户
#!/bin/bash
users=("ftpuser1" "ftpuser2")
for user in "${users[@]}"; do
userdel -r "$user" 2>/dev/null
echo "已删除系统用户: $user"
done
pure-ftpd + MySQL
#!/bin/bash
db_host="localhost"
db_user="root"
db_pass="password"
db_name="pureftpd"
users=("user1" "user2")
for user in "${users[@]}"; do
mysql -h "$db_host" -u "$db_user" -p"$db_pass" "$db_name" \
-e "DELETE FROM users WHERE User='$user';"
done
echo "MySQL用户已删除"
Windows 环境 (IIS FTP)
使用 IIS 管理器或 AppCmd.exe 删除用户(需管理员权限)。
脚本 (PowerShell):
# 要删除的用户列表
$users = @("ftpuser1", "ftpuser2")
# 方法1:通过本地用户和组删除FTP用户(如果是Windows账户)
foreach ($user in $users) {
try {
Remove-LocalUser -Name $user -ErrorAction Stop
Write-Host "已删除本地用户: $user"
} catch {
Write-Warning "用户 $user 不存在或无法删除: $($_.Exception.Message)"
}
}
# 方法2:如果FTP用户是IIS管理器中的单独设置(非Windows账户)
Import-Module WebAdministration
foreach ($user in $users) {
# 具体路径取决于你的FTP站点名称,quot;MyFtpSite"
$path = "IIS:\Sites\MyFtpSite\ftpusers\$user"
if (Test-Path $path) {
Remove-Item $path -Recurse
Write-Host "已删除IIS FTP用户: $user"
} else {
Write-Warning "用户 $user 在IIS中不存在"
}
}
通用方法:读取文件列表批量删除
如果用户信息保存在一个文本文件中(每行一个用户名):
#!/bin/bash
# 文件 userlist.txt 内容:user1\nuser2\n...
while IFS= read -r user; do
# 根据你的FTP服务调用删除命令
# vsftpd:
# sed -i "/^$user$/,+1d" /etc/vsftpd/virtual_users.txt
# 或 pure-ftpd:
# pure-pw userdel "$user"
echo "正在删除: $user"
done < userlist.txt
⚠️ 重要安全建议
- 备份:操作前备份用户数据库文件(如
/etc/vsftpd/virtual_users.txt)。 - 测试:先用少量用户测试脚本。
- 权限:脚本需以
root或管理员权限运行。 - 停止服务:某些FTP服务(如 vsftpd)可能需要重启或重载配置才能生效:
systemctl restart vsftpd # 或 service vsftpd restart
- 验证删除:删除后确认用户已无法登录。
如果需要针对特定FTP服务的更详细脚本(如 ProFTPD、FileZilla Server),请告知具体软件版本,我可以提供针对性代码。