You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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=50000
    
  • anonymous_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

火山引擎 最新活动