Linux安装FTP服务器,新手如何快速配置与安全设置?
- 云服务器
- 2026-01-07
- 6
在Linux系统中安装FTP服务器是许多企业和个人用户的需求,FTP(文件传输协议)用于在客户端和服务器之间传输文件,适用于网站维护、文件共享等场景,本文将以CentOS 7和Ubuntu 20.04为例,详细讲解如何安装、配置和安全管理FTP服务器,涵盖vsftpd(very secure FTP daemon)的安装步骤、配置文件修改、用户权限控制、防火墙设置以及常见问题解决方法。
安装前的准备工作
在开始安装FTP服务器之前,需要确保系统已更新至最新状态,并确认网络连接正常,对于CentOS系统,使用yum或dnf命令更新系统;对于Ubuntu系统,则使用apt命令,在CentOS 7中执行sudo yum update y,在Ubuntu 20.04中执行sudo apt update && sudo apt upgrade y,建议为FTP服务创建一个独立的系统用户,避免使用root用户运行FTP服务,以提高安全性,可以通过sudo useradd m s /sbin/nologin ftpuser命令创建用户,其中m表示创建用户目录,s /sbin/nologin限制该用户无法通过SSH登录系统。
安装vsftpd服务
vsftpd是Linux系统中常用的FTP服务器软件,以其高安全性和稳定性著称,安装过程因Linux发行版而异,以下是两种主流系统的安装方法:
CentOS 7系统安装
在CentOS 7中,使用yum包管理器安装vsftpd,执行以下命令:
sudo yum install vsftpd y
安装完成后,启动vsftpd服务并设置开机自启:
sudo systemctl start vsftpd sudo systemctl enable vsftpd
通过systemctl status vsftpd命令检查服务状态,确保服务已正常运行。
Ubuntu 20.04系统安装
在Ubuntu 20.04中,使用apt包管理器安装vsftpd,执行以下命令:
sudo apt update sudo apt install vsftpd y
安装完成后,启动vsftpd服务并设置开机自启:

同样,通过systemctl status vsftpd命令验证服务状态。
配置vsftpd服务器
vsftpd的配置文件位于/etc/vsftpd/vsftpd.conf,默认配置可能无法满足实际需求,因此需要手动修改关键参数,以下是常用配置项及其说明:
| 配置项 | 默认值 | 推荐值 | 说明 |
|---|---|---|---|
| anonymous_enable | YES | NO | 是否允许匿名用户访问,建议关闭以提高安全性 |
| local_enable | NO | YES | 是否允许本地用户登录FTP |
| write_enable | NO | YES | 是否允许用户上传文件 |
| chroot_local_user | NO | YES | 是否将用户限制在其主目录中 |
| allow_writeable_chroot | YES | NO | 是否允许chroot目录可写,需配合chroot_local_user使用 |
| pasv_enable | NO | YES | 是否启用被动模式,适用于客户端防火墙环境 |
| pasv_min_port | 0 | 10000 | 被动模式最小端口 |
| pasv_max_port | 0 | 10100 | 被动模式最大端口 |
修改配置文件时,建议先备份原始文件:
sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
然后使用vim或nano编辑器打开配置文件,根据需求调整参数,限制用户访问目录并启用被动模式:
sudo vim /etc/vsftpd/vsftpd.conf
在文件中找到或添加以下内容:
保存文件后,重启vsftpd服务使配置生效:
sudo systemctl restart vsftpd
配置防火墙和SELinux
防火墙配置
Linux系统默认启用防火墙,需要开放FTP服务的相关端口,CentOS 7使用firewalld,Ubuntu 20.04使用ufw。
-
CentOS 7:
sudo firewallcmd permanent addservice=ftp sudo firewallcmd permanent addport=1000010100/tcp sudo firewallcmd reload -
Ubuntu 20.04:
sudo ufw allow 21/tcp sudo ufw allow 10000:10100/tcp sudo ufw reload
SELinux配置(仅CentOS)
如果系统启用了SELinux,需要设置FTP相关的布尔值:
sudo setsebool P ftpd_full_access on
通过sestatus命令检查SELinux状态,确保配置已生效。

创建FTP用户并设置权限
为FTP服务创建专用用户,并设置其主目录和文件权限,创建用户ftpuser并设置密码:
sudo useradd m d /home/ftpuser s /sbin/nologin ftpuser sudo passwd ftpuser
如果需要允许用户上传文件,需确保其主目录具有正确的权限:
sudo chmod 755 /home/ftpuser sudo chown ftpuser:ftpuser /home/ftpuser
测试FTP服务器
使用FTP客户端工具(如FileZilla)或命令行测试连接,在命令行中执行:
ftp localhost
输入用户名和密码后,如果能成功登录并列出文件,说明FTP服务器配置正确,如果使用被动模式,需确保客户端防火墙允许1000010100端口的连接。
常见问题解决
- 无法登录FTP服务器:检查用户名、密码是否正确,确认local_enable和write_enable已启用,并查看/var/log/vsftpd.log日志文件排查错误。
- 被动模式连接失败:确认防火墙已开放pasv_min_port和pasv_max_port定义的端口范围,检查客户端是否启用了被动模式。
相关问答FAQs
问题1:如何限制FTP用户只能访问指定目录?
解答:可以通过配置chroot_local_user=YES将用户限制在其主目录中,或使用user_sub_token和local_root参数为不同用户指定不同的目录,在vsftpd.conf中添加:
user_sub_token=$USER local_root=/home/ftpusers/$USER
然后为每个用户创建对应的目录并设置权限。
问题2:如何启用FTP服务器的SSL/TLS加密?
解答:首先生成SSL证书文件(如vsftpd.pem),然后在vsftpd.conf中启用以下参数:
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/vsftpd.pem),重启vsftpd服务即可启用加密传输。
