推荐使用vsftpd;安装需按发行版区分命令,禁用匿名登录、启用chroot隔离、配置被动模式端口段、开放防火墙21及40000–50000端口,并创建专用nologin用户。

在 Linux 中安装配置 FTP 服务,推荐使用 vsftpd(Very Secure FTP Daemon),它轻量、稳定、安全,是 CentOS/RHEL 和多数发行版的默认选择。整个过程不复杂,但几个关键点容易出错,比如被动模式端口、用户隔离和防火墙放行。
安装 vsftpd 服务
根据系统类型执行对应命令:
-
CentOS / RHEL / AlmaLinux / Rocky Linux(8/9):
yum install -y vsftpd(RHEL 8+ 可用dnf install -y vsftpd) -
Ubuntu / Debian:
apt update && apt install -y vsftpd
安装完成后,先不要启动,先完成基础配置再启用服务。
修改核心配置文件
编辑主配置:sudo vi /etc/vsftpd/vsftpd.conf,重点调整以下几项(其余保持默认即可):
-
anonymous_enable=NO—— 禁用匿名登录(生产环境必须关闭) -
local_enable=YES—— 允许系统本地用户登录 -
write_enable=YES—— 允许上传、删除、重命名等写操作 -
chroot_local_user=YES—— 将用户限制在其主目录内(增强安全性) -
allow_writeable_chroot=YES—— 允许 chroot 目录可写(vsftpd 3.0.3+ 要求,否则启动失败) -
pasv_enable=YES—— 启用被动模式(适配大多数客户端和 NAT 环境) -
pasv_min_port=40000和pasv_max_port=50000—— 指定被动模式端口范围(便于防火墙统一放行) -
listen=YES(RHEL/CentOS 7)或listen=NO+listen_ipv6=NO(RHEL 8+ systemd 管理下建议设为 NO)
创建并配置 FTP 用户
避免使用 root 或已有登录用户,建议新建专用账户:
- 创建用户并禁用 shell 登录:
sudo useradd -m -s /usr/sbin/nologin ftpuser - 设置密码:
sudo passwd ftpuser - 确保主目录权限正确:
sudo chown ftpuser:ftpuser /home/ftpusersudo chmod 750 /home/ftpuser
如需限制用户仅能访问指定目录(非主目录),可配合 user_sub_token 和 local_root 配置,或使用虚拟用户方案(需额外配置 PAM)。
开放防火墙与启动服务
根据防火墙类型放行必要端口:
-
firewalld(主流):
sudo firewall-cmd --permanent --add-port=21/tcpsudo firewall-cmd --permanent --add-port=40000-50000/tcpsudo firewall-cmd --reload -
iptables(旧系统):
sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPTsudo iptables -A INPUT -p tcp --dport 40000:50000 -j ACCEPTsudo service iptables save
最后启动并设为开机自启:
sudo systemctl start vsftpdsudo systemctl enable vsftpd- 检查状态:
sudo systemctl status vsftpd(应显示 active (running))
若连接时提示“500 OOPS: could not bind listening IPv4 socket”,说明端口被占用或 listen 配置冲突;若登录后无法列出目录,大概率是 chroot 权限或 SELinux 未处理(CentOS 7/8 可临时用 sudo setsebool -P ftp_home_dir on 开启)。


















