在CentOS系统下配置VSFTPD以支持虚拟主机,可以按照以下步骤进行:
首先,确保你已经安装了VSFTPD。如果没有安装,可以使用以下命令进行安装:
sudo yum install vsftpd
编辑VSFTPD的主配置文件 /etc/vsftpd/vsftpd.conf:
sudo vi /etc/vsftpd/vsftpd.conf
在配置文件中添加或修改以下内容以启用虚拟主机:
# 启用虚拟用户
guest_enable=YES
guest_username=ftpuser
# 虚拟用户的根目录
local_root=/home/vsftpd/$USER
# 允许虚拟用户登录
write_enable=YES
chroot_local_user=YES
# 其他常用配置
listen=YES
listen_ipv6=NO
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
使用 db_load 命令创建一个虚拟用户数据库文件。首先,创建一个文本文件来存储用户名和密码,例如 ftpusers.txt:
sudo vi /etc/vsftpd/ftpusers.txt
在文件中添加用户名和密码,每行一个用户,格式如下:
username1
password1
username2
password2
然后,使用 db_load 命令将文本文件转换为数据库文件:
sudo db_load -T -t hash -f /etc/vsftpd/ftpusers.txt /etc/vsftpd/ftpusers.db
编辑PAM配置文件 /etc/pam.d/vsftpd 以启用虚拟用户认证:
sudo vi /etc/pam.d/vsftpd
添加以下行:
auth required pam_userdb.so db=/etc/vsftpd/ftpusers
account required pam_userdb.so db=/etc/vsftpd/ftpusers
为每个虚拟用户创建一个根目录,并设置适当的权限:
sudo mkdir -p /home/vsftpd/username1
sudo chown ftpuser:ftpuser /home/vsftpd/username1
sudo chmod 755 /home/vsftpd/username1
重复上述步骤为其他虚拟用户创建根目录。
最后,重启VSFTPD服务以应用所有更改:
sudo systemctl restart vsftpd
确保防火墙允许FTP流量。如果使用的是 firewalld,可以添加以下规则:
sudo firewall-cmd --permanent --add-service=ftp
sudo firewall-cmd --reload
如果使用的是 iptables,可以添加以下规则:
sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT
sudo service iptables save
完成以上步骤后,你应该能够在CentOS系统下成功配置VSFTPD以支持虚拟主机。