一、FTP服务概述:

FTP:(File Transfer Protocol,文件传输协议)是典型的C/S结构的应用层网络协议。需要相应的客户端和服务器端软件才能进行文件传输。

1、FTP连接及传输模式

FTP服务器默认使用TCP协议的20、21端口与客户端进行通信。21端口用于建立控制连接,并传输FTP控制命令;20端口用于建立数据连接,并传输文件数据。

根据FTP服务器在建立数据连接过程中的主、被动关系,FTP数据连接分为:主动模式和被动模式。

两者区别如下:

主动模式:

首先客户段向连接服务器21端口建立FTP控制连接,当需要传输数据时,客户端以PORT(主动)命令告知服务器“我打开了某某端口,你来连接我”,于是服务器从20端口向客户端的该端口发送请求并建立数据连接。

被动模式:

如果客户机所在网络的防火通常墙禁止主动模式连接,通常会使用被动模式。首先由客户端向服务器端的21端口建立FTP控制连接,当需要传输数据时,服务器以PASV(被动)命令告知客户端“我打开了某端口,你过来连接”,于是客户端向服务器该端口(非20)发送请求并建立数据连接。

传输模式:

    假设客户端与服务器建立好数据连接以后,就可以根据从控制连接中发送的FTP命令,上传和下载文件了,在传输文件时,根据是否进行字符转换,分为文件模式和二进制模式。

 文本模式:又称为ASCII模式,这种模式在传输文件时使用ASCII字符序列,一般只用于纯文本文件传输。

 二进制模式:又称为Binary模式,这种模式不会转换文件中的字符序列,更适合传输程序、图片等文件。

说明:使用二进制模式比文本模式更有效率,大多数FTP客户端工具可以根据文件类型自动选择文件传输模式,而无需用户手工指定。

2、FTP用户类型

  匿名用户:其用户名为anonymous和ftp,提供任意密码(包括空密码)都可以通过服务器验证,这样的用户称之为“匿名用户”。匿名用户一般用于提供公共文件的下载,如一些提供免费软件、学习资料下载的站点。

  本地用户:就是以真实的用户名和密码进行登录,但前提条件是用户在FTP服务器上拥有自己的帐号.用真实帐号登录后,其登录的目录为用户自己的目录,该目录在系统建立帐号时系统就自动创建.

  虚拟用户:FTP服务器软件可以维护一份独立的用户数据库文件,而不是直接使用本地用户账号。这些位于独立数据库文件中的FTP用户账号,通常称为“虚拟用户”,使用FTP虚拟用户可以提供更好的安全性。

3、FTP服务器软件的种类

Wu-ftpd服务器是早期较为流行的FTP服务器程序之一,功能强大且稳定性也较出色。但是安全性比Proftpd和vsftpd要差一些。

Proftpd服务器在Wu-ftpd的基础上进行改进,配置起来也相对比较容易,执行效率和安全性方面也得到很大的提高。

vsftpd服务器主要基于安全性进行改进,vsftpd在速度和稳定性方面的表现也很突出。vsftpd可以支持15000个用户并发连接。

注:本文主要介绍的Vsftpd软件

4、FTP客户端软件

Windows平台:CuteFTP、FlashFXP、LeapFTP、Filezilla等

Linux平台:gftp、kuftp等

二、FTP服务基础知识

在redhat5系统中,安装vsftpd软件,下面由redhat5上安装vsftpd,介绍相关内容。

vsftpd服务的配置文件默认位于:/etc/vsftpd/文件夹中,主要包括用户控制列表文件(ftpusers、user_list)和主配置文件(vsftpd.conf)。

1、用户控制列表文件ftpusers和user_list

ftpusers和user_list文件中均包含一份FTP用户名的列表,两个文件虽然都用于FTP用户控制,但是之间存在一些差别。

ftpusers文件:(就像黑名单),该文件中包含的用户账号将禁止登录vsftpd服务器,不管该用户是否存在user_list文件中出现。通常将root、bin、daemon等特殊用户列在改文件中,禁止用户登录FTP服务。

user_list文件:该文件中包含的用户账号可能被禁止登录,也可能被允许登录,具体在主配置文件vsftpd.conf中决定。当存在"userlist_enable=YES"的配置项时,user_list文件生效,如果配置"userlist_deny=YES",则禁止列表中的用户账号登录,如果配置"userlist_deny=NO",则仅允许列表中的用户账号登录。

2、主配置文件/etc/vsftpd/vsftpd.conf

在vsftpd主配置文件中,配置行采用“配置项=参数”的格式。下面列出vsftpd.conf文件中常见配置项:

作用范围 配置项及示例 含义说明

匿名用户

anonymous_enable=YES 是否允许匿名访问
anon_umask=022 设置匿名用户所上传的默认权限
anon_root=/var/ftp 设置匿名用户FTP根目录(缺省为/var/ftp/)
anon_upload_enable=YES 是否允许匿名用户上传文件
anon_mkdir_write_enable=YES 是否允许匿名用户有创建目录的写权限
anon_other_write_enable=YES 是否允许匿名用户有其他写入权限。如对文件改名、覆盖及删除文件
anon_max_rate=0 限制匿名用户的最大传输速率(0位无限制)单位为字节

本地用户

local_enable=YES 是否允许本地系统用户访问
local_umask=022 设置本地用户所上传文件的默认权限掩码值
local_root=/var/ftp 设置本地用户的FTP根目录(缺省为用户的宿主目录)
chroot_local_user=YES 是否将FTP本地用户禁锢在宿主目录中
local_max_rate=0 限制本地用户最大传输速率(0为无限制),单位为字节
全局配置 listen=YES 是否以独立运行的方式监听服务
listen_port=21 设置监听FTP服务的端口号
write_enable=YES 启用任何形式的写入权限(如上传、删除文件等)都需要开启此项
download_enable=YES 是否允许下载文件(建立仅限于浏览、上传的FTP服务时可将其设为NO)
dirmessage_enable=YES 用户切换进入目录时显示.message文件(如果存在)的内容
xferlog_enable=YES 启用xferlog日志,默认记录到/var/log/xferlog文件
xferlog_std_format=YES 启用标准的xferlog日志格式,若禁用此项,将使用vsftpd自己的日志格式
connect_from_port_20=YES 允许服务器主动模式(从20端口建立数据连接)
pasv_enable=YES 允许被动模式连接
pasv_max_port=24600 设置用于被动模式的服务器最大端口号
pasv_min_port=24500 设置用于被动模式的服务器最小端口号
pam_service_name=vsftpd 设置用于用户认证的PAM文件位置(/etc/pam.d/目录中对应的文件路径)
userlist_enable=YES 是否启用user_list用户列表文件
userlist_deny=YES 是否禁止user_list列表文件中的用户账号
max_client=0 最多允许多个客户端同时连接(0无限制)
max_per_ip=0 对来自相同IP地址的客户端,最多允许多少个并发连接(0为无限制)
tcp_wrappers=YES 是否启用TCP_Wrappers主机访问控制

说明:关于vsftpd文件中的更多配置选项,使用man vsftpd.conf查看帮助。

转载于:https://blog.51cto.com/zengxin/1716358

