• 检查VSFTP是否安装

 #rpm -qa | grep vsftpd

    vsftpd-2.2.2-24.el6.x86_64

    有打印说明已安装,反之说明没有安装

  • 安装vsftpd

  yum install -y vsftpd

    根据提示输入y安装完成

  • 设置ftp根目录

在/home/fptroot下面新建ftp根目录 mkdir /home/ftproot

  • 测试用户ftptest

为防止账户已存在,先删除测试账号userdel ftptest

    adduser -d /home/ftproot/ftptest -g ftp -s /sbin/nologin ftptest 

    #// -s /sbin/nologin表示让其不能登陆系统,-d指定用户目录为/home/ftptest,也就是默认访问的目录

  • 设置密码

 passwd ftptest 回车

    根据提示输入密码,具体如下:

     更改用户 ftptest 的密码 。

     新的 密码:
     无效的密码: 过于简单化/系统化
     无效的密码: 过于简单
     重新输入新的 密码:
     passwd: 所有的身份验证令牌已经成功更新。

  • 禁用匿名访问

    anonymous_enable=no

  • 启动ftp服务

 service vsftpd start

    ftp测试工具测试

    500 OOPS: cannot change directory:/home/xxx

    解决办法:

      setsebool  ftp_home_dir  on

  • 修改ftp配置

 阻止用户访问上层目录

      vi  /etc/vsftp/vsftp.conf

      #解除注释,设置为YES默认就不能访问上层目录

      chroot_local_user=YES

      备注:当chroot_local_user=YES 时,chroot_list_file文件中写入的用户(一个一行)表示拥有切换(根路径)上级目录的权限,没写进去的用户则不具备切换(根路径)上层目录的权限;反之,当chroot_local_user=NO(默认) 时,所有用户默认都可以访问用户目录的上层路径,只有写入到chroot_list_file文件中的用户(一个一行)才禁止切换到上层路径。

      心得:上面的这个两种情况设定总是不好记,每次理解的都不是很透彻总是忘了。可以这么理解:chroot_local_user是总开关,可以是YES(禁止)本地账户切换上层目录,或者NO(默认,允许)本地账户切换上层目录。但凡事总有例外吧,那么这个chroot_list_file 就是设定例外情况的。也就是与chroot_local_user 设定的含义相反

    用户权限

      在vsftpd 2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报如下错误:

      C:\Users\liuheng.klh>ftp 192.168.125.132

      连接到 192.168.125.132。

      220 Welcome to Victo's FTP service.

用户(47.88.58.168:(none)): ftpuser
      331 Please specify the password.
      密码:
      500 OOPS: vsftpd: refusing to run with writable root inside chroot()
      500 OOPS: priv_sock_get_cmd
      远程主机关闭连接。

      解决办法
        需要做两步设定:
       <1> 在配置文件 /etc/vsftpd.conf 文件末尾添加一行: allow_writeable_chroot=YES
       <2> 注意新增用户的主目录要有写入权限(直接更改目录所属关系就可以): chown ftpuser:ftp /home/ftpuser
  • 重启vsftp服务

    service vsftpd restart

  • 设置ftp端口

    listen_port=7179

  • 主动模式
     vi /etc/vsftpd/vsftpd.conf
Port_enable=YES               开启主动模式
    Connect_from_port_20=YES      当主动模式开启的时候 是否启用默认的20端口监听
   Ftp_date_port=%portnumber%    上一选项使用NO参数是 指定数据传输端口
  • 被动模式

    vi /etc/vsftpd/vsftpd.conf

    PASV_enable=YES 开启被动模式

     PASV_min_port=11001 被动模式最低端口

     PASV_max_port=11021 被动模式最高端口

     pasv_promiscuous=YES 允许目录访问

 

  • 被动模式防火墙设置 

iptables中开放这段端口 

    service iptables start 打开防火墙 

    iptables -I INPUT  -p tcp  --dport 11001:11021  -j ACCEPT 

    iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT