在CentOS系统中搭建FTP服务器通常使用vsftpd(Very Secure FTP Daemon)软件,该软件以安全性高、性能稳定著称,以下是详细的安装与配置步骤,涵盖环境准备、安装部署、用户管理及防火墙设置等关键环节。

环境准备
在开始安装前,建议更新系统软件包以确保兼容性和安全性,执行以下命令更新系统:
sudo yum update -y
检查系统是否已安装其他FTP服务(如vsftpd、proftpd等),避免冲突:
rpm -qa | grep vsftpd
若输出结果中包含vsftpd,需先卸载旧版本:
sudo yum remove vsftpd -y
安装vsftpd
通过yum包管理器安装vsftpd,命令如下:

sudo yum install vsftpd -y
安装完成后,启动vsftpd服务并设置为开机自启:
sudo systemctl start vsftpd sudo systemctl enable vsftpd
检查服务状态,确保运行正常:
sudo systemctl status vsftpd
配置vsftpd
vsftpd的主配置文件位于/etc/vsftpd/vsftpd.conf,建议先备份原配置文件:
sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
使用vim编辑器打开配置文件:

sudo vim /etc/vsftpd/vsftpd.conf
根据需求修改以下关键参数(以下为常用配置示例):
| 参数 | 说明 | 推荐值 |
|---|---|---|
| anonymous_enable | 是否允许匿名用户登录 | NO(禁止匿名访问) |
| local_enable | 是否允许本地用户登录 | YES(启用本地用户) |
| write_enable | 是否允许文件写入 | YES(启用写权限) |
| chroot_local_user | 是否限制本地用户仅可访问家目录 | YES(增强安全性) |
| allow_writeable_chroot | 是否允许chroot目录可写 | YES(需配合chroot_local_user使用) |
| pasv_enable | 是否启用被动模式 | YES(推荐用于穿透防火墙) |
| pasv_min_port | 被动模式最小端口 | 10000(自定义范围) |
| pasv_max_port | 被动模式最大端口 | 10100(自定义范围) |
| userlist_enable | 是否启用用户列表文件 | YES |
| userlist_file | 用户列表文件路径 | /etc/vsftpd/user_list |
| tcp_wrappers | 是否启用TCP Wrappers访问控制 | YES |
保存配置文件后,创建用户列表文件并添加允许访问的用户(例如添加用户ftpuser):
echo "ftpuser" | sudo tee -a /etc/vsftpd/user_list
创建FTP用户并设置权限
创建专用的FTP用户(如ftpuser),并设置家目录和登录shell:
sudo useradd -m -d /home/ftpuser -s /sbin/nologin ftpuser
为用户设置密码:
sudo passwd ftpuser
若需限制用户仅能通过FTP访问(禁止SSH登录),确保用户shell为/sbin/nologin。
防火墙与SELinux配置
防火墙设置
CentOS默认使用firewalld,需开放FTP相关端口(主动模式21端口,被动模式10000-10100端口):
sudo firewall-cmd --permanent --add-service=ftp sudo firewall-cmd --permanent --add-port=10000-10100/tcp sudo firewall-cmd --reload
SELinux配置
若启用SELinux,需设置FTP的布尔值允许匿名上传和本地用户写入:
sudo setsebool -P ftpd_full_access on
或使用以下命令为用户目录设置SELinux上下文:
sudo semanage fcontext -a -t public_content_rw_t "/home/ftpuser(/.*)?" sudo restorecon -Rv /home/ftpuser
重启服务并测试
完成所有配置后,重启vsftpd服务使配置生效:
sudo systemctl restart vsftpd
使用FTP客户端(如FileZilla)测试连接,输入用户名、密码及服务器IP,确认可正常访问文件目录。
相关问答FAQs
问题1:如何禁止FTP用户删除和重命名文件?
解答:在vsftpd.conf配置文件中添加以下参数:
deny_file_writes=YES
或通过文件系统权限控制,例如设置家目录权限为755,用户文件权限为644:
chmod 755 /home/ftpuser chmod 644 /home/ftpuser/*
问题2:FTP连接时提示“530 Login incorrect”如何解决?
解答:可能原因及解决方案如下:
- 用户名或密码错误:确认用户名拼写及密码是否正确,可通过
sudo passwd ftpuser重置密码。 - 用户被拒绝登录:检查
/etc/vsftpd/user_list和/etc/vsftpd/ftpusers文件,确保用户未被列入黑名单。 - SELinux或防火墙拦截:执行
sudo setsebool -P ftpd_full_access on开启SELinux权限,或检查防火墙规则是否放行FTP端口。 - 配置文件错误:确认
vsftpd.conf中local_enable=YES已启用,并重启服务。