FTP服务学习笔记之FTP简介(1)相关推荐

  1. FTP服务学习笔记之基于MySQL+PAM的vsftpd虚拟用户

    基于mysql+PAM的vsftpd虚拟用户配置 一.实验说明 操作系统:Redhat5.8_X64bit 实验平台:VMware Workstation 所需要的软件包:pam_mysql-0.7R ...

  2. 【小猫爪】AUTOSAR学习笔记02-Communication Stack简介

    [小猫爪]AUTOSAR学习笔记02-Communication Stack简介 前言 1 简介 2 CAN消息的传播路径 2.1 Com服务 2.2 Dcm服务 2.3 SM服务和NM服务 3 补充 ...

  3. 【小猫爪】AUTOSAR学习笔记01-AUTOSAR架构简介

    [小猫爪]AUTOSAR学习笔记01-AUTOSAR架构简介 前言 1 背景介绍 2 基本概念 3 方法论 4 分层软件架构 4.1 Application Layer(APP) 4.2 Basic ...

  4. StatQuest学习笔记23——RNA-seq简介

    StatQuest学习笔记23--RNA-seq简介 前言--主要内容 这篇笔记是StatQuest系列笔记的第58节,主要内容是讲RNA-seq的原理.StatQuest系列教程的58到62节是协录 ...

  5. ASP.Net学习笔记001--ASP.Net简介1

    ASP.Net学习笔记001--ASP.Net简介1 2016/1/10 以前写的课程都没有附上源码,很抱歉! 课程中的源码可以加qq索要:1606841559 也可以自己下载: ASP.Net学习笔 ...

  6. C#.NET学习笔记1---C#.NET简介

    C#.NET学习笔记1---C#.NET简介 技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:www.credream.com -------------- ...

  7. STM32 HAL库学习笔记1-HAL库简介

    STM32 HAL库学习笔记1-HAL库简介 HAL库 SPL 库 和 HAL 库两者相互独立,互不兼容.几种库的比较如下 目前几种库对不同芯片的支持情况如下 ST 中文官网上有一篇<关于ST库 ...

  8. Java微服务学习笔记(一):微服务架构的概念理解

    Java微服务学习笔记 Tips:入门学习时粗略整理,仅供参考 (一):架构的基础理解 文章目录 Java微服务学习笔记 前言 一.微服务是什么? 二.常用开源微服务框架演化 1. Dubbo 2. ...

  9. 华为帐号服务学习笔记(四):Authorization Code模式服务端开发

    笔者在<华为帐号服务学习笔记(二):OAuth2.0协议详解>中已经给大家介绍了Authorization Code模式是需要有后台服务器才能使用的,并且在<华为帐号服务学习笔记(三 ...

最新文章

  1. HTML中将px转换为em的语法,在JavaScript中转换EM为PX(并获得默认字体大小)
  2. modernizr 支持html5,使用modernizr.js检测浏览器对html5以及css3的支持情况
  3. idea插件tomcat8-maven-plugin远程部署项目~
  4. 疫情之下,“无接触”生意火了
  5. 获取SQL SERVER某个数据库中所有存储过程的参数
  6. textbox 和textera 文本框多行后不能拉伸
  7. HDU 4190 Distributing Ballot Boxes【二分答案】
  8. TCP,UDP数据包的大小以及MTU
  9. OSB格式(REST)转化(XML到JSON,JSON到XML)
  10. kali 创建php可执行文件_Kali安装wordpress
  11. 【重点】计算机二级公共基础重点
  12. 大佬们不会告诉你的史上最全的Java进阶书籍推荐
  13. Android 图片人脸识别剪切
  14. Oracleji数据库、实例、用户、表空间、表之间的关系
  15. 从钉钉后台API获取企业通讯录以后,获取每个人的钉钉运动步数
  16. 自然数 素数 质数_俄罗斯娃娃素数
  17. 深度学习故障诊断之-使用条件生成对抗网络CGAN生成泵流量信号
  18. MyBatis基本工作原理
  19. 如何提高学生习作水平
  20. 私域引流工具及场景落地方法

热门文章

  1. python猴子选大王_“猴子选大王” 算法 python实现
  2. php对pdf关键字定位,如何在PDF文件中快速查找关键字
  3. python编程手机模拟点击_python模拟点击玩游戏的实例讲解
  4. mysql常用四种连接_MySQL四种连接查询
  5. gds文件转bmp_OFD文件转换服务
  6. list在c语言中的作用,在C语言中大略实现VC++中的LISTARRAY功能方法(一)
  7. mysql第四步安装失败_MySQL8.0版本的安装以及解决安装后MySQL服务无法启动的问题...
  8. Hadoop 高可用集群(HA)
  9. vue.js v-model
  10. Matplotlib 中文字体设置