美文网首页日常爬坑集锦
vsftpd无法访问、读取不了目录(mac)

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

作者: 二妹是只猫 | 来源:发表于2019-02-28 13:40 被阅读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,无法进行接下来的步骤
    • setenforce 0 #暂时让SELinux进入Permissive模式
    • 运行getsebool -a | grep ftpd
    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
    • 如上图所示:编辑 vim /etc/vsftpd/vsftpd.conf文件,先设置pasv_enable=YES可被动连接,如何设置被动端口范围pasv_max_port \pasv_min_port,设置这一步是因为有可能我们连接的时候使用了被动连接。(FTP有两种工作方式:PORT FTP(主动模式)和PASV FTP(被动模式)。主动连接:ftp_data_port=20设置在PORT方式下,FTP数据连接使用的端口,默认值为20,注意:主动连接时要注意不要填错了
    • 去iptables打开我们设置的端口,命令:vim /etc/sysconfig/iptables
      iptables.jpg
      这里看到我们放开了8080、80、21等端口,在将我们刚刚设置的端口放开。(有可能你cd 到/etc/sysconfig中却没有iptables这个文件,不要慌随便添加一个策略就出来了,具体方法百度一下,我这就不写了)。到这里终于把问题解决了。

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

    • 首先打开服务器实例列表进入到本实例安全组并点击配置规则
      实例.jpg
    • 进入到了安全组后,1:点击添加安全组规则,2:设置我们刚刚在vsftpd设置的端口(我的是61001/62000,3处填写0.0.0.0/0就可以了。
      安全组.jpg

    在多说两句:

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

    相关文章

      网友评论

        本文标题:vsftpd无法访问、读取不了目录(mac)

        本文链接:https://www.haomeiwen.com/subject/ynkhuqtx.html