vsftpd安装需按发行版选择命令:debian/ubuntu用apt-get install vsftpd,centos/rhel 7+用yum install -y vsftpd或dnf install -y vsftpd;预装环境应先用vsftpd -v验证版本,避免重复安装引发冲突。

vsftpd 安装命令因发行版不同必须选对
Debian/Ubuntu 用 apt-get install vsftpd,CentOS/RHEL 7+ 必须用 yum install -y vsftpd 或 dnf install -y vsftpd。混用会导致包管理器报错或安装不全。轻量应用服务器(如阿里云)可能已预装,执行 vsftpd -v 查版本,返回类似 vsftpd: version 3.0.2 就别重复安装,否则可能触发服务冲突。
/etc/vsftpd.conf 关键配置项不能只改一行
只开 local_enable=YES 而不配 write_enable=YES,用户能登录但无法上传;只设 chroot_local_user=YES 却没关 seccomp_sandbox=NO(某些新版 vsftpd 默认启用),会导致 chroot 失败并报 500 错误。真实生效的最小安全组合是:
anonymous_enable=NOlocal_enable=YESwrite_enable=YESchroot_local_user=YES-
allow_writeable_chroot=YES(当用户主目录权限为 755 或更宽松时必需) -
seccomp_sandbox=NO(CentOS 8+/RHEL 8+ 环境下常见坑)
改完必须用 systemctl restart vsftpd 生效,systemctl status vsftpd 查看是否报 “Failed to start vsftpd.service” 类错误。
FTP 连不上?先盯住防火墙和 SELinux 两个开关
默认端口 21 被拦是最常见原因。CentOS 7+ 必须运行:
firewall-cmd --permanent --add-port=21/tcpfirewall-cmd --reload
仅放行 21 不够——被动模式还要开数据端口段。在 /etc/vsftpd.conf 加:
pasv_enable=YESpasv_min_port=40000pasv_max_port=40100
然后同步开放该端口范围:firewall-cmd --permanent --add-port=40000-40100/tcp。SELinux 更隐蔽:临时关闭用 setenforce 0 测试,若恢复连接,说明需永久设 SELINUX=disabled 或启用布尔值:setsebool -P ftp_home_dir on 和 setsebool -P allow_ftpd_full_access on。
用户登录失败报 530 或 503?检查 /etc/vsftpd/ftpusers 和 user_list
/etc/vsftpd/ftpusers 是黑名单,root、bin、daemon 等系统用户默认在里面,哪怕你用 useradd 新建了用户,只要名字出现在此文件,就直接拒绝登录。而 /etc/vsftpd/user_list 的作用取决于配置里 userlist_enable 和 userlist_deny 的组合——默认是白名单模式(userlist_deny=NO),意味着只有列在此文件里的用户才被允许登录。最稳妥做法是:清空 /etc/vsftpd/ftpusers(保留 root 行即可),把你要用的用户名加到 /etc/vsftpd/user_list,再确认配置中 userlist_enable=YES 且 userlist_deny=NO。
主动/被动模式切换、PASV 端口范围、SELinux 布尔值、ftpusers 黑名单 —— 这四点任何一个漏掉,都会让 FTP 在看似配置正确的情况下静默失败。调试时别只盯着 vsftpd.conf,得一起查 journalctl -u vsftpd -n 50 输出的实际报错。











