在CentOS系统中开启FTP服务通常需要安装vsftpd(Very Secure FTP Daemon),这是Linux系统中常用的FTP服务器软件,以下是详细的步骤和注意事项,帮助您顺利完成配置。

安装vsftpd软件包
首先需要确保系统已安装vsftpd,通过SSH登录到CentOS服务器,使用yum包管理器进行安装,执行命令sudo yum install vsftpd -y,系统会自动下载并安装所需的软件包,安装完成后,可以通过systemctl status vsftpd检查服务状态,默认情况下可能是未启动的。
启动并设置开机自启
安装成功后,需要启动vsftpd服务并设置其为开机自启,使用命令sudo systemctl start vsftpd启动服务,然后执行sudo systemctl enable vsftpd确保服务器重启后服务仍能自动运行,此时可以通过netstat -tulnp | grep 21确认FTP服务端口21是否已监听。
配置防火墙规则
CentOS系统默认启用防火墙,需要开放FTP服务的相关端口,执行sudo firewall-cmd --permanent --add-service=ftp添加FTP服务到防火墙规则,然后运行sudo firewall-cmd --reload重新加载配置,如果需要单独开放端口,也可以使用sudo firewall-cmd --permanent --add-port=21/tcp命令。
修改vsftpd配置文件
vsftpd的主配置文件位于/etc/vsftpd/vsftpd.conf,使用sudo vim /etc/vsftpd/vsftpd.conf编辑该文件,根据需求调整以下关键参数:
anonymous_enable=NO:禁用匿名访问,提升安全性。local_enable=YES:允许本地用户登录。write_enable=YES:允许用户上传文件。chroot_local_user=YES:限制用户只能在其家目录中活动。pasv_min_port=40000和pasv_max_port=50000:设置被动模式的端口范围。
保存配置后,重启vsftpd服务使修改生效:sudo systemctl restart vsftpd。

创建FTP用户并设置权限
建议为FTP服务创建专用用户,避免使用系统root账户,执行sudo useradd -m ftpuser创建用户,-m参数会自动创建家目录,使用sudo passwd ftpuser设置用户密码,如果需要限制用户访问目录,可通过sudo usermod -d /path/to/directory ftpuser指定家目录。
解决常见问题
如果遇到无法登录的情况,首先检查/etc/vsftpd/ftpusers和/etc/vsftpd/user_list文件,确认用户未被禁止,SELinux可能阻止FTP服务,可执行sudo setsebool -P ftpd_full_access on临时调整策略,对于被动模式,还需确保防火墙允许配置的端口范围。
安全加固建议
为提升安全性,建议采取以下措施:
- 限制用户访问:通过配置
userlist_enable=YES和userlist_file=/etc/vsftpd/user_list仅允许指定用户登录。 - 启用日志:设置
xferlog_enable=YES记录FTP操作日志。 - 更改默认端口:修改
listen_port=2121避免使用标准端口21,减少扫描攻击。
测试FTP服务
使用FileZilla或命令行工具测试FTP服务,在客户端输入服务器IP、用户名和密码,确保能够成功连接和传输文件,如果连接失败,检查服务日志/var/log/vsftpd.log排查错误信息。
FAQs

Q1: 如何在CentOS中禁用匿名FTP访问?
A: 编辑/etc/vsftpd/vsftpd.conf文件,将anonymous_enable=YES改为anonymous_enable=NO,然后保存并重启vsftpd服务,匿名访问默认是禁用的,但检查此配置可以确保安全性。
Q2: FTP用户无法上传文件怎么办?
A: 首先确认write_enable=YES已在配置文件中启用,然后检查用户家目录的权限,确保用户对目录有写入权限,可执行sudo chmod 755 /home/ftpuser,SELinux策略也可能阻止写入,尝试执行sudo chcon -t public_content_rw_t /home/ftpuser调整上下文。