ubuntu16.04 最新vsftpd搭建完整教程(原创2017.09.18)

最近在ubuntu下搭建了一个ftp服务器。第一次搭建有各种各样的问题。
有访问限制,有登录超时等等,而网上的教材总会有一些出入,
甚至好几份教材拼凑起来才能算是完整,
在经历各种磕磕碰碰之后终于搭建成功。
希望通过这篇博文,让广大入门队友少走弯路
本文有以下几点内容,如没有需要的可以到别的地方再看看。(节约朋友们的时间)
本教程的的ftp目录为apache2的目录(/var/www)
ubuntu
1:vsftpd搭建(包括阿里云ecs的部分特性)
2:vsftpd用户限制(主要是对用户登录ftp和登录shell的控制)
3:ftp链接成功后访问上级目录的限制(主要是对文件目录权限的控制)

正题:以上面三部分阐述
    vsftpd版本:3.03
1:
    vsftpd搭建
    //更新ubuntu deb包
    sudo apt-get update
    //安装vsftpd
    sudo apt-get install -y vsftpd
    //测试监听端口(注:阿里云ecs专有网络需要设置安全组规则,21端口入方向,否则即使端口处于监听状态外网也无法访问)
    sudo netstat -natp | grep 21
    //修改vsftpd.conf配置
    sudo vim /etc/vsftpd.conf

        配置修改:
            anonymous_enable=NO//允许匿名用户登录,默认3.03为NO。不需要修改,如果为YES,修改为NO
            local_enable=YES    

            write_enable=YES //写权限,去掉前面的#

            chroot_local_user=NO //配合下面这条命令使用,即在chroot_list_file知道文件中的用户不可访问上级目录

            chroot_list_enable=YES //限制用户读取上级目录

            chroot_list_file=/etc/vsftpd.chroot_list //限制用户文件,文件名称可自己修改

            //以下三条命令是开启被动模式的命令
            pasv_enable=YES //开启被动模式

            pasv_min_port=20000 //被动模式最小端口
                                注:这两个端口可自己设置大小,如果在阿里云ecs专有网络,需要设置安全组 20000/20500 入方向开启规则(否则外网无法通过这些端口访问)
            pasv_max_port=20500 //被动模式最大端口

        修改完毕,保存退出vim编辑器
        这个时候我们已经完成了一部分,也是网上的资料中大部分的内容了
2:ftp用户限制
    第一部分完成的朋友到这应该已经有一个大概的思路啦。(上边有注释)
    没错,就是创建我们的ftp账号,以及加入权限
    创建用户
        命令1:sudo useradd -s /usr/sbin/nologin ftpuser   (用户名可以自己定义)
            /usr/sbin/nologin  为拒绝用户登录shell
            如果ftp目录不是apache2的目录。可以直接再创建用户时设置目录
            (sudo useradd -d 你的目录 -s /usr/sbin/nologin ftpuser)
            (注意)/usr/sbin/nologin 这一段。在不同的服务器中可能不同。有可能是/bin/nologin
            可以使用sudo vim /usr/sbin/nologin 命令查看。如果有内容,那久是这个了
            还需要查看一下 /etc/shells 中是否有该命令 没有则在最后添加上 /usr/sbin/nologin (/bin/nologin)

        命令2:sudo passwd ftpuser
            连续输入两次密码即可。会有successful提示成功

    用户创建成功后。
        命令3:sudo vim /etc/passwd
        打开文件后找到自己的ftpuser那一行
        ftpuser:x:1002:1004::/var/www:/usr/sbin/nologin
        中间/var/www这一块就是最终的ftp被限制的目录(根据你的目录自己修改一下)

        用户创建完成还差最后一步:把用户加入到ftp的限制目录中(我这里是vsftpd.chroot_list),这样才会生效
        命令4:sudo vim /etc/vsftpd.chroot_list
            第一行写上ftpuser(你创建的ftp用户名)
        命令5:sudo vim /etc/ftpusers
            这个文件是ftp的黑名单。如果你的用户在这个名单中,是不能登录ftp的。如果有,则删除该文件中你的用户名,如果没有直接退出。


    3:ftp链接成功后访问上级目录的限制
        重头戏来了。
        在没有误操作的情况下
        有一些朋友不加chroot可以正常连接ftp,但是上级目录可以访问,
        有一些则是加上chroot,进入时直接就是 500 illegal port command
        很多教材都会让你去修改主动连接被动连接,然而实际测试是现在的vsftpd只要设置了上述命令中关于被动连接的3条命令就完全没问题了。
        这个时候你再修改或添加一些别的命令反而会有227等错误的出现,甚至是端口都打不开了。(配置文件错误)
        其实这个时候是到了修改目录权限的时候了。

        当ftp目录是apache2的www目录时,不可以修改www目录的所有者和用户组,这样会导致apache不解析www下的文件
        这个时候一招漂亮的曲线救国
            chmod -R 777 /var/www    修改www目录以及其下所有子目录权限为777,
            这个时候我的ftpuser用户也可以修改这些文件了,(即可以对这些目录增删改查了),而且还不影响apache的正常工作

            最后一条命令。
                因为此时的www目录或者你自己设置的目录。本身以及其下的子目录都是777权限,所以,你的用户可以访问到上级目录,即脱离限制
                所以需要给顶级目录修改权限
                chmod 775 /var/www  //将www或者你的目录权限修改为其他用户只读目录,变相的就修改了ftpuser(或你设置的用户)对该目录的权限,则限制成功。

        service vsftpd restart //重启ftp服务
        netstat -natp | grep 21 //查看端口监听状态,如果没有问题,就可以登录ftp了。 


写的第一篇博文,谢谢大家看到这里,有错误的或者有问题不明白的联系我
  wx:goodatfor     
  昵称:向久 
  联系我时备注哦
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值