vsftpd

作者: _narcissus | 来源:发表于2019-05-09 18:54 被阅读0次

    为什么要安装vsftpd

    同一局域网内,没有网络也可以传输文件
    
    不需要U盘
    
    速度超快
    
    安全稳定
    

    概念:

    ftp是一种文件传输协议,基于这种协议的有许多ftp软件。ftp软件分为服务器:vsftpd 端和客户端:ftp
    
    ftp使用的端口默认有20,21。所以要保证这两个端口没有被防火墙拦截,而且没有被其他软件占用
    20端口用来传输数据
    21端口用来服务器与客户端之间传输指令
    

    简单安装使用

    我安装的是vsftpd

    yum install vsftpd -y
    

    启动vsftpd服务

    service vsftpd start
    

    查看服务器ip

    ip a
    

    现在只要在局域网内,就可以通过浏览器访问了

    浏览器输入:ftp://ip
    

    如果你访问不了,那么先临时将防火墙关闭

    service iptables stop
    service firewalld stop
    

    可以看到这里有个文件夹:pub,这个pub在服务器的那个位置?

    查看这个pub在位置

    find / -name pub
    
    可以看到位置在:/var/pub
    

    以后我们就可以将需要共享的文件放入这里,其他电脑就可以下载了


    禁止匿名用户访问,指定用户访问

    以上是简单的配置,接下来就进行个性化配置

    这样设置之后我们发现其它人只要在局域网内都可以访问,是不安全的,所以我们想指定用户去访问(输入用户名和密码)

    大部分配置文件都在 /etc/vsftpd/vsftpd.conf 这个文件中

    anonymous_enable=NO     #禁止匿名用户访问
    
    anon_upload_enable=NO   #禁止匿名用户上传
    
    anon_mkdir_write_enable=NO  #取消匿名写入权限
    
    local_enable=YES    #允许本地用户登录,也就是说只要是服务器端的用户都可以访问(包含root和/home下的user)
    
    write_enable=YES    #给用户写入权限
    

    这样设置之后可能使用用户和密码仍然访问不了,所以就需要了解 /etc/vsftpd 下面其他的两个配置文件的作用了

    ftpusers    #这里设置黑名单 加入这里的用户都无法访问
    
    user_list   #控制配置,这个既可以是黑名单,也可以是白名单
    
    当vsftpd.conf中 userlist_enable=YES 时,为黑名单,加入这里的用户无法访问
    当vsftpd.conf中 userlist_enable=NO 时,为白名单,加入这里的用户才能访问
    
    

    所以我们需要在 vsftpd.conf 中将 userlist_enable设为 NO

    userlist_enable=NO
    

    同时在 user_list 中加入可以访问的用户名

    以及确保 ftpusers 中没需要访问的用户名


    优化

    开启被动模式

    vsftpd默认是主动模式,也就是说数据连接的请求是由服务器发起的,由于防火墙的原因,这个连接请求可能被防火墙过滤掉了。所以才有了被动模式,被动模式中连接请求是有客户端发起的,而服务器端配置了允许固定范围ip的请求,这样保证了连接的正常。

    vsftpd.conf 中添加

    pasv_enable=YES
    pasv_min_port=30000
    pasv_max_port=30999
    

    这样服务器端就算配置好了。但是还没有完,这个pasv模式还需要客户端发送一条命令

    其实在这之前一直都没有涉及到真正的客户端,只是使用浏览器访问了一个地址而已,真正使用客户端,是使用命令 ftp 服务器ip

    ftp ip      #然后输入用户名,密码来访问
    
    passive     #开启被动模式
    

    ftp客户端使用

    vsftpd安装时默认就已经创建了一个匿名用户 ftp ,所以我们可以只输入用户名,不输入密码登录ftp

    ftp ip      #登录
    ftp     #输入用户名
    

    当然了,在我们禁止匿名用户之后就需要使用设置的用户去登录了

    ftp 用户名:密码@ip
    
    help    #查看所有命令
    
    put     #上传
    
    get     #下载
    
    mkdir   #创建文件夹
    
    pwd     #查看当前目录
    
    ls      #列出目录下的文件
    

    在命令前面加上 l 表示在本机操作(local)

    lcd     #本机目录中移动
    
    lpwd        #本机当前目录
    

    错误解决

    如果用户登录后创建文件夹出现:550 Create directory operation failed错误

    vim /etc/selinux/config
    
    SELINUX=disabled
    

    开心啊

    老师让我讲linux上的vsftpd,我在archlinux上照着教程做,发现在浏览器中始终无法访问ftp服务器,都差点崩溃了。明明是照着教程做的,为什么就是不行呢。后来我终于放弃了,转到centos下面去弄,照着教程,慢慢配置,发现也没差啊,最后我差点怀疑是archlinux有问题。确实,它和大多数教程上的都不一样,安装完成之后就只有一个配置文件 /etc/vsftpd.conf 你说气不气。

    不过坚持的人总有回报,今天google到了这个错误的原因,那就是这是archlinux上的一个bug,所以不能怪我咯

    错误如下:

    500 OOPS: 421 Service not available, remote server has closed connection
    

    解决办法:在 /etc/vsftpd.conf 中添加一行配置

    seccomp_sandbox=NO
    

    然后重启一下vsftp服务就好了

    sudo systemctl restart vsftpd
    

    那么什么是seccomp?维基百科这么解释的:

    seccomp(安全计算模式的简称)是Linux内核的计算机安全功能。它被集成到2.6.12版本的主Linux内核分支中,该分支于2005年3月8日发布1。
    

    而vsftpd在版本3.0.0之后就开始使用它了,这就是bug产生的原因?


    学这个vsftpd的过程真的相当艰难

    我想如果我一开始就在centos上面来安装的话,那么就不会有这么多的问题了

    首先我觉得很疑惑的是ftp不是一个协议吗,为什么我电脑上输入ftp竟然进入了交互模式?

    ftp同时也是ftp传输协议的一个客户端,取的名字相同而已
    

    然后是我明明安装的是vsftpd为什么可以启动ftpd这个服务?它和vsftpd有什么关系

    安装gnome时默认就安装了一个组件 inetutils ,而它就包含了这个tftp,没错,它叫tftp也是一个ftp的server
    

    然后就是遇到了那个让人脑壳疼的bug

    疑问?

    1.作为日常使用,你觉得有必要设置个账号密码登录吗?

    我觉得是没这个必要的,怎么简单怎么来
    

    2.如果你需要给别人分享一个很大的软件,你觉得有必要将那个软件复制到默认的 /ser/ftp 或者 /var/ftp 下吗?

    没这个必要,需要分享那个软件,就将那个软件所在的目录设置为别人访问的目录就好了
    

    设置也很简单,修改 vsftpd.conf文件

    anon_root=要分享软件所在目录路径
    

    例如我要分享我家目录下的Downloads文件夹下的东西,就这么设置

    anon_root=/home/narcissus/Downloads/
    

    设置好了之后启动vsftpd服务

    sudo systemctl start vsftpd     #archlinux命令
    

    或者

    sudo service vsftpd start       #centos命令
    

    最后我们来看一下,它到底能有多快,同一局域网下的测试,下载一个2.7GB的文件,平均速度为100M/s

    相关文章

      网友评论

        本文标题:vsftpd

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