1、 1 引言11.1课程设计目的1自从有了网络以来,通过网络来传输文件一直是一项很重要的工作,不但可以实现文件的下载和上传,而且可以设置不同的用户访问权限,并支持大文件的断点续传功能。采用FTP服务可以使传输文件工作变得非常轻松。本课程设计利用基于Linux的FTP服务器的安装与配置,理解FTP的工作原理和作用,掌握FTP服务器的基本配置方法,通过操作系统自带的ftp命令验证FTP服务器的配置,巩固和运用所学课程,理论联系实际,提高分析、解决计算机技术实际问题的独立工作能力。12 相关技术介绍21 引言1.1课程设计目的 自从有了网络以来,通过网络来传输文件一直是一项很重要的工作,不但可以实现文
2、件的下载和上传,而且可以设置不同的用户访问权限,并支持大文件的断点续传功能。采用FTP服务可以使传输文件工作变得非常轻松。本课程设计利用基于Linux的FTP服务器的安装与配置,理解FTP的工作原理和作用,掌握FTP服务器的基本配置方法,通过操作系统自带的ftp命令验证FTP服务器的配置,巩固和运用所学课程,理论联系实际,提高分析、解决计算机技术实际问题的独立工作能力。1.2课程设计内容本课程设计主要完成基于Linux的FTP服务器的安装于配置,实现局域网和外网的客户端主机访问FTP服务器并实现文件的上传和下载。该设计主要分为两部分,服务端部分和局域网及外网客户端部分。在虚拟机的Linux操作
3、系统上上构架FTP服务器,即安装和配置FTP服务器。在局域网及外网的客户主机上对本地主机上的FTP进行访问以及进行文件上传和下载。2 相关技术介绍2.1 Linux的简单介绍Linux是一套免费使用和自由传播的类UNIX操作系统,具有UNIX全部功能的免费操作系统,它在众多的软件中占有很大的优势,为广大的计算机爱好者提供了学习、探索以及修改计算机操作系统内核的机会。Linux操作系统具有开放性、多用户、多任务、良好的用户界面、设备独立性、良好的可移植性、可靠的安全性、兼容其他UNIX系统、支持多种文件系统以及提供了丰富的网络功能等特点。UNIX是在互联网的基础上繁荣起来的,Linux的网络功能
4、当然不会逊色。它的网络功能和其内核紧密相连,在这方面Linux要优于其他操作系统。支持Internet是其网络功能之,Linux免费提供了大量支持Internet的软件,Internet是在UNIX领域中建立并繁荣的,因此在这方面使用Linux是相当方便的,用户能用Linux与世界上的其他人通过Internet进行通信。文件传输时期网络功能之二,用户能够通过一些Linux命令完成内部信息或文件的传输。远程访问是其网络功能之三,Linux不仅允许进行文件和程序的传输,它还为系统管理员和技术人员提供了访问其他系统的窗口。通过这种远程访问的功能,一位技术人员能够有效地为多个系统提供服务,即使这些系统
5、位于相距很远的地方。2.2 FTP介绍 1.FTP服务 FTP(File Transfer Protocol)是Internet上用来传送文件的协议(文件传输协议),是TCP/IP协议族中的协议之一,它是为了能够在Internet上互相传送文件而制定的文件传送标准,规定了Internet上文件如何传送。该协议是Internet文件传送的基础,它是由一系列的规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机的方法,使存储介质对用户透明和可靠高效地传送数据。也就是说,通过FTP协议,就可以完成两台计算机之间的复制,从远程计算机复制文件至自己的计算机上,称为“下载(Download)
6、”文件,若将文件从自己的计算机中复制至远程计算机上,则称为“上传(Upload)文件。在TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口号为20。FTP服务的工作模式如图1.1所示。 图1.1 FTP服务的工作模式2. FTP服务器和客户端 同大多数Internet服务一样,FTP也是一个客户/服务器系统。用户通过一个客户端程序连接在远程计算机上运行的服务器程序。依照FTP协议提供的服务、进行文件传送的计算机就是FTP服务器,而连接在FTP服务器、遵循FTP协议与服务器传送文件的计算机就是FTP客户端。FTP服务以下载为例,当启动FTP从远程计算机复制文件时,事实上启
7、动了两个程序。一个是本地计算机上的FTP客户程序,它向FTP服务器提出复制文件的请求。另一个是启动在远程计算机上的FTP服务器程序,它响应请求把指定的文件传送到本地计算机中。用户端要在自己的本地计算机上安装FTP客户程序。FTP客户程序有字符界面和图形界面两种。字符界面的FTP命令复杂、繁多。图形界面的FTP客户程序,操作上要简捷方便得多。3. FTP用户授权 一般来说,要使用FTP服务器,必须经过FTP服务器的授权认证后,才能登陆FTP服务器传输文件。根据FTP服务器的提供的服务对象不同,可以将FTP服务的使用者分成以下三类。(1)本地用户。如果用户在远程FTP服务器上拥有账号,用户为本地用
8、户。本地用户可以通过输入自己的账号和密码进行登陆。当登陆成功后,其登陆目录为系统提供给该用户的根目录($HOME),如/home/user1,用户利用FTP访问该目录如同在本地一样,可以进行下载和上传文件。(2)Guest用户。当FTP服务器为某些特定用户提供公认账号和密码,且此账号只能用于文件传输服务,其登陆的目录为指定目录,此用户类别为Guest用户。通常情况下,为该用户群提供文件下载及上传功能。(3)匿名用户。如果该用户在远程的FTP服务器上没有自己的账号,则称此用户为匿名用户。若FTP服务器提供匿名访问功能,则匿名用户可以通过输入anonymous用户名和空的口令来进行登录,一般情况下
9、匿名登陆的FTP服务器只提供文件下载功能。匿名FTP一直是Internet上获取信息资源的最主要的方式。4. FTP的传输模式FTP的传输有两种方式:ASCII传输模式和二进制数据传输模式。(1)ASCII传输方式。假定用户正在复制的文件包含简单的ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时FTP通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序、数据库、字处理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中也包含有指示页尺寸、字库等信息的非打印字符)。在复制任何
10、非文本文件之前,用binary命令告诉FTP逐字复制,不要对这些文件进行处理。(2)二进制传输模式。在二进制传输中,保存文件的位序,以便原文件和复制文件值逐位一一对应的。即使目的地机器上含有位序列的文件是没意义的。如果在ASCII方式下传输二进制文件,即使不需要也仍会转译。这会使传输稍微变慢,也会损坏数据,使文件变得不能用(在大多数计算机上,ASCII方式一般假设每一字符的第一有效位无意义,因为ASCII字符组合不使用它。如果传输二进制文件,所有的位都是重要的)。如果知道这两台机器是同样的,则二进制方式对文本文件和数据文件都是有效的。2.3 Linux下的FTP服务器 1. Wu-ftpd W
11、u-ftpd是大多数的Linux操作系统选用最多的FTP服务器端软件,它是一个著名的、历史悠久的、使用最广泛的非商业FTP服务器软件之一,遵守GPL条款,全称为Washington University FTP,简称为Wu-fptd。它功能强大,能够很好的运行在众多的UNIX操作系统中。Wu-ftpd具有以下主要特点。(1) 可以对不同网络上的计算机做不同的存取限制。(2) 可以在文件的上传下载的同时对文件做自动的压缩机解压缩操作。(3) 可以动态监测文件传输的相关信息,并记录文件上传下载时间。(4) 可以设置最大连接数,提高效率,有效地控制负载。2. Proftpd Proftpd是在自由软
12、件基金会的版权声明(GPL)下开发的免费软件,它设计的初衷是实现一个安全、易于设定的FTP服务软件,是对Wu-ftpd的漏洞的改进开发,并增加了很多功能,但很快发现必须对Wu-ftpd全部重新写代码才能弥补欠缺,所以现在的Proftpd是完全独立并且功能完整的FTP服务器软件。它的主要特点如下。(1) 具有单一的主配置文件,容易设定设置。(2) 可以对每个目录都进行特殊的权限设定。(3) 可以设定多个虚拟的FTP服务器。(4) 可以根据负载对每个用户设定独立进程。(5)系统可以对用户上传的文件进行权限设定,自动阻止外部程序在FTP服务器上执行,以免造成安全漏洞。3. vsftpd vsftpd
13、是一个基于GPL发布的类UNIX系统上使用的FTP服务器软件,其中vs是“Very Secure”的缩写,是基于文件安全、稳定传输而设计的。使用ASCII模式下载数据时,vsftpd的速度是Wu-ftpd的两倍,且vsftpd可以支持15000个并发用户。vsftpd具有以下主要特点。(1) 是一个安全、稳定、高速的FTP服务器。(2) 可以设定多个基于IP的虚拟FTP服务器。(3) 不执行任何外部程序,相对降低了安全隐患。(4) 支持虚拟用户,并且每个虚拟用户具有独立的配置。(5) 支持宽带限制等。2.4 虚拟机的bridged(桥接)网络连接方式在bridged模式下,虚拟机内的操作系统就
14、像是局域网中的一台独立的主机,它可以访问网内任何一台机器。使用bridged模式的虚拟系统和宿主机器的关系,就像连接在同一个Hub上的两台电脑。如果你想利用虚拟机在局域网内新建一个虚拟服务器,为局域网用户提供网络服务,就应该选择bridged模式。这种方式最简单,直接将虚拟网卡桥接到一个物理网卡上面,和Linux下一个网卡 绑定两个不同地址类似,实际上是将网卡设置为混杂模式,从而达到侦听多个IP的能力。 在此种模式下,虚拟机内部的网卡(例如Linux下的eth0)直接连到了物理网卡所在的网络上,可以想象为虚拟机和host机处于对等的地位,在网络关系上是平等的,没有谁在谁后面的问题。 bridg
15、ed网络连接模型如图2.1所示。图2.1 bridged网络连接方式模型2.5 端口映射端口映射又叫端口转发,又叫虚拟服务器。端口映射其实就是常说的NAT地址转换的一种,其功能就是把在公网的地址转翻译成私有地址。采用路由方式的ADSL宽带路由器拥有一个动态或固定的公网IP,路由器下的私有地址可以使用公网地址进行Internet访问。但不在同一路由器下的主机既不能使用本地主机的私有地址也不能使用本地主机的公网地址来对本地主机进行访问。如若要实现外网访问本地主机便要在路由器中进行端口映射。3 系统设计3.1 系统结构设计在TCP/IP网络应用中,通信的两个进程间相互作用的主要模式是客户/服务器模式
16、(Client/Servermodel),即客户向服务器发出服务请求,服务器接收到请求后,提供相应的服务。客户/服务器模式的建立基于以下两点:首先,建立网络的起因是网络中软硬件资源、运算能力和信息不均等,需要共享,从而造就拥有众多资源的主机提供服务,资源较少的客户请求服务这一非对等作用。其次,网络间进程通信完全是异步的,相互通信的进程间既不存在父子关系,又不共享内存缓冲区,因此需要一种机制为希望通信的进程间建立联系,为二者的数据交换提供同步,这就是客户端/服务器模式的TCP/IP。在客户/服务器模型中,多个相互通信的计算机都作为客户端,与网络服务器进行连接,并通过服务器进行信息的传递。所以多个
17、客户端之间的通信就变为了客户端与服务端的通信。本设计采用客户/服务器的模型。该方案中构架的FTP服务器是在本地主机上虚拟机中的Linux操作系统中。局域网及外网的主机作为客户端来该对方案中构架的FTP服务器进行访问,并实现文件的上传和下载。该方案的系统结构如图3.1所示。图3.1 方案系统构架3.2 通信连接设计由于该设计中构建的FTP服务器是在虚拟机中的Linux,所以必须设置好通信连接方式。(1)局域网内的主机访问FTP服务器。本设计中虚拟机使用的网络连接方式为bridged方式。在bridged模式下,在路由器下为虚拟机分配一个局域网的内网IP,虚拟机内的操作系统就像是局域网中的一台独立
18、的主机,它可以访问网内任何一台机器。局域网内的主机访问虚拟机内的FTP服务器犹如访问局域网内的另一台机器上的FTP服务器,并能够实现文件的上传和下载。 (2)外网主机访问FTP服务器。本设计中使用端口映射的方法将公网IP与内网IP之间进行端口映射,即将公网IP转翻译成内网IP,使外网主机通过公网IP能够访问本地主机上的FTP服务器并实现文件的上传和下载。4 实现方案4.1 FTP服务器的配置 本设计中使用的FTP服务器是Centos5.5 Linux操作系统自带的vsftpd服务器。 1. vsftpd服务的安装与启动(1)安装 首先检查vsftpd服务的安装情况,在Linux终端输入如下命令
19、: rootlocalhost # rpm qa | grep vsftpd 如果不显示任何信息,说明没有安装vsftpd服务器程序。可以在网上下载vsftpd的tar或rpm包然后在Linux终端执行如下命令:rootlocalhost # rpm ivh vsftpd-2.0.5.i386.rpm (2) 启动 在安装了vsftpd服务器程序后,可以用如下命令进行vsftpd服务器的启动、停止与重新启动: rootlocalhost # service vsftpd start rootlocalhost # service vsftpd stoprootlocalhost # servi
20、ce vsftpd restart也可以用ntsysv命令,设置系统启动时自动加载vsftpd服务器的启动。2. vsftpd服务器的默认配置信息(1)Centos5.5 Linux操作系统中的vsftpd服务的默认文件有3个。1. /etc/vsftpd/vsftpd.conf是主要配置文件。2. /etc/vsftpd/ftpusers指定了哪些本地用户不能访问FTP服务。3. /etc/vsftpd/user_list是主配文件中设定的允许访问FTP服务的本地用户。(2)在/etc/vsftpd/vsftpd.conf主配文件中默认设置的主要配置参数及含义如下:/允许匿名访问anonym
21、ous_enable = YES/允许本地用户访问local_enable = YES/开放本地用户的写权限 write_enable = YES /出于安全考虑,设置本地用户文件生成掩码为022,默认为077,若本地文件具有执行权限/则上传到服务器后为777-022=755,若本地文件不具有执行权限,则上传后权限为644 local_umask = 022 /当切换目录,显示该目录下的.message隐含文件内容 dirmessage_enable = YES /激活上传和下载日志 xferlog_enable = YES /启动FTP数据端口的连接请求 connect_from_port_
22、20 = YES /使用标准的ftpd_xferlog日志格式 xferlog_std_format = YES /设置PAM认证服务的配置文件名称 pam_service_name = vsftpd /激活vsftpd检查userlist_file指定的用户是否可以访问vsftpd服务器 userlist_enable = YES /使vsftpd处于独立启动模式 listen = YES /使用tcp_wrappers作为主机访问控制方式 tcp_wrappers = YES3.修改默认配置 (1)允许匿名访问上传文件。一般情况下,匿名用户只能下载文件但不能上传文件。允许匿名访问上传文件,
23、需要做如下操作步骤。 1. 修改配置文件,激活以下两项,即将原文件以下两行前的“#”去掉。 anon_upload_enable = YES /允许匿名用户上传 anon_mkdir_write_enable = YES /允许匿名创建新目录 2. 在原配置文件末尾添加下面两行。 anon_world_readable_only = NO /开放匿名用户的浏览权限 write_enable = YES /开放匿名用户写权限3. 修改配置文件后,存盘退出,重新启动vsftpd服务,立刻生效。4. 修改匿名用户上传目录的权限,在终端中输入如下命令:# chomd 777 /var/ftp/pub
24、(2)限制本地用户的访问。限制指定的本地用户不能访问FTP服务,而其他本地用户可以访问,需要在主配置文件中进行如下设置: user_enable = YES /允许装入用户列表文件清单 userlist_deny = YES /读取的文件清单用户是否拒绝访问FTP服务 userlist_file = /etc/vsftpd/user_list /指定用户清单文件 以上设置的/etc/vsftpd/user_list文件列出的用户清单指定的本地用户不可以访问FTP服务器,而其他用户可以访问。/etc/vsftpd/user_list用户清单文件格式要求均为每个用户名各占一行。(3)修改端口号。一
25、般FTP默认端口为21,为了安全,且不和其他冲突,应该将端口号改大,如61121,更改vsftpd服务的端口号,可以在主配置文件中添加一行,信息如下:Listen_port = 61121更改后保存,重新启动vsftpd服务后即可生效。4. 设置用户连接FTP服务器后的欢迎语用户连接服务器后显示提示信息或对来访用户的欢迎词,统称为欢迎语,vsftpd服务器提供了两种方式的用户欢迎语。(1)登录前的欢迎语。在vsftpd服务主配置文件/etc/vsftpd/vsftpd.conf中,有如下默认选项:#ftpd_banner = Welcome to blah FTP service.去掉前面的注
26、释符“#”生效后,用户在执行FTP命令连接FTP服务后显示如下信息:“Welcome to blah FTP service.”,或者在配置文件上再加上如下信息:banner_file = /etc/vsftpd_banner_file则用户连接FTP服务后显示的欢迎信息为/etc/vsftpd_banner_file文件所包含的内容,而代替了ftpd_banner所赋给的信息。(2)登录后的欢迎语。用户在登录后,在各自的目录内,新建立“.message”文件,该文件的内容即为用户连接FTP服务并登录后或跳转目录所显示的欢迎语。在每个目录内因“.message”文件内容不同,可以建立个性化的欢
27、迎语。4.2 虚拟机的网络连接方式设置 本设计中,虚拟机的网络连接采用的是bridged方式。在虚拟机中安装Centos5.5 Linux操作时,将Linux操作系统的网络连接方式选择为bridged。系统安装成功后,会自动获取一个内网的IP地址,不必手工配置网络信息。4.3 端口映射设置 (1)在Linux系统终端输入ifconfig命令,得到虚拟机的内网IP地址。 (2)在windows操作系统下的浏览器地址栏中输入192.168.1.1,输入用户名和密码进入本地主机所在局域网的路由器。点击路由器中的转发规则,选择虚拟服务器,进行虚拟机的内网IP的端口映射。 (3)保存,退出即可生效。5
28、测试5.1 vsftpd的服务的启动 在Linux终端输入service vsftpd start命令启动vsftpd服务器,vsftpd服务器的启动如图5.1所示。图5.1 vsftpd服务器的启动5.2 在局域网内客户端机器上测试vsftpd服务器的默认配置 1. 匿名用户访问。1. 默认路径。在默认情况下vsftpd服务是允许匿名访问的,匿名访问默认的下载文件目录地址的/var/ftp/pub,该目录为空。2. 在Linux系统终端输入ifconfig命令,得到虚拟机的内网IP地址192.168.1.108(即inet addr)。虚拟机的IP地址如图5.2所示。图5.2 虚拟机的IP地
29、址3. 局域网内匿名测试登录。为了便于测试,先在FTP服务器上的/var/ftp/pub目录建立一个calendar.txt文件。然后在局域网的另一台计算机上的Linux操作系统中用FTP命令访问FTP服务器。其中FTP服务器的IP地址为192.168.1.108,在本地测试可以用本地IP(127.0.0.1)进行测试。匿名用户访问FTP服务器如图5.3所示。图5.3 匿名用户访问FTP服务器图5.3中,匿名用户的账号为anonymous,密码为空,要求输入密码时,直接回车。图中的ls命令用来显示匿名FTP服务目录。cd pub命令用来进入匿名FTP服务匿名下载目录。mget cal*命令用来
30、下载服务器上pub目录中的calendar.txt文件。!ls命令用来显示本地文件。从最后一个!ls命令可以看出,calendar.txt文件已下载成功。一般情况下,匿名用户不能离开匿名服务目录/var/ftp,且只能下载不能上传文件。2. 本地用户访问1. 默认路径。若FTP服务器中已建立了本地用户fill,则vsftpd服务不需要配置即可使用本地账号fill进行登录,登录后访问的FTP服务器目录地址为该用户账号默认路径/home/fill。2. 测试登录。与匿名用户登录方法相同。登录测试结果如图5.4所示。图5.4 本地用户登录FTP服务器结果图5.4中,本地用户账号为fill,输入用户的
31、密码后,即可登录成功。图中的!ls命令用来显示本地文件。ls命令显示FTP服务器主机文件。put phddns-2.0.2.16556.tar.gz用来将本地文件phddns-2.0.2.16556.tar.gz上传到FTP服务器。从最后一个ls命令可以看出,本地文件phddns-2.0.2.16556.tar.gz已成功上传。5.3 修改vsftpd服务器的默认配置后的测试1. 允许匿名访问上传文件修改有关允许匿名上传文件的相关配置后,用与修改vsftpd服务器的默认配置文件之前相同的方法在局域网内的客户端机器上的Linux操作系统中访问FTP服务器。匿名访问FTP服务器上传文件如图5.5所
32、示。图5.5 匿名用户上传文件图5.5中,用匿名用户的账号anonymous登录。!ls命令显示本地文件。ls命令显示FTP服务器主机文件。put phddns-2.0.2.16556.tar.gz命令将本地文件phddns-2.0.2.16556.tar.gz上传到FTP服务器主机。从最后一个ls命令可以看出,修改配置文件后,匿名用户成功上传文件到FTP服务器。2. 限制本地用户的访问在主配置文件中,配置好与限制本地用户访问FTP服务器的相关的配置文件文件后,进行测试。以本地用户fill为例,即根据相关配置将本地用户fill的访问FTP服务器的权限设置为不能访问。限制本地用户fill访问权限
33、的测试结果如图5.6所示。图5.6 限制本地用户fill访问权限测试结果图5.6中,修改与限制本地用户fill访问FTP服务器的相关的配置文件后,测试结果显示出本地用户fill登录失败。5.4 修改端口号设置 在配置文件中,将FTP的默认端口号21改为61121。修改端口号后,输入命令netstat -ntpl | grep vsftpd查看vsftpd的端口,测试结果如图5.7所示。图5.7 修改端口号测试结果5.5 用户连接FTP服务器后的欢迎语测试1. 登录前的欢迎语测试。修改与登录前欢迎语的相关配置文件后,测试结果如图5.8所示。图5.8 登录前的欢迎语测试 2. 登录后的欢迎语测试。
34、修改与登录后的欢迎语的相关配置文件后,测试结果如图5.9所示。图5.9 登录后的欢迎语测试5.6 客户端在Windows操作系统下访问FTP服务器1. 局域网访问(1)在Windows操作系统的万维网浏览器中输入FTP服务器的IP地址(192.168.1.108),匿名登录测试结果如图5.10所示。图5.10 内网客户端匿名登录访问FTP服务器(2)内网客户端匿名登录下载文件phddns-2.0.2-16556.tar.gz,如图5.11所示。图5.11 内网客户端匿名登录下载文件(3)匿名登录在Windows操作系统下的资源管理器中访问FTP服务器并上传文件,如图5.12所示。图5.12 内
35、网客户端匿名登录上传文件到FTP服务器2. 外网访问 (1)端口映射设置。端口映射设置如图5.13所示。图5.13 端口映射设置(2)外网访问FTP服务器。在外网的客户端主机的Windows操作系统的万维网浏览器上,使用FTP所在局域网的路由器的公网网址和端口映射设置的端口(ftp:/ 118.249.142.156:21)即可访问FTP服务器。匿名登录测试结果如图5.14所示。图5.14外网客户端主机匿名登录访问FTP服务器 (3)外网客户端匿名登录下载文件phddns-2.0.2-16556.tar.gz,如图5.15所示。图5.15 外网客户端主机匿名登录下载文件 (4)外网客户端主机匿
36、名登录上传文件,如图5.16所示。图5.16 外网客户端匿名登录上传文件6 结束语 通过独立完成本次课程设计,我对FTP服务器的工作原理有了更加深刻的理解,并掌握FTP服务器的基本配置方法。在FTP服务器的安装与配置中,碰到很多问题,通过查阅相关资料,问题得到了解决,测试工作也顺利进行,本人希望通过以后的学习继续加深对这方面知识的掌握。通过本次课程设计,我深刻明白了理论与实践之间的关系和它们相结合的重要性,并提高了本人独立解决问题的能力,同时也提高了综合运用所学知识的能力。在本次课程设中遇到不少的问题,在此要感谢指导老师和帮助我的同学,让我能按时完成任务。文档来源网络,版权归原作者。如有侵权,请告知,我看到会立刻处理。