在Linux环境下搭建FTP服务器是许多企业和个人用户的需求,常见的FTP服务器软件有vsftpd(Very Secure FTP Daemon)、ProFTPD等,其中vsftpd因其安全性高、配置简单而被广泛使用,以下将详细介绍在Linux系统下使用vsftpd搭建FTP服务器的步骤、配置及注意事项。

安装vsftpd
以Ubuntu/Debian系统为例,通过apt命令安装:sudo apt update && sudo apt install vsftpd,对于CentOS/RHEL系统,可使用yum install vsftpd或dnf install vsftpd,安装完成后,vsftpd服务会自动启动,可通过systemctl status vsftpd检查服务状态。
配置vsftpd
核心配置文件位于/etc/vsftpd.conf,建议先备份原配置文件:sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak,以下是关键配置项及其作用:
| 配置项 | 作用 | 示例值 |
|---|---|---|
| anonymous_enable | 是否允许匿名用户访问 | NO(禁止匿名访问) |
| local_enable | 是否允许本地用户登录 | YES |
| write_enable | 是否允许文件写入 | YES |
| chroot_local_user | 是否将用户限制在主目录 | YES(增强安全性) |
| allow_writeable_chroot | 是否允许chroot目录可写 | YES(需配合chroot_local_user) |
| pasv_min_port / pasv_max_port | 被动模式端口范围 | 60000-61000 |
| user_sub_token | 用户主目录变量 | %u |
| local_root | 用户主目录路径 | /home/%u/ftp |
编辑配置文件后,重启vsftpd服务使配置生效:sudo systemctl restart vsftpd。
创建FTP用户及目录
- 创建系统用户:
sudo useradd -m -s /sbin/nologin ftpuser(-s禁止SSH登录)。 - 设置用户密码:
sudo passwd ftpuser。 - 创建FTP目录并设置权限:
sudo mkdir -p /home/ftpuser/ftp && sudo chown -R ftpuser:ftpuser /home/ftpuser/ftp && sudo chmod -R 755 /home/ftpuser/ftp。
防火墙与SELinux配置
- 防火墙:若使用UFW,执行
sudo ufw allow 20/tcp(主动模式)和sudo ufw allow 60000:61000/tcp(被动模式);若使用firewalld,则执行sudo firewall-cmd --permanent --add-service=ftp并重载防火墙。 - SELinux:在CentOS/RHEL系统中,需安装
setsebool -P ftpd_full_access on允许FTP访问用户目录。
常见问题排查
- 无法连接:检查防火墙规则、vsftpd服务状态,确认端口是否开放。
- 权限问题:确保用户对FTP目录有读写权限,检查
/etc/vsftpd.chroot_list文件(若启用chroot限制)。
FAQs
Q1: 如何限制FTP用户只能访问指定目录?
A1: 通过设置chroot_local_user=YES和local_root=/path/to/directory,将用户限制在指定目录内,将用户限制在/var/www/ftp目录,需确保该目录权限为755,且用户拥有读写权限。

Q2: 如何启用FTP over SSL/TLS加密?
A2: 在vsftpd.conf中添加以下配置:
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
然后生成SSL证书:sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem,并重启服务,客户端需启用SSL/TLS连接模式。
