日常爬坑集锦

vsftpd无法访问、读取不了目录(mac)

2019-02-28  本文已影响0人  二妹是只猫

最近在阿里云上买了个ecs来玩,结果配置好vsftpd后在终端连接成功,但使用filezilla访问报错,看日志返回服务器发回了不可路由的地址。使用服务器地址代替,连接和登录都成功,但读取不到目录,于是开始网上百度。

一、网上都是让你去对filezilla进行设置:

  1. 设置——连接——FTP——主动模式,修改为“退回到被动模式”
  2. 将【传输设置】选择为"被动"

但是很遗憾,毛用都没有。接下来就开始第二轮爬坑,并找到了新的解决思路:

二、由于防火墙对端口限制,造成访问问题:

SELinux是一个FTP服务器是CentOS的防火墙组件。由于 vsftpd 默认被 SELinux 拦截,会出现以下等问题:

226 Transfer done (but failed to open directory).(传输完成,但是打开路径失败)
550 Failed to change directory(更改路径失败)
553 Could not create file.

SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)
解决方案:

  1. 关闭SELinux简单粗暴,命令:
 sudo vim /etc/selinux/config
selinux.jpg

将selinux设置为disabled。

  1. 对防火墙策略进行设置(推荐,上面那种方式太野蛮了)
    注意:方案2要在在方案1中的selinux=able的情况下使用使用,否则会提示:getsebool: SELinux is disabled,无法进行接下来的步骤
getsebool -a | grep ftpd

#以下是显示出来的权限,off是关闭权限,on是打开权限
allow_ftpd_anon_write --> off
allow_ftpd_full_access --> off
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
ftpd_connect_db --> off
ftpd_use_passive_mode --> off
ftp_home_dir --> off

最后两项ftp_home_dirallow_ftpd_full_access必须为on 才能使vsftpd具有访问ftp根目录,以及文件传输等权限,运行命令:

setsebool -P ftp_home_dir 1
setsebool -P allow_ftpd_full_access 1

运行完了以后,我们再重新恢复SELinux进入Enforcing模式,命令:

setenforce 1

正常情况到此时就可以正常访问了,如果还不行,注意文件登录用户对该文件的权限是否时可读写。

  1. 到了此时我居然还时还不能读取,我都把连接ftp服务器上的所有者改为此时登录的账户了。当我在自己电脑上进行了上面两步设置时,我访问自己本地安装的vsftpd是没问题的,由此猜测应该时阿里云上服务器上还有什么没有设置。果然最后让我找到了问题。是没有开放对应端口设置所造成的: vsftpd_conf.jpg

其实阿里还给我们提供了更简单的方式(如果你是使用的阿里云服务器):

在多说两句:

vsftp配置时还有很多需要注意的地方(如:如添加用户列表文件,设置权限等等),但网上资料都写得不错,照着配基本都ok.

上一篇下一篇

猜你喜欢

热点阅读