一、安装vsftpd(Ubuntu默认推荐FTP服务器)
打开终端,依次执行以下命令更新软件包列表并安装vsftpd:
sudo apt update
sudo apt install vsftpd
安装完成后,vsftpd会自动启动;若未启动,可通过sudo systemctl start vsftpd手动启动,并用sudo systemctl enable vsftpd设置开机自启。
二、配置vsftpd.conf(核心设置)
编辑vsftpd的主配置文件(需root权限):
sudo nano /etc/vsftpd.conf
修改或添加以下关键配置项(按需调整):
anonymous_enable=NO(禁止匿名用户登录,避免未授权访问);local_enable=YES(允许本地系统用户登录FTP);write_enable=YES(允许用户上传、删除文件);chroot_local_user=YES(将用户限制在自己的主目录,防止越权访问服务器其他文件);allow_writeable_chroot=YES(允许chroot目录可写,解决“chroot目录不可写”的报错)。pasv_enable=YES(启用被动模式,适用于NAT或防火墙环境);pasv_min_port=10000(设置被动模式最小端口);pasv_max_port=10100(设置被动模式最大端口,需与防火墙规则匹配)。修改完成后,按Ctrl+O保存文件,Ctrl+X退出编辑器。
三、创建专用FTP用户并设置权限
为避免使用root账户登录FTP(存在安全风险),建议创建专用用户:
sudo adduser ftpuser
按照提示设置密码(建议使用强密码)及其他信息(如姓名、电话等,可跳过)。
设置用户主目录权限(确保用户对其主目录有读写权限):
sudo chown ftpuser:ftpuser /home/ftpuser
sudo chmod 755 /home/ftpuser
(注:若需更严格的权限控制,可将用户添加到ftp组,并通过/etc/vsftpd.chroot_list文件管理允许访问的用户列表。
四、配置防火墙(允许FTP流量通过)
若服务器启用了UFW防火墙(Ubuntu默认防火墙),需开放FTP相关端口:
sudo ufw allow 21/tcp # FTP控制端口(默认21)
sudo ufw allow 10000:10100/tcp # 被动模式端口范围(需与vsftpd.conf中的设置一致)
sudo ufw reload # 重新加载防火墙规则,使更改生效
(注:若使用iptables防火墙,可执行sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT等命令开放端口。
五、测试FTP连接
使用FTP客户端(如FileZilla、WinSCP或终端命令ftp)连接服务器:
192.168.1.100);ftpuser(步骤三创建的用户);21(默认FTP端口,若修改了vsftpd.conf中的listen_port,需填写对应端口)。连接成功后,尝试上传(如从本地复制文件到FTP服务器)、下载(如从FTP服务器复制文件到本地)及删除文件,验证功能是否正常。
六、增强安全性(可选但推荐)
ssl_enable=YES
rsa_cert_file=/etc/ssl/private/vsftpd.crt
rsa_private_key_file=/etc/ssl/private/vsftpd.key
重启vsftpd服务:sudo systemctl restart vsftpd。allow_writeable_chroot=YES,并创建/etc/vsftpd.chroot_list文件,写入允许访问的IP地址(每行一个),设置chroot_list_enable=YES。