在Linux系统中配置FTP服务器通常使用vsftpd(Very Secure FTP Daemon),这是一款轻量级、高性能且安全的FTP服务软件,以下是详细的配置步骤和注意事项,帮助您快速搭建并管理FTP服务器。

安装vsftpd
确保您的Linux系统已连接到互联网,然后使用包管理器安装vsftpd,以Ubuntu/Debian系统为例,执行以下命令:
sudo apt update sudo apt install vsftpd
对于CentOS/RHEL系统,使用以下命令:
sudo yum install vsftpd
安装完成后,vsftpd服务会自动启动,可以通过sudo systemctl status vsftpd检查服务状态。
配置vsftpd
vsftpd的主配置文件位于/etc/vsftpd.conf,建议先备份原配置文件:

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
然后使用sudo nano /etc/vsftpd.conf打开配置文件,根据需求修改以下关键参数:
| 参数 | 默认值 | 推荐值 | 说明 |
|---|---|---|---|
| anonymous_enable | YES | NO | 是否允许匿名访问,建议关闭以提高安全性 |
| local_enable | NO | YES | 是否允许本地用户登录 |
| write_enable | NO | YES | 是否允许用户上传文件 |
| chroot_local_user | NO | YES | 是否将用户限制在其主目录 |
| allow_writeable_chroot | NO | YES | 配合chroot_local_user使用,允许写入权限 |
| pasv_enable | NO | YES | 启用被动模式,适用于防火墙环境 |
| pasv_min_port | 0 | 60000 | 被动模式最小端口 |
| pasv_max_port | 0 | 60100 | 被动模式最大端口 |
| user_sub_token | $USER | $USER | 动态生成用户目录的标识符 |
| local_root | /home/$USER | /home/$USER | 本地用户的主目录路径 |
修改完成后,保存文件并重启vsftpd服务:
sudo systemctl restart vsftpd
创建FTP用户
建议为FTP服务创建专用的系统用户,避免直接使用root或普通用户,创建一个名为ftpuser的用户,并设置其主目录为/home/ftpuser:
sudo useradd -m -d /home/ftpuser -s /sbin/nologin ftpuser sudo passwd ftpuser # 设置用户密码
参数说明:
-m:自动创建用户主目录-d:指定用户主目录-s /sbin/nologin:禁止用户通过SSH登录,仅允许FTP访问
配置防火墙和SELinux
防火墙配置
若使用UFW(Ubuntu)或firewalld(CentOS),需开放FTP相关端口:
- Ubuntu/Debian:
sudo ufw allow 20/tcp sudo ufw allow 21/tcp sudo ufw allow 60000:60100/tcp # 被动模式端口范围 sudo ufw reload
- CentOS/RHEL:
sudo firewall-cmd --permanent --add-port=20/tcp sudo firewall-cmd --permanent --add-port=21/tcp sudo firewall-cmd --permanent --add-port=60000-60100/tcp sudo firewall-cmd --reload
SELinux配置(CentOS/RSEL)
若系统启用SELinux,需执行以下命令允许FTP访问用户目录:
sudo setsebool -P ftpd_full_access on
测试FTP服务
使用FTP客户端工具(如FileZilla)或命令行测试连接:
ftp localhost
输入用户名和密码后,若能成功登录并上传/下载文件,则配置成功。
常见问题解决
- 用户无法登录:检查
/etc/vsftpd.conf中的local_enable和write_enable是否设置为YES,确认用户密码是否正确。 - 被动模式连接失败:确保防火墙已开放被动模式端口范围(如60000-60100),并在客户端配置中启用被动模式。
相关问答FAQs
Q1: 如何限制FTP用户只能访问其主目录,不能切换到其他目录?
A1: 在vsftpd.conf中设置chroot_local_user=YES,并确保allow_writeable_chroot=YES(对于vsftpd 3.2.0及以上版本),若用户仍能跳出目录,检查用户主目录的权限是否正确(所有者应为root或ftp用户,组为其他用户无写权限)。
Q2: 如何配置匿名用户只允许下载,不允许上传?
A2: 在vsftpd.conf中设置anonymous_enable=YES,同时添加以下参数:
anon_upload_enable=NO anon_mkdir_write_enable=NO anon_world_readable_only=YES # 仅允许匿名用户下载可读文件
重启vsftpd服务后,匿名用户即可访问服务器,但无法上传或创建目录。
