在Linux系统中搭建FTP服务器通常使用vsftpd(Very Secure FTP Daemon)软件,它以安全性和稳定性著称,以下是详细的搭建步骤,适用于CentOS/Ubuntu等主流发行版。

安装vsftpd
首先根据系统类型选择安装命令,对于CentOS系统,使用yum命令:
sudo yum install vsftpd -y
对于Ubuntu/Debian系统,使用apt命令:
sudo apt update sudo apt install vsftpd -y
安装完成后,启动vsftpd服务并设置开机自启:
sudo systemctl start vsftpd sudo systemctl enable vsftpd
配置防火墙规则
为确保FTP服务可访问,需开放相关端口,默认FTP使用21端口(控制连接)和20端口(数据连接),执行以下命令:

# CentOS系统 sudo firewall-cmd --permanent --add-service=ftp sudo firewall-cmd --reload # Ubuntu系统 sudo ufw allow 21/tcp sudo ufw allow 20/tcp sudo ufw reload
配置vsftpd.conf文件
核心配置文件为/etc/vsftpd/vsftpd.conf
,使用vim或nano编辑器打开:
sudo vim /etc/vsftpd/vsftpd.conf
关键参数配置如下(可根据需求调整):
参数 | 说明 | 推荐值 |
---|---|---|
anonymous_enable | 是否允许匿名访问 | NO |
local_enable | 是否允许本地用户登录 | YES |
write_enable | 是否允许写操作 | YES |
chroot_local_user | 是否限制用户仅能访问家目录 | YES |
allow_writeable_chroot | 是否允许chroot目录可写(需配合chroot_local_user) | YES |
pasv_enable | 是否启用被动模式(推荐) | YES |
pasv_min_port | 被动模式最小端口 | 60000 |
pasv_max_port | 被动模式最大端口 | 61000 |
保存文件后重启vsftpd服务:
sudo systemctl restart vsftpd
创建FTP用户并设置权限
创建一个专用FTP用户(例如ftpuser):

sudo useradd -m -s /sbin/nologin ftpuser sudo passwd ftpuser # 设置用户密码
若需限制用户仅能通过FTP访问,可禁用SSH登录:
sudo usermod -s /sbin/nologin ftpuser
测试FTP服务
使用FileZilla或命令行工具测试连接,命令行测试示例:
ftp localhost # 输入用户名和密码登录后,使用get/put命令测试上传下载
常见问题解决
- 权限问题:确保用户家目录权限正确(755或750):
sudo chmod 755 /home/ftpuser
- 被动模式连接失败:检查防火墙是否开放pasv端口范围(60000-61000)。
相关问答FAQs
Q1: 如何限制FTP用户只能访问指定目录?
A1: 在vsftpd.conf
中设置local_root=/path/to/directory
,并确保该目录权限正确(例如755),用户登录后将自动被限制在该目录内。
Q2: 如何启用FTP日志记录?
A2: 在vsftpd.conf
中添加以下参数:
xferlog_enable=YES xferlog_file=/var/log/xferlog dual_log_enable=YES vsftpd_log_file=/var/log/vsftpd.log
重启服务后,日志将记录在指定文件中。