在Linux系统中配置FTP服务器是许多企业和个人用户的需求,它能够方便地在不同系统间传输文件,本文将详细介绍如何在Linux系统中使用vsftpd(Very Secure FTP Daemon)配置一个安全、高效的FTP服务器,包括安装、配置、用户管理及安全设置等关键步骤。

安装vsftpd
vsftpd是一款轻量级、安全的FTP服务器软件,适用于大多数Linux发行版,以CentOS和Ubuntu为例,安装步骤略有不同。
对于CentOS/RHEL系统:
使用yum包管理器进行安装,命令如下:
sudo yum install vsftpd -y
安装完成后,启动vsftpd服务并设置开机自启:
sudo systemctl start vsftpd sudo systemctl enable vsftpd
对于Ubuntu/Debian系统:
使用apt包管理器安装,命令如下:
sudo apt update sudo apt install vsftpd -y
启动并启用服务:
sudo systemctl start vsftpd sudo systemctl enable vsftpd
主配置文件解析
vsftpd的主配置文件位于/etc/vsftpd/vsftpd.conf,以下是关键参数的说明及推荐配置:
| 参数 | 默认值 | 推荐值 | 说明 |
|---|---|---|---|
| anonymous_enable | YES | NO | 是否允许匿名用户访问 |
| local_enable | NO | YES | 是否允许本地用户访问 |
| write_enable | NO | YES | 是否允许文件写入 |
| chroot_local_user | NO | YES | 是否限制本地用户访问其主目录 |
| allow_writeable_chroot | YES | NO | 是否允许chroot目录可写(需配合chroot_local_user) |
| pasv_min_port | 0 | 10020 | 被动模式最小端口 |
| pasv_max_port | 0 | 10220 | 被动模式最大端口 |
安全配置建议:

- 禁用匿名访问:
anonymous_enable=NO - 启用本地用户隔离:
chroot_local_user=YES - 限制用户访问:在
/etc/vsftpd/chroot_list文件中添加用户名,实现白名单控制。
修改配置文件后,需重启vsftpd服务使配置生效:
sudo systemctl restart vsftpd
用户与权限管理
创建FTP专用用户
为安全起见,建议创建独立的FTP用户,避免使用系统用户,创建用户ftpuser并设置家目录:
sudo useradd -m -d /home/ftpuser -s /sbin/nologin ftpuser sudo passwd ftpuser
其中-s /sbin/nologin禁止用户通过SSH登录系统。
设置文件权限
确保FTP用户对其主目录有读写权限,但需注意避免权限过于宽松,推荐设置:
sudo chmod 755 /home/ftpuser sudo chown ftpuser:ftpuser /home/ftpuser
限制用户访问范围
通过chroot功能,可将用户限制在其主目录内,若需允许特定用户突破限制,可在/etc/vsftpd/chroot_list中添加用户名,并设置chroot_list_enable=YES。
防火墙与SELinux配置
防火墙设置
默认情况下,FTP使用21端口(控制端口)和被动模式的数据端口(如10020-10220),需在防火墙中开放这些端口:
sudo firewall-cmd --permanent --add-port=21/tcp sudo firewall-cmd --permanent --add-port=10020-10220/tcp sudo firewall-cmd --reload
SELinux配置(如启用)
若系统启用SELinux,需为vsftpd添加布尔值规则:

sudo setsebool -P ftpd_full_access on
常见问题排查
- 连接超时或被拒绝:检查防火墙、SELinux配置,确认
vsftpd.conf中pasv_address是否设置为服务器IP。 - 用户无法上传文件:验证
write_enable=YES及目录权限,确保用户对目标目录有写权限。
FAQs
Q1: 如何实现FTP服务器的SSL/TLS加密?
A1: 可通过配置vsftpd支持FTPS(FTP over SSL/TLS),首先安装vsftpd的SSL依赖(如openssl),然后在vsftpd.conf中添加以下参数:
ssl_enable=YES allow_anon_ssl=NO force_local_data_ssl=YES force_local_logins_ssl=YES ssl_tlsv1_2=YES
生成SSL证书并指定路径:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem
重启服务后,客户端需启用“隐式SSL”或“显式SSL”连接。
Q2: 如何限制FTP用户的访问时间或速度?
A2:
- 访问时间限制:可通过
/etc/vsftpd/ftpusers或/etc/vsftpd/user_list文件控制用户登录,但需配合PAM模块实现更精细的时间策略(如pam_time.so)。 - 传输速度限制:在
vsftpd.conf中添加local_max_rate=102400(单位:字节/秒),限制用户最大传输速率为100KB/s,重启服务后生效。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/77304.html