在Linux系统中搭建FTP服务器是许多企业和个人用户的需求,主要用于文件传输、共享和管理,本文将详细介绍在Linux(以CentOS 7为例)系统中使用vsftpd(Very Secure FTP Daemon)搭建FTP服务器的完整步骤,包括安装配置、用户管理、权限控制及安全设置等内容。

安装vsftpd服务
首先需要更新系统软件包列表并安装vsftpd,以root用户或具有sudo权限的用户身份执行以下命令:
yum update -y yum install vsftpd -y
安装完成后,启动vsftpd服务并设置开机自启:
systemctl start vsftpd systemctl enable vsftpd
检查服务状态是否正常:
systemctl status vsftpd
配置vsftpd
vsftpd的主配置文件位于/etc/vsftpd/vsftpd.conf,建议先备份原配置文件:

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
使用vim或nano编辑器打开配置文件,根据需求修改以下关键参数:
vim /etc/vsftpd/vsftpd.conf
主要配置项说明如下:
| 配置项 | 默认值 | 推荐值 | 说明 |
|---|---|---|---|
| anonymous_enable=YES | NO | 控制是否允许匿名用户登录 | |
| local_enable=YES | YES | 允许本地用户登录 | |
| write_enable=YES | YES | 允许本地用户对文件具有写权限 | |
| chroot_local_user=YES | YES | 将用户限制在其主目录中 | |
| allow_writeable_chroot=YES | NO | 当chroot启用时,允许用户拥有写权限(需配合其他参数) | |
| pasv_min_port=60000 | 0 | 被动模式最小端口 | |
| pasv_max_port=61000 | 0 | 被动模式最大端口 | |
| userlist_enable=YES | YES | 启用用户列表功能 | |
| userlist_file=/etc/vsftpd/user_list | /etc/vsftpd/user_list | 用户列表文件路径 | |
| userlist_deny=YES | NO | YES拒绝列表用户登录,NO只允许列表用户登录 |
修改完成后保存退出,并重启vsftpd服务使配置生效:
systemctl restart vsftpd
创建FTP用户并设置权限
-
创建系统用户:
使用useradd命令创建新用户(如ftpuser),并设置密码:
(图片来源网络,侵删)useradd -m -d /home/ftpuser -s /sbin/nologin ftpuser passwd ftpuser
参数说明:
-m创建用户主目录,-d指定主目录路径,-s指定登录shell(/sbin/nologin禁止SSH登录)。 -
设置用户目录权限:
确保用户目录权限正确,避免因权限问题导致无法访问:chmod 755 /home/ftpuser chown ftpuser:ftpuser /home/ftpuser
-
限制用户访问(可选):
若需限制特定用户登录,可将用户名添加到/etc/vsftpd/user_list文件中(每行一个用户),并确保userlist_deny=NO。
配置防火墙和SELinux
-
防火墙设置:
开放FTP服务所需端口(主动模式21,被动模式配置的端口范围):firewall-cmd --permanent --add-service=ftp firewall-cmd --permanent --add-port=60000-61000/tcp firewall-cmd --reload
-
SELinux配置:
若SELinux处于 enforcing 模式,需设置允许FTP访问:setsebool -P ftpd_full_access on semanage port -a -t ftp_port_t -p tcp 60000-61000
测试FTP服务器
-
使用命令行测试:
在本地或另一台电脑上执行:ftp 服务器IP地址
输入用户名和密码,若能成功登录并执行文件传输命令(如
put、get),则说明搭建成功。 -
使用图形化工具测试:
推荐使用FileZilla等FTP客户端,输入服务器IP、用户名、密码及端口(默认21),连接后检查文件传输功能。
安全优化建议
- 禁用匿名登录:确保
anonymous_enable=NO,防止恶意用户上传或下载文件。 - 启用日志审计:配置
xferlog_enable=YES和xferlog_file=/var/log/xferlog,记录文件传输日志。 - 限制传输速率:在配置文件中添加
local_max_rate=102400(单位:字节/秒),限制用户上传/下载速度。 - 定期更新:及时更新vsftpd软件包,修复安全漏洞。
通过以上步骤,即可在Linux系统中成功搭建一个安全、稳定的FTP服务器,根据实际需求,可进一步调整配置参数或结合其他工具(如SSL/TLS加密)增强安全性。
相关问答FAQs
Q1: 如何解决FTP客户端连接时提示“530 Login incorrect”错误?
A: 此错误通常由以下原因导致:
- 用户名或密码错误:确认输入的凭据正确,并检查用户是否被锁定(
passwd -S username查看状态)。 - 用户列表限制:检查
/etc/vsftpd/user_list和/etc/vsftpd/ftpusers文件,确认用户是否被禁止登录。 - SELinux或防火墙拦截:执行
getsebool -a | grep ftpd检查SELinux策略,或使用systemctl stop firewalld临时关闭防火墙测试。 - 配置文件错误:确保
local_enable=YES且用户目录权限正确(755)。
Q2: 如何实现FTP服务器的文件传输加密(SSL/TLS)?
A: 可通过以下步骤配置SSL/TLS加密:
- 生成证书文件:使用OpenSSL创建自签名证书(生产环境建议购买CA证书):
openssl req -new -x509 -days 365 -nodes -out vsftpd.pem -keyout vsftpd.pem
- 将证书文件移动到指定目录(如
/etc/vsftpd/ssl):mkdir /etc/vsftpd/ssl mv vsftpd.pem /etc/vsftpd/ssl/
- 修改vsftpd配置文件,启用SSL支持:
ssl_enable=YES allow_anon_ssl=NO force_local_data_ssl=YES force_local_logins_ssl=YES ssl_tlsv1=YES ssl_sslv2=NO ssl_sslv3=NO rsa_cert_file=/etc/vsftpd/ssl/vsftpd.pem
- 重启vsftpd服务,并在客户端选择“使用显式FTP over SSL(FTPES)”模式连接。
