CentOS 7 作为一款广泛使用的服务器操作系统,其 FTP 服务的搭建是许多管理员需要掌握的基础技能,FTP(文件传输协议)因其简单高效的特点,常用于文件共享和传输,本文将详细介绍在 CentOS 7 系统中安装、配置 FTP 服务的完整步骤,包括防火墙和 SELinux 的设置,确保服务稳定运行。

安装 vsftpd 服务
在 CentOS 7 中,vsftpd(Very Secure FTP Daemon)是默认的 FTP 服务器软件,以其安全性和稳定性著称,通过 yum 包管理器安装 vsftpd,打开终端,执行以下命令:
sudo yum install vsftpd -y
安装完成后,启动 vsftpd 服务并设置开机自启:
sudo systemctl start vsftpd sudo systemctl enable vsftpd
FTP 服务已初步运行,但默认配置可能无法满足实际需求,需进一步调整。
配置 vsftpd 参数
vsftpd 的配置文件位于 /etc/vsftpd/vsftpd.conf,使用 vim 或 nano 编辑该文件,根据需求修改关键参数,以下是常用配置项:
anonymous_enable=NO:禁用匿名登录,提升安全性。local_enable=YES:允许本地用户登录。write_enable=YES:允许用户上传文件。chroot_local_user=YES:限制用户只能在其主目录下活动,防止越权访问。pasv_min_port=40000和pasv_max_port=40010:设置被动模式的端口范围,避免防火墙拦截。
保存配置后,重启 vsftpd 服务使生效:
sudo systemctl restart vsftpd
设置防火墙规则
CentOS 7 默认使用 firewalld 管理防火墙,FTP 服务需要开放 20(数据端口)和 21(控制端口),以及被动模式的端口范围,执行以下命令:

sudo firewall-cmd --permanent --add-service=ftp sudo firewall-cmd --permanent --add-port=20/tcp sudo firewall-cmd --permanent --add-port=21/tcp sudo firewall-cmd --permanent --add-port=40000-40010/tcp sudo firewall-cmd --reload
这些规则确保 FTP 通信不受防火墙阻拦。
处理 SELinux 配置
SELinux 是 CentOS 的安全模块,可能会阻止 FTP 服务访问用户目录,临时关闭 SELinux 可测试问题是否由此引发:
sudo setenforce 0
若问题解决,需配置 SELinux 允许 FTP 写入,安装 policycoreutils-python 包,使用 semanage 命令为用户目录添加上下文:
sudo yum install policycoreutils-python -y sudo semanage fcontext -a -t public_content_rw_t "/home/username/pub(/.*)?" sudo restorecon -Rv /home/username/pub
将 SELinux 设置为 enforcing 模式:
sudo setenforce 1
创建 FTP 用户并测试
假设需要为用户 ftpuser 创建 FTP 账户,首先添加用户并设置密码:
sudo useradd -m ftpuser sudo passwd ftpuser
若需限制用户目录,可创建一个专用目录(如 /home/ftpuser/pub)并设置权限:

sudo mkdir /home/ftpuser/pub sudo chmod 755 /home/ftpuser sudo chown ftpuser:ftpuser /home/ftpuser/pub
使用 FTP 客户端(如 FileZilla)连接服务器,输入用户名和密码测试上传下载功能。
FAQs
问题:无法连接 FTP 服务器,提示“连接被拒绝”怎么办?
解答:首先检查 vsftpd 服务是否运行(systemctl status vsftpd),确认防火墙和 SELinux 设置是否正确,若问题依旧,尝试临时关闭防火墙(sudo systemctl stop firewalld)测试是否为防火墙规则导致,再针对性调整。问题:用户登录后无法上传文件,提示“权限不足”如何解决?
解答:检查用户目录权限(ls -ld /home/username),确保属主正确且目录权限为 755,若使用 SELinux,需确认目录上下文为public_content_rw_t,可通过restorecon命令修复。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复