在虚拟机环境中部署CentOS系统并启用FTP服务是许多开发者和系统管理员常见的需求,FTP(文件传输协议)因其简单易用的特性,常用于文件的上传和下载,本文将详细介绍在VMware虚拟机中的CentOS系统上配置FTP服务的完整步骤,包括安装、配置、防火墙设置以及常见问题的解决方案。

安装vsftpd服务
vsftpd(Very Secure FTP Daemon)是CentOS系统中常用的FTP服务器软件,以其安全性和稳定性著称,需要确保系统已连接到网络,然后通过yum包管理器安装vsftpd,打开终端,执行以下命令:
sudo yum install vsftpd -y
安装完成后,使用以下命令启动vsftpd服务并设置开机自启:
sudo systemctl start vsftpd sudo systemctl enable vsftpd
可以通过netstat -tulnp | grep 21命令检查FTP默认端口21是否已监听,确认服务是否正常运行。
配置vsftpd
vsftpd的主配置文件位于/etc/vsftpd/vsftpd.conf,默认配置较为严格,需要根据实际需求进行调整,以下是关键配置项及其说明:
| 配置项 | 默认值 | 建议修改 | 说明 |
|---|---|---|---|
| anonymous_enable=YES | NO | 禁用匿名访问 | 提升安全性 |
| local_enable=YES | YES | 保持启用 | 允许本地用户登录 |
| write_enable=YES | YES | 保持启用 | 允许用户上传文件 |
| chroot_local_user=YES | NO | 启用 | 限制用户在主目录 |
| allow_writeable_chroot=YES | NO | 启用 | 解决chroot报错 |
使用文本编辑器(如vi)打开配置文件,修改上述参数后保存退出。
sudo vi /etc/vsftpd/vsftpd.conf
修改完成后,重启vsftpd服务使配置生效:

sudo systemctl restart vsftpd
设置防火墙和SELinux
CentOS系统默认启用防火墙和SELinux,需要开放FTP相关端口,在防火墙中添加FTP服务:
sudo firewall-cmd --permanent --add-service=ftp sudo firewall-cmd --reload
对于SELinux,需要安装setsebool工具并调整策略:
sudo setsebool -P ftpd_full_access on
若遇到权限问题,可临时关闭SELinux进行测试(sudo setenforce 0),但生产环境建议保持开启并正确配置。
创建FTP用户并测试
为了安全起见,建议为FTP服务创建专用用户,创建用户ftpuser并设置密码:
sudo useradd -m ftpuser sudo passwd ftpuser
确保用户主目录存在且权限正确(chmod 755 /home/ftpuser),使用FTP客户端(如FileZilla)测试连接,输入服务器IP、用户名和密码,确认可以正常访问和传输文件。
常见问题与解决方案
无法连接FTP服务器
检查防火墙和SELinux设置,确认端口21已开放,若使用被动模式(PASV),还需开放被动端口范围(如sudo firewall-cmd --permanent --add-port=20000-21000/tcp)。
用户被限制在主目录无法访问
确认chroot_local_user和allow_writeable_chroot已启用,并检查用户主目录权限是否为755。
FAQs
Q1: 如何限制FTP用户只能访问特定目录?
A1: 可通过user_sub_token和local_root参数实现,在vsftpd.conf中添加:user_sub_token=$USERlocal_root=/home/ftpusers/$USER
并创建对应目录结构。
Q2: 如何启用FTP的被动模式?
A2: 在vsftpd.conf中添加:pasv_enable=YESpasv_min_port=20000pasv_max_port=21000
然后开放防火墙中指定的端口范围。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复