脚本如下
#!/bin/bash
检查是否以 root 用户运行
if [ "$EUID" -ne 0 ]; then
echo "不是root无法运行。"
exit 1
fi
安装所需软件包
yum install -y vsftpd db4-utils
备份原始配置文件
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
创建虚拟用户账号文件
cat <<EOF > /etc/vsftpd/virtual_users.txt
testuser1
testpassword1
testuser2
testpassword2
EOF
生成虚拟用户数据库文件
db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
chmod 600 /etc/vsftpd/virtual_users.db
创建 PAM 认证文件
cat <<EOF > /etc/pam.d/vsftpd.vu
auth required pam_userdb.so db=/etc/vsftpd/virtual_users
account required pam_userdb.so db=/etc/vsftpd/virtual_users
EOF
修改 vsftpd 配置文件
cat <<EOF > /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
allow_writeable_chroot=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd.vu
guest_enable=YES
guest_username=ftp
user_sub_token=\$USER
local_root=/var/ftp/\$USER
userlist_enable=YES
tcp_wrappers=YES
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
EOF
创建虚拟用户映射的系统用户目录
mkdir -p /var/ftp/testuser1
mkdir -p /var/ftp/testuser2
chown -R ftp:ftp /var/ftp
重启 vsftpd 服务
systemctl restart vsftpd
systemctl enable vsftpd
echo "虚拟用户账号数据库已建立,vsftpd 服务器已添加虚拟用户支持。"
echo "虚拟用户: testuser1, testuser2"
echo "对应密码: testpassword1, testpassword2"