FTP:(File Transfer Protocol,应用层文件传输协议) 最古老的传输协议之一,它的主要功能是在Server与Client之间使用TCP进行文件传输,ftp有两种连接:命令连接(21/TCP)和数据连接(20/TCP);其中数据连接又有两种模式:主动模式(active)和被动模式(passive),既FTP服务可以工作在主动模式(active)和被动模式(passive)两种模式,所说的主动/被动模式都是基于Server端来说的。

主动模式(active

Client用>1023(2334)的随机端口向Server的21端口发起命令连接请求,当命令连接建立完成之后,当两端需要传输数据的时候,Client通过命令通道发送一个PORT command告诉Server,我打开了另一个TCP Port做数据通道(通常这个端口是2334+1的端口,当2334+1端口被占用时,Client 查找2334+1+1的端口,以此类推直到找到Client未被使用的>1023的随机端口为止),这是Server使用TCP 20端口和Client通知的TCP端口建立数据连接,当完成TCP三次握手之后数据连接建立完成,此时就可以进行数据传送了。

被动模式(passive

Client用>1023(3334)的随机端口向Server的21端口发起命令连接请求,当命令连接建立完成之后,当两端需要传输数据的时候,Client通过命令通道发送一个PASV command给Server要求进入被动传输模式,而后Server随机选择一个未被使用>1023的TCP端口,并通过控制连接通知Client让Client使用另一个>1023且未被使用的TCP端口连接Server指定的TCP端口,当TCP三次握手完成之后数据连接建立完成,此时就可以进行数据传输了。

注:不论是主动模式还是被动模式,Client总是命令连接的发起者;当数据传输完成之后,数据连接就会断开,但命令连接一般不会立即断开

VSFTPD概述

由于ftp这个协议使用明文传输文件,为了更安全使用ftp,这是轻量级vsftpd出现的原因。

vsftpd (Very Secure FTP,非常安全的FTP)除了安全特性以外,还具有高速和稳定的特性,而且VSFTPD服务启动模式有两种:一种是vsftpd独立运行;一种是通过xinetd这个超级进程来管理的方式运行;此外vsftpd可以通过三种不同的方式来实现:

  1. 匿名用户形式:vsftpd默认就允许匿名用户以只读方式登录
  2. 本地用户形式:以vsftpd所在主机/etc/passwd中用户及密码作为认证用户的来源,这是默认配置
  3. 虚拟用户形式:vsftpd支持将用户及密码保存在本地数据文件、数据库或LDAP中。较FTP的本地用户,虚拟用户只是FTP Server 的专有用户,虚拟用户只能访问FTP Server所能提供的resources,大大增加了OS本身的安全性。与匿名用户相比,虚拟用户需要提供Account和password才能获取FTP中的资源,方便对用户多和资源的管理,鉴于主机的安全和管理FTP的方便,虚拟用户是一种很好的解决方案。

VSFTPD软件的结构

  1. /etc/vsftpd/vsftpd.conf:vsftpd的配置文件,通过man 5 vsftpd.conf了解详细信息
  2. /etc/pam.d/vsftpd:vsftpd使用PAM模块相关文件,主要用来用户身份认证
  3. /etc/vsftpd.ftpusers:与2相关,把禁止登录的账号写入此文件即可,一行一个用户
  4. /etc/vsftpd.user_list:此文件生效与否和userlist_enable、userlist_deny有关
  5. /etc/vsftpd.chroot_list:默认不存在,主要功能是把用户锁在家目录中,此文件是否生效与chroot_list_enable和chroot_list_file参数有关。
  6. /usr/sbin/vsftpd: vsftpd的执行文件
  7. /var/ftp/:vsftpd匿名用户登录的根目录

别的不多说,接下来我们来安装vsftpd,安装方式有两种:rpm安装和编译源码包安装

这里以rpm安装为例

一、安装

1、安装

  1. # yum install vsftpd –y  ###用yum安装
  2. # rpm -ivh /media/cdrom/Server/vsftpd-2.0.5-16.el5.i386.rpm ##rpm命令安装
  3. # rpm -ql vsftpd  ###查看安装vsftpd后生成的文件和目录
  4. # rpm -qc vsftpd  ###查看vsftpd的配置文件

2、把vsftpd 加入服务列表并让其开机自动启动

  1. # chkconfig --add vsftpd   ##加入服务列表
  2. # chkconfig vsftpd on     ##开机自动启动
  3. # service vsftpd start      ##启动vsftp服务

二、vsftpd.conf 各个参数数明

  1. # grep -e "^\<.*" /etc/vsftpd/vsftpd.conf -e "^#[^[:space:]]\{1,\}" ###获取vsftpd.conf各项参数
  2. anonymous_enable=YES|NO        ##是否允许匿名用户登录
  3. allow_anon_ssl=YES|NO              ##是否允许匿名用户SSL连接FTP
  4. local_enable=YES   |NO               #是否允许本地用户登录
  5. write_enable=YES |NO                ##是否允许用户上传文件,此参数只对费匿名用户有效
  6. local_umask=022                   ##授权用户上传文件的umask
  7. anon_umask=022                        ##匿名用户上传文件的umask
  8. download_enable=YES|NO           ##是否允许用户下载文件
  9. #anon_upload_enable=YES           ##是否允许匿名用户上传
  10. #anon_mkdir_write_enable=YES  ##是否允许匿名用户在FTP Server上建立目录
  11. anon_other_write_enalbe=YES      ##是否允许匿名用户执行创建目录之外的其他操作(删除、重命名)
  12. dirmessage_enable=YES              ##当用户切换目录时是否显示欢迎信息
  13. xferlog_enable=YES                  ##是否记录用户上传/下载文件时记录日志
  14. connect_from_port_20=YES        ##是否使用20端口传输数据
  15. #chown_uploads=YES                 ##是否修改匿名用户上传文件的所有者
  16. #chown_username=whoever        ##指定匿名用户上传文件的所有者
  17. #xferlog_file=/var/log/xferlog ##指定使用的日志文件
  18. xferlog_std_format=YES              ##是否使用标准日志文件记录日志
  19. #idle_session_timeout=600           ##指定会话超时的时间
  20. #data_connection_timeout=120     ##指定数据传输超时时间
  21. #nopriv_user=ftpsecure               ##指定vsftpd服务运行的账户,默认ftp
  22. #async_abor_enable=YES            ##是否允许客户端使用sync命令
  23. #ascii_upload_enable=YES           ##是否在上传文件时使用ASCII传输模式
  24. #ascii_download_enable=YES    ##是否在下载文件时使用ASCII传输模式
  25. #ftpd_banner=Welcome           ##定义ftp的欢迎信息
  26. #deny_email_enable=YES             ##
  27. #banned_email_file=/etc/vsftpd/banned_emails
  28. chroot_local_user=YES|NO          ##是否把所有用户锁在自己的家目录
  29. #chroot_list_enable=YES       #是否把指定的用户锁在其家目录,只有chroot_local_user=YES时,才有效
  30. #chroot_list_file=/etc/vsftpd/chroot_list ##把不能离开其家目录的用户写在指定的文件里,一行一个,只有当chroot_list_enable=YES时,该参数才有效
  31. local_root=/directory path            ##指定所有用户的根目录,该参数对匿名用户无效
  32. anon_max_rate=0                 ##单位Byte/s,限制匿名用户的最大传输速度,0表示不限制
  33. local_max_rate=0                        ##和上面的参数一样限制用户的最大传输速度
  34. deny_file={*.exe}                       ##指定不允许上传的文件类型
  35. #ls_recurse_enable=YES            ##是否允许用户登录ftp后使用ls –R命令
  36. dirlist_enable=YES|NO                 ##是否允许使用dir列出目录
  37. listen=YES                    ##vsftpd服务运行的模式,YES表示独立运行,NO让xinetd管理
  38. #listen_ipv6=YES
  39. listen_address=172.16.11.1           ##指定vsftpd监听的IP地址
  40. listen_port=34                             ##指定vsftpd监听的端口,默认TCP的21端口
  41. max_clients=300                         ##设定vsftpd允许的最大连接数
  42. max_per_ip=8                             ##设定每个ip最大连接数
  43. pam_service_name=vsftpd          ##指定vsftpd使用PAM模块的配置文件,默认在/etc/pam.d
  44. userlist_file=/file path                   ##指定允许或禁止登录ftp用户的文件
  45. userlist_enable=YES | NO            ##为YES时用户输入用户名后,vsftpd检查到输入的用户名在列表中,vsftpd就直接禁用此用户,不会再询问用户输入密码等后续操作
  46. userlist_deny=YES|NO                 ##该参数决定禁止还是只允许userlist_file文件中用户登录ftp服务器,该参数只有在userlist_enable=YES时才生效,YES是其默认参数值,既是禁止用户列表中的用户登录ftp服务器
  47. tcp_wrappers=YES | NO             ##是否允许tcp_wrapper管理

转载于:https://blog.51cto.com/urchin/828185

FTPVSFTPD安装和参数说明相关推荐

  1. CentOS安装PinPoint

    1.软件准备 jdk-8u191-linux-x64.tar.gz,下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8 ...

  2. Centos 6.9 编译安装gcc 4.8.5

    前言 GCC(GNU Compiler Collection,GNU编译器合集)是linux以及其他类UNIX平台上进行开源项目,软件开发等必不可少的工具链组成之一.(其他的还有clang以及llvm ...

  3. Win10安装Linux子系统教程

    一.开启 Window10附加功能 (1)Hyper-V (2)适用于Linux的Windows子系统 (3)虚拟机平台 (4)打开windows设置,搜索开发者设置,启用开发人员模式. 二.安装 W ...

  4. 轻度Linux患者福利,Win10安装Linux子系统教程,附 Docker 安装教程

    现在 win10 实在是太方便了,可以不用 cmd 或者 shell 了,以下我总结了怎么在win10下安装一个linux系统了. 一.开启 Window10附加功能 (1)Hyper-V (2)适用 ...

  5. docker安装halo+mysql+nginx搭建个人博客

    docker 安装halo+mysql+nginx搭建个人博客(debian or ubuntu) 1 简介 本文主要介绍debian和国内腾讯云ubuntu下安装docker,使用docker安装h ...

  6. Vux+Cordova打包的安卓App实现微信分享朋友和朋友圈

    知识储备 Cordova Plugin ShareSDK 插件 什么是Cordova Plugin ShareSDK Cordova Plugin ShareSDK封装了ShareSDK的androi ...

  7. 深度优化LNMP之Nginx [2]

    配置Nginx gzip 压缩实现性能优化 1.Nginx gzip压缩功能介绍    Nginx gzuo压缩模块提供了压缩文件内容的功能,用户请求的内容在发送出用客户端之前,Nginx服务器会根据 ...

  8. centos7搭建easy-mock服务

    前提步骤 安装Node.js(v8.x, 不支持 v10.x)& MongoDB(>= v3.4)& Redis(>= v4.0) 安装node # install n c ...

  9. 最简单企业证书部署应用!In-House改进版!免HTTPS!

    ⚠️因为新浪服务器升级,限制目录和文件名的长度,所以更换实现方式 简介 iOS平台发布应用,想绕过AppStore,最好的方式就是In-House发布了(由于越狱用户覆盖不全,一般不考虑越狱方式). ...

最新文章

  1. linux下的重要服务dns
  2. SAP QM 事务代码QA11里的to New Material
  3. 安卓工程版本控制哪些文件可以忽略
  4. 根据数据库表gengxin实体类_ASP.NET开发实战——(十二)数据库之EF Migrations
  5. vim中如何设置多行注释和删除注释
  6. NSIS脚本语言安装与编译
  7. css-适配布局类型-流式布局-响应式布局
  8. 解决maven项目jdbc报错:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
  9. python pso_利用python实现PSO算法优化二元函数
  10. C语言求一个文件的长度,求二进制文件的长度
  11. IP网络中的路由聚合的解析
  12. 软件测试微信钱包,面试官:请你说说微信发红包,有哪些测试点
  13. pycharm 运行celery_调试celery遇到的坑
  14. 2345好压去广告方法
  15. 谈谈小游戏加载优化及资源分配
  16. Latex去掉proof后面显示的小白框 (\qed)
  17. WCDMA空口速率和Iub口速率的计算方法和限制
  18. 记war exploded部署不成功
  19. 云服务器惠普版_云服务器惠普版_工作进度通报,笔记本开箱目录20200531版
  20. Java新手教程从入门到放弃从入门到精通(3)

热门文章

  1. Vivado如何计算关键路径的保持时间裕量?
  2. FPGA之道(73)设计方法学与FPGA程序设计的境界
  3. 【Verilog HDL 训练】第 09 天(按键消抖)
  4. Save a tree as XML using XmlSerializer
  5. 改动Centosserver主机名称
  6. Unity 指定参数
  7. 远程桌面服务坏了如何修复
  8. PIL图像处理:旋转图像
  9. python from __future__ import division的作用
  10. Vivado中TCL的使用