Ubuntu 16.04 LTS下vsftpd安装及文件无法检索问题求助
连接成功但无法检索文件的排查方案
连接能建立但看不到文件,通常是权限、配置或网络策略的问题,按下面的步骤逐一排查:
1. 目录与文件权限检查
这是最常见的原因!确保你用来登录FTP的用户对目标目录有读权限,文件至少有读权限。比如你的FTP用户是ftpuser,文件存储在/home/ftpuser/ftp_files,执行以下命令修复权限:
sudo chmod -R 755 /home/ftpuser/ftp_files sudo chown -R ftpuser:ftpuser /home/ftpuser/ftp_files
如果是匿名用户访问,默认目录是/srv/ftp,也要确保这个目录对其他用户有读权限:
sudo chmod 755 /srv/ftp
2. 检查vsftpd核心配置
打开/etc/vsftpd.conf配置文件,重点核对以下参数:
local_enable=YES:如果是本地用户登录,必须设为YES,允许本地用户访问FTP。list_enable=YES:这个参数控制是否允许列出目录内容,要是被改成NO,肯定看不到任何文件。pasv_enable=YES:大部分FTP客户端默认用被动模式,关闭这个会导致目录列表加载失败。同时建议指定被动端口范围,避免端口随机带来的问题:pasv_min_port=40000 pasv_max_port=50000anonymous_enable=NO:如果用本地用户登录,建议关闭匿名访问,避免权限冲突。
修改完配置后,一定要重启vsftpd生效:
sudo systemctl restart vsftpd
3. 防火墙端口开放
Ubuntu 16.04默认用ufw防火墙,FTP主动模式需要开放21端口,被动模式要开放你配置的端口范围:
sudo ufw allow 21/tcp sudo ufw allow 40000:50000/tcp sudo ufw reload
4. AppArmor权限限制排查
Ubuntu默认启用AppArmor,可能会阻止vsftpd访问自定义目录。可以先临时关闭AppArmor测试:
sudo systemctl stop apparmor
如果关闭后能看到文件,说明是AppArmor的问题。编辑/etc/apparmor.d/usr.sbin.vsftpd,添加你的文件目录规则:
/home/ftpuser/ftp_files/** r,
然后重启AppArmor和vsftpd:
sudo systemctl start apparmor sudo systemctl restart vsftpd
内容的提问来源于stack exchange,提问作者Roufail




