用LINUX架设FTP服务器

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

ChinaUnix.net首页|论坛|博客|Linux|人才|培训|精华|Wiki|读书|资料|手册|下载|搜索ChinaUnix首页精华文章Linux正文搜索[精华]用LINUX架设FTP服务器作者:level发表于:2007-06-2611:14:14【发表评论】【查看原文】【Linux讨论区】【关闭】以前自己弄的东西,现在帖出来,希望对大家有点用:)1.1什么是FTP:文件传输协议原理1.1.1命令选择1.1.2命令格式1.2wu-Ftpd的安装1.3让FTP服务器运转起来1.4配置文件的设置1.4.1/etc/ftpaccess的设置1.4.2/etc/ftpusers和/etc/ftphosts的设置1.4.3/etc/ftpconversions设置1.4.1wu-ftp的相关程序1.5开设只能FTP的帐户1.6设置虚拟FTP主机什么是FTP:文件传输协议原理互联网文件传输协议(FileTransferProtocol,FTP)标准是在RFC959说明的。该协议定义了一个从远程计算机系统和本地计算机系统之间传输文件的一个标准。一般来说,传输文件的用户需要先经过认证以后才能登录网站,然后方能访问在远程服务器的文件。而大多数的FTP服务器往往提供一个GUEST的公共帐户来允许没有远程服务器的用户可以访问该FTP服务器。一个FTP会话通常包括五个软件元素的交互。用户接口提供了一个用户接口并使用客户端协议解释器的服务客户PI客户协议解释器,其项远程服务器协议机发送命令并且驱动客户数据传输过程服务器PI服务器协议解释器,响应客户协议机发出的命令并驱动服务器端数据传输过程客户DTP客户数据传输过程,其负责完成和服务器数据传输过程及客户端本地文件系统的通信服务DTP服务器数据传输过程,其负责完成和客户数据传输过程及服务器端文件系统的通信在RFC959中,一般使用用户这个名词来指代客户。RFC959定义了客户PI和服务器PI交互的方式和规范。用户接口与PI和DTP交互的机理都并不是协议标准的一部分。PI和DTP往往通常是在同一个程序模块中实现的。在FTP会话中,一共会存在有两个独立的网络连接,一个是由两端的PI使用的,另一个是由两端的DTP使用的。PI之间的连接一般被称作控制连接(controlconnection),DTP之间的连接被称做数据连接(dataconnection)使用TCP服务的控制和数据连接通常情况下,FTO服务器监听端口号21来等待控制连接建立请求。而数据连接端口号的选择依赖于控制连接上命令。通常是客户发送一个控制消息来指定客户监听并等待服务器端发送数据连接建立请求的端口号。对数据传输和控制命令传输来使用不同的独立连接有如下优点:两个连接可以选择不同的合适服务质量,如:对控制连接来说高需要更小的延迟时间,对数据连接来说需要更大的数据吞吐量;而且可以避免实现数据流中的命令的通明性及逃逸。当传输建立时,总是由客户端首先发起。然而客户和服务器都可能是数据发送者。除了传输用户请求下载文件,数据传输过程同样在客户端请求列服务器端目录结构时建立。1.1.1命令选择当一个传输建立时,一般通常需要指定四个方面的属性:文件类型该属性指定如何将文件的数据匹配成适于传输的格式,一共有四种可能的选择:ASCII文件类型在发送端,文件从本地文本文件格式转换为NVTASCII格式,每行结束有一个CR/LF对来标识。在接收端,再被转换为本地的文本格式。这说明了为什么Unix主机之间传输文本文件为何传输的数据量要大于文件的实际大小。若传输一段端或传输两端都不使用ASCII文本编码,则是应该由数据传输过程来实现本地编码和NVTASCII编码之间的转换。EBCDIC文件类型类似于ASCII,区别仅仅上使用EBCDIC字符编码图象(或二进制)文件类型文件以本地传输内容传输,在远端以同本地完全相同的内容存储。本地文件系统用在字节大小不是8位的环境下。没字节位数由发送者指定。在实际应用中,只有ASCII和图象格式使用的较多。格式控制该属性是和将文本文件最后传送到打印设备相关的,其中有多种方式来实现将垂直格式信息编码到文件中,包括指示一个新页开始的方式。有如下方式可供选择:无须打印格式控制,这是缺省值Telnet打印控制,在telnet协议中定义的控制字符包含在数据流中。.Fortran打印控制,该属性在实际中很少使用。结构文件可以拥有内部结构,在传输中该结构被保留。由数据传输过程来负责在传输中的结构及本地结构之间相互匹配,有三种可能性:文件结构这实际上意味着文件被看作没有内部结构的连续的字节流。记录结构文件是有一系列记录组成的结构。这只适用于文本文件。页面结构也可以称做块结构。每一页都伴随一个页号来传输,从而以顺序的方式来完成传输。页面结构很少在实际中遇到。记录结构也不是很常见。对于文本文件使用ASCII文件类型可以获得相同的效果。传输模式该属性可以取三个不同的值:流模式文件的以字节流的方式传输。块模式文件以一个块连接一个块的方式传输,每个块的开头都有一个头。压缩模式一个简单的运程长度压缩编码被应用,来压缩连续的相同的字节。实际中,一般只有流模式被使用。而压缩一般通过使用各种其他的工具程序来获得。当一次传输被建立,客户端一般指定一个或多个前面说明的属性。若服务器端不能支持某个选项,服务器将用一个错误信息来响应客户端,并不具有协商机制。FTP提供了充足的命令来使用户和远程建立连接并访问远程文件系统。1.1.2命令格式命令以NVTASCII串的格式被传输。每个命令以三个或四个大写的NVTASCII字符开始,后面带有选项参数和一个CR/LF对来标识命令结束应答由三个NVTASCII数字及一个选项消息组成。一个长的应答也许会有多个消息组成,第一个消息的三个数字后带有一个破折号,最后的消息不带有破折号。中间的消息无须携带三个数字,但是如果带了三个数字,则也需要破折号。下面是所有的命令的列表。带有星号的命令一般很少使用,所以往往在具体实现中不支持。StringMeaningABOR放弃传输*ACCT某些系统将帐号和用户与文件系统相关联*ALLO为即将传送的文件分配空间。后面携带的参数来确定字节数*APPE将文件附加到已经存在的文件后面CDUP在远程系统上将当前目录切换到上级父目录CWD改变远程系统的工作目录DELE删除远程系统的文件HELP读取服务器的帮助信息,如:支持的命令的列表LIST在一个新建立的数据连接上发送当前工作目录下的文件名列表MKD创建目录MODE指定传输模式,可携带的参数是:S、B或C.NLST在一个新建立的数据连接上发送一个当前目录下的“完全”的目录列表NOOP空操作,防止连接断掉PASS提供一个用户登录密码,必须立即跟随在USER命令后*PASV指定服务器数据传输过程监听等待客户端的数据连接连接建立请求PORT指定客户端监听等待服务器端建立的连接的端口号PWD显示服务器端的当前工作目录名QUIT退出登录并终止连接*REIN重新初始化,退出登录但是并不断开连接,后面必须随后发出一个新的USER命令*REST从服务器的一个标识处重新开始传输RETR从远程系统取回一个文件RMD删除一个目录*RNFR指定要被命名的文件的老的路径名,随后必须是一个RNTO命令*RNTO指定要被命名的文件的新的路径名*SITE站点特有的服务器提供的服务*SMNT结构加载,提供一个文件系统结构的远程系统路径名*STAT状态信息STOR上载一个文件到服务器上,若文件已经存在则覆盖*STOU上载一个文件到服务器上,不覆盖已经存在的文件STRU指定文件结构,参数可以是F、R或P.*SYST报告远程系统的操作系统类型TYPE指定文件类型,参数可以是A、E、I、L只有TYPEA和TYPEI常用控制连接命令应答有如下形式:TypeDescription1yz主动初步应答,在发送另一个命令以前等待另一个应答2yz主动最后应答,最后一个命令成功结束3yz主动中间应答,必须再发送一个命令4yz暂时被动应答,要求的动作当时不能完成,但可以重试5yz永久被动应答,要求的动作不能完成,不应该重试y数字编码进一步的信息DigitMeaning0语法错误1信息2连接状态3认证和记帐4保留5Files文件系统状态下面是一些典型的消息:NumberMeaning125数据连接打开,传输开始200命令OK331用户名OK需要输入密码425不能打开数据连接452错误写文件500语法错误-不可识别的命具体的详细情况可以参见RFCwu-Ftpd的官方权威站点地址是:。1.2wu-Ftpd的安装当前,Linux环境下有许多ftp服务器软件可供选择,但是目前最常见的仍然是wu-Ftpd服务器。这里主要讨论该软件的安装和配置。一般来说,在安装了linux时,缺省都会自动安装wu-ftpd服务器,但是有时候为了某种需要也需要自己亲自重新安装该服务器软件。安装wu-Ftpd有两方式,一种是安装rpm形式的发布包;一种是自己动手去编译生成Ftp服务器。rpm包可以在处下载得到,以rpm包方式安装非常简单,只需要在按下面的简单的几个步骤就可以完成,假设下载得到的rpm包存放在/tmp目录下:#cd/tmp#rpm-ivhwu-ftpd-1.6.0-9.i386.rpm压缩的源代码可以在出得到。这里我们以最新的1.6.0为例说明如何编译安装wu-ftpd。1、解开源代码1)将压缩的源代码拷贝到/usr/src下#cpwu-ftpd.1.6.0.tar.gz/usr/src2)对压缩文档进行解压缩:#tarxvfzwu-ftpd.1.6.0.tar.gz#cdwu-ftpd-1.6.02、敲入命令./buildxxx,可以在这里指定一个C语言编译器:./buildCC=yyyxxxyyy指用来替代cc的其他的编译器。对于linux环境下的gcc编译器,命令应该为:./buildCC=gccxxx#buildCC=gcclnxxxx可以取下面的值:gen:通用make(当移植到心得系统时需要拷贝它)aix:IBMAIXaux:AU/Xbdi:BSD/OSbsd:BSDdec:DECUnix3.Xdu4:DECUnix4.Xorlaterdyn:Dynixfbs:FreeBSD1.0orlaterhiu:HitachiUnixhpx:HP-UXlnx:Linux(testedon1.0.30)nbs:NetBSD1.Xnx2:NeXTstep1.xnx3:NeXTstep3.xosf:OSF/1osx:MacOSXptx:???sco:SCOUnix3.2v4.2/SCOOpenServer5sgi:SGIIrix4.0.5asny:SonyNewsOSsol:SunOS5.x/Solaris1.xs41:SunOS4.1.xult:Ultrix4.xuxw:UnixWare1.1orlaterclean:Cleanupobjectfilesandsuchtoreducediskspaceafterbuilding.install:InstallftpdCopyingMakefiles.Linkingsrc/config.hMakingsupportlibrary.gcc-O3-fomit-frame-pointer-fno-strength-reduce-pipe-cstrcasestr.cgcc-O3-fomit-frame-pointer-fno-strength-reduce-pipe-cauthuser.cgcc-O3-fomit-frame-pointer-fno-strength-reduce-pipe-csnprintf.crm-flibsupport.

1 / 22
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功