文件用LINUX架设FTP服务器

架设ftp  时间:2021-03-13  阅读:()

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。

首页 | 论坛|博客| Linux |人才|培训 |精华| Wiki |读书 | 资料|手册| 下载|搜索

[精华]用LINUX架设FTP服务器

http://www.chinaunix.net作者: level 发表于: -06-26 11: 14: 14

【发表评论】 【查看原文】 【Linux讨论区】 【关闭】

以前自己弄的东西,现在帖出来,希望对大家有点用: )

1. 1什么是FTP:文件传输协议原理

1. 1. 1命令选择

1. 1.2命令格式

1.2 wu-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. 1 wu-ftp的相关程序

1.5开设只能FTP的帐户

1.6设置虚拟FTP主机

什么是FTP:文件传输协议原理

互联网文件传输协议(File Transfer Protocol ,FTP)标准是在RFC959说明的。该协议定义了一个从远程计算机系统和本地计算机系统之间传输文件的一个标准。一般来说,传输文件的用户需要先经过认证以后才能登录网站,然后方能访问在远程服务器的文件。而大多数的FTP服务器往往提供一个GUEST的公共帐户来允许没有远程服务器的用户能够访问该FTP服务器。

一个FTP会话一般包括五个软件元素的交互。

用户接口提供了一个用户接口并使用客户端协议解释器的服务

客户PI客户协议解释器,其项远程服务器协议机发送命令而且驱动客户数据传输过程

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。

服务器PI服务器协议解释器, 响应客户协议机发出的命令并驱动服务器端数据传输过程

客户DTP客户数据传输过程,其负责完成和服务器数据传输过程及客户端本地文件系统的通信

服务DTP服务器数据传输过程,其负责完成和客户数据传输过程及服务器端文件系统的通信

在RFC 959中,一般使用用户这个名词来指代客户。 RFC 959定义了客户PI和服务器PI交互的方式和规范。用户接口与PI和DTP交互的机理都并不是协议标准的一部分。 PI和DTP往往一般是在同一个程序模块中实现的。在FTP会话中,一共会存在有两个独立的网络连接,一个是由两端的PI使用的, 另一个是由两端的DTP使用的。PI之间的连接一般被称作控制连接(control connection) ,DTP之间的连接被称做数据连接(data connection)使用TCP服务的控制和数据连接

一般情况下, FTO服务器监听端口号21来等待控制连接建立请求。而数据连接端口号的选择依赖于控制连接上命令。一般是客户发送一个控制消息来指定客户监听并等待服务器端发送数据连接建立请求的端口号。

对数据传输和控制命令传输来使用不同的独立连接有如下优点:两个连接能够选择不同的合适服务质量,如:对控制连接来说高需要更小的延迟时间,对数据连接来说需要更大的数据吞吐量;而且能够避免实现数据流中的命令的通明性及逃逸。

当传输建立时, 总是由客户端首先发起。然而客户和服务器都可能是数据发送者。除了传输用户请求下载文件,数据传输过程同样在客户端请求列服务器端目录结构时建立。

1. 1. 1命令选择

当一个传输建立时,一般一般需要指定四个方面的属性:

文件类型

该属性指定如何将文件的数据匹配成适于传输的格式,一共有四种可能的选择:

ASCII文件类型

在发送端,文件从本地文本文件格式转换为NVT ASCII格式,每行结束有一个CR/LF对来标识。 在接收端,再被转换为本地的文本格式。

这说明了为什么Unix主机之间传输文本文件为何传输的数据量要大于文件的实际大小。若传输一段端或传输两端都不使用ASCII文本编码, 则是应该由数据传输过程来实现本地编码和NVT ASCII编码之间的转换。EBCDIC文件类型

类似于ASCII, 区别仅仅上使用EBCDIC字符编码

图象(或二进制)文件类型

文件以本地传输内容传输,在远端以同本地完全相同的内容存储。

本地文件系统

用在字节大小不是8位的环境下。没字节位数由发送者指定。

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。

在实际应用中, 只有ASCII和图象格式使用的较多。

格式控制

该属性是和将文本文件最后传送到打印设备相关的,其中有多种方式来实现将垂直格式信息编码到文件中,包括指示一个新页开始的方式。有如下方式可供选择:

无须打印格式控制,这是缺省值

Telnet打印控制,在telnet协议中定义的控制字符包含在数据流中。 .

Fortran打印控制,

该属性在实际中很少使用。

结构

文件能够拥有内部结构,在传输中该结构被保留。由数据传输过程来负责在传输中的结构及本地结构之间相互匹配,有三种可能性:

文件结构

这实际上意味着文件被看作没有内部结构的连续的字节流。

记录结构

文件是有一系列记录组成的结构。这只适用于文本文件。

页面结构

也能够称做块结构。每一页都伴随一个页号来传输,从而以顺序的方式来完成传输。

页面结构很少在实际中遇到。记录结构也不是很常见。对于文本文件使用ASCII文件类型能够获得相同的效果。传输模式

该属性能够取三个不同的值:

流模式

文件的以字节流的方式传输。

块模式

文件以一个块连接一个块的方式传输,每个块的开头都有一个头。

压缩模式

一个简单的运程长度压缩编码被应用,来压缩连续的相同的字节。

实际中,一般只有流模式被使用。而压缩一般经过使用各种其它的工具程序来获得。

当一次传输被建立,客户端一般指定一个或多个前面说明的属性。若服务器端不能支持某个选项,服务器将用一个错误信息来响应客户端,并不具有协商机制。

FTP提供了充分的命令来使用户和远程建立连接并访问远程文件系统。

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。

1. 1.2命令格式

命令以NVT ASCII串的格式被传输。每个命令以三个或四个大写的NVT ASCII字符开始,后面带有选项参数和一个CR/LF对来标识命令结束

应答由三个NVT ASCII数字及一个选项消息组成。

一个长的应答可能会有多个消息组成,第一个消息的三个数字后带有一个破折号,最后的消息不带有破折号。中间的消息无须携带三个数字,可是如果带了三个数字, 则也需要破折号。

下面是所有的命令的列表。带有星号的命令一般很少使用, 因此往往在具体实现中不支持。

String Meaning

ABOR放弃传输

*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只有TYPE A和TYPE I常见

控制连接命令应答有如下形式:

Type Description

1yz主动初步应答,在发送另一个命令以前等待另一个应答

2yz主动最后应答,最后一个命令成功结束

3yz主动中间应答,必须再发送一个命令

4yz暂时被动应答,要求的动作当时不能完成,但能够重试

5yz永久被动应答,要求的动作不能完成,不应该重试

"y"数字编码进一步的信息

Digit Meaning

0语法错误

1信息

2连接状态

3认证和记帐

4保留

5 File s文件系统状态

下面是一些典型的消息:

Number Meaning

125数据连接打开,传输开始

200命令OK

331用户名OK需要输入密码

425不能打开数据连接

452错误写文件

500语法错误-不可识别的命

具体的详细情况能够参见RFCwu-F t p d的官方权威站点地址是: h t t p://www.wu-f t p d.o r g/。

1.2 wu-Ftpd的安装

当前, Linux环境下有许多ftp服务器软件可供选择,可是当前最常见的依然是wu-Ftpd服务器。这里主要讨论该软件的安装和配置。

一般来说,在安装了linux时,缺省都会自动安装wu-ftpd服务器,可是有时候为了某种需要也需要自己亲自重

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。

新安装该服务器软件。安装wu-Ftpd有两方式,一种是安装rpm形式的发布包;一种是自己动手去编译生成Ftp服务器。rpm包能够在http://rpmf ind.net/l inux/RPM/WByName.html处下载得到, 以rpm包方式安装非常简单, 只需要在按下面的简单的几个步骤就能够完成,假设下载得到的rpm包存放在/tmp目录下:

#c d /tmp

#rpm -ivh wu-ftpd-1.6.0-9. i386.rpm

压缩的源代码能够在ftp://ftp.wu-ftpd.org/pub/wu-ftpd/出得到。这里我们以最新的1.6.0为例说明如何编译安装wu-f t p d。

1、 解开源代码

1)将压缩的源代码拷贝到/usr/src下

#cp wu-ftpd. 1.6.0. tar.gz /usr/src

2)对压缩文档进行解压缩:

#tar xvfz wu-ftpd. 1.6.0. tar.gz

#cd wu-ftpd-1.6.0

2、 敲入命令"./build xxx" , 能够在这里指定一个C语言编译器: "./build CC=yyy xxx" yyy指用来替代"cc"的其它的编译器。对于linux环境下的gcc编译器,命令应该为: "./build CC=gcc xxx"

#build CC=gcc lnxxxx能够取下面的值:gen :通用make(当移植到心得系统时需要拷贝它)aix : IBM AIXaux : AU/Xbdi : BSD/OSbsd : BSDdec : DEC Unix 3.Xdu4 : DEC Unix 4.X or laterdyn : Dynixfbs : FreeBSD 1.0 or laterhiu : Hitachi Unixhpx : HP-UXlnx : Linux (tested on 1.0.30)nbs : NetBSD 1.X

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。nx2 : NeXTstep 1.xnx3 : NeXTstep 3.xosf : OSF/1osx : Mac OS Xptx : ???sco : SCO Unix 3.2v4.2/SCO OpenServer 5sgi : SGI Irix 4.0.5asny : Sony NewsOSsol : SunOS 5.x / Solaris 1.xs41 : SunOS 4. 1.xult : Ultrix 4.xuxw : UnixWare 1. 1 or laterclean : Clean up object files and such to reduce disk space after building.install: Install ftpd

Copying Makefiles.

Linking src/config.h

Making support library.gcc -O3 -fomit-frame-pointer -fno-strength-reduce -pipe -c strcasestr.cgcc -O3 -fomit-frame-pointer -fno-strength-reduce -pipe -c authuser.cgcc -O3 -fomit-frame-pointer -fno-strength-reduce -pipe -c snprintf.crm -f libsupport.aar cq libsupport.a strcasestr.o authuser.o snprintf.oranlib libsupport.a

: : :

: : :

: : :

编译成功以后将生成如下几个可执行文件:ftpd FTP服务器程序ftpshut用于关闭FTP守护进程的程序ftpcount记数程序,显示当前ftp登录的人数f tpwho查看当前FTP服务器的连线情况,类似与系统的who命令,只不过是查看f tp登录的用户ckconfig检查FTP的设置是否正确ftprestart重新启动ftp服务器privatepw改变wu_ftpd组访问文件信息

3、 若只是升级到一个新的版本,应该首先备份系统所有的旧的配置文件。否则这些配置文件将被覆盖。为了适应自己的需求,应当编辑样本配置文件来满足自己的要求,具体配置文件的需求参见后面的内容。

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。

4、 以超级用户身份敲入命令"./build install"

#build installinstalling binaries.install -c -o bin -g bin -m 110 bin/ftpd /usr/sbin/in.ftpdinstall -c -o bin -g bin -m 111 bin/ftpshut /usr/bin/ftpshutinstall -c -o bin -g bin -m 111 bin/ftprestart /usr/bin/ftprestartinstall -c -o bin -g bin -m 111 bin/ftpcount /usr/bin/ftpcountinstall -c -o bin -g bin -m 111 bin/ftpwho /usr/bin/ftpwhoinstall -c -o bin -g bin -m 111 bin/privatepw /usr/bin/privatepwinstalling manpages.install -c -o bin -g bin -m 444 doc/ftpcount. 1 /usr/man/man1/ftpcount. 1install -c -o bin -g bin -m 444 doc/ftpwho. 1 /usr/man/man1/ftpwho. 1install -c -o bin -g bin -m 444 doc/ftpaccess.5 /usr/man/man5/ftpaccess.5install -c -o bin -g bin -m 444 doc/ftpconversions.5 /usr/man/man5/ftpconversio5install -c -o bin -g bin -m 444 doc/ftphosts.5 /usr/man/man5/ftphosts.5install -c -o bin -g bin -m 444 doc/xferlog.5 /usr/man/man5/xferlog.5install -c -o bin -g bin -m 444 doc/ftpd.8 /usr/man/man8/ftpd.8

5、 编辑"/etc/inetd.conf"文件,指向新的ftpd守护进程,大多数情况下,这一步是不必的, 因为在build install时,会将新的守护进程拷贝覆盖老的守护进程。若希望使用ftpd的增强的扩展功能,应该在这行最后加上"-a"选项。ftpd守护进程一般能够携带如下参数,也能够不带任何参数:

-d debug参数, 当ftpd守护进程出现错误时,会将错误信息写入到系统记录文件/usr/adm/syslog中-l记录每次ftp会话信息到/usr/adm/messages中

-t设置当FTP客户端多久无操作就自动断线,这个参数后面指定等待的时间,如-t 600表示若客户端若连续10分钟没有动作就自动断线,缺省值是15分钟

-a使用ftpaccess配置文件内容对ftpd进行更详细复杂的设置

-A不使用ftpaccess配置文件的设置,缺省值是-A

-i当客户端有上载文件的动作时,就记录在文件xferlog中

-L使用户连接ftp服务器期间使用的所有命令都被记录到/usr/adm/messages中

6、 拷贝tar、 gzip、 gunzip、 compress、 uncompress等文件到"~ftp/bin"中,拷贝"ls"为"~ftp/bin/ls"。

7、 若是第一次安装,使用"ckconfig"程序查找ftpd的各种配置文件存放目录: ftpconversions、ftpusers、 和ftpgroups。在"doc/examples"目录下有样本文件。 "ckconfig"是一个可执行程序,确保修复该程序检测到的任何问题。

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。

1.3让FTP服务器运转起来

一般来说, 只要正确地编译安装了wu-f tpd,该服务器就能够正常运行。用户能够经过FTP命令从各种系统上连接该服务器。

1.4配置文件的设置

1.4. 1 /etc/ftpaccess的设置

这个配置文件是FTP服务器最重要的配置文件,这个文件的设置决定了FTP是否能够正常工作及许多访问权限的设置。如下面的例子所示:class all real,guest,anonymous *limit all 10 Any /etc/msgs/msg.deadreadme README* loginreadme README* cwd=*message /welcome.msg loginmessage .message cwd=*compress yes alltar yes alllog commands reallog transfers anonymous,real inbound,outboundshutdown /etc/shutmsgemail user@hostname

下面是设置文件各个指示(directive)的详细说明:

指示: loginfails n

密码输入n次就自动断开连接

指示: autogroup组名类别[ . . . ]

若一个匿名用户属于任何一个参数类别的类,则FTP服务器将实施setegid()调用使其属于这个组名定义的组,这样做是为了实现某些特定类别的匿名用户能够访问一些只允许本组及拥有者能够访问的文件。组名必须是/etc/group内定义的有效组。

指示: class类名类别(real、 guest、 anonumous) IP地址

这个指示是设定FTP服务器用户的类别。

FTP服务器的用户能够分为以下三种类别:real在该FTP服务器上拥有合法帐户的用户;

ZJI:韩国BGP+CN2线路服务器,国内三网访问速度优秀,8折优惠码每月实付440元起

zji怎么样?zji最近新上韩国BGP+CN2线路服务器,国内三网访问速度优秀,适用8折优惠码zji,优惠后韩国服务器最低每月440元起。zji主机支持安装Linux或者Windows操作系统,会员中心集成电源管理功能,8折优惠码为终身折扣,续费同价,全场适用。ZJI是原Wordpress圈知名主机商:维翔主机,成立于2011年,2018年9月启用新域名ZJI,提供中国香港、台湾、日本、美国独立服...

优林70/月,西南高防地区最低70/月

优林怎么样?优林好不好?优林 是一家国人VPS主机商,成立于2016年,主营国内外服务器产品。云服务器基于hyper-v和kvm虚拟架构,国内速度还不错。今天优林给我们带来促销的是国内西南地区高防云服务器!全部是独享带宽!续费同价!官方网站:https://www.idc857.com​地区CPU内存硬盘流量带宽防御价格购买地址德阳高防4核4g50G无限流量10M100G70元/月点击购买德阳高防...

趣米云月付460元,香港CN2云服务器VPS月付低至18元

趣米云早期为做技术起家,为3家IDC提供技术服务2年多,目前商家在售的服务有香港vps、香港独立服务器、香港站群服务器等,线路方面都是目前最优质的CN2,直连大陆,延时非常低,适合做站,目前商家正在做七月优惠活动,VPS低至18元,价格算是比较便宜的了。趣米云vps优惠套餐:KVM虚拟架构,香港沙田机房,线路采用三网(电信,联通,移动)回程电信cn2、cn2 gia优质网络,延迟低,速度快。自行封...

架设ftp为你推荐
neworiental我国最好的英语学校是在哪里?今日油条油条晚上炸好定型明天可再复炸吗?今日油条油条的由来及历史云计算什么叫做“云计算”?lunwenjiancepaperfree论文检测怎样算合格陈嘉垣陈浩民狼吻陈嘉恒是什么时候的事rawtools照片上面的RAW是什么意思,为什么不能到PS中去编辑月神谭求古典武侠类的变身小说~!789se.comhttp://gv789.com/index.php这个网站可信吗?是真的还是假的!www.5any.comwww.qbo5.com 这个网站要安装播放器
短域名 域名转让网 海外域名注册 免费linux主机 免费域名申请 wordpress主机 enom 国内免备案主机 t楼 godaddy主机 linode代购 cpanel idc评测网 wdcp godaddy域名转出 tk域名 圣诞节促销 坐公交投2700元 php空间推荐 paypal注册教程 更多