Yayi和大家一起学习Fedora系列教程–第七课

Filed in Computer 0 comments

现在我们开始讲FTP服务了。

那么什么是FTP服务捏?

FTPFile Transfer Protocol),是文件传输协议的简称。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。

FTP的作用

正如其名所示:FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。

FTP工作原理

拿下载文件为例,当你启动FTP从远程计算机拷贝文件时,你事实上启动了两个程序:一个本地机上的FTP客户程序:它向FTP服务器提出拷贝文件的请求。另一个是启动在远程计算机的上的FTP服务器程序,它响应你的请求把你指定的文件传送到你的计算机中。FTP采用客户机/服务器方式,用户端要在自己的本地计算机上安装FTP客户程序。FTP客户程序有字符界面和图形界面两种。字符界面的FTP的命令复杂、繁多。图形界面的FTP客户程序,操作上要简洁方便的多。

简单地说,支持FTP协议的服务器就是FTP服务器,下面介绍一下什么是FTP协议。(文件传输协议)

一般来说,用户联网的首要目的就是实现信息共享,文件传输是信息共享非常重要的一个内容之一。Internet上早期实现传输文件,并不是一件容易的事,我们知道 Internet是一个非常复杂的计算机环境,有PC,有工作站,有MAC,有大型机,据统计连接在Internet上的计算机已有上千万台,而这些计算机可能运行不同的操作系统,有运行Unix的服务器,也有运行DosWindowsPC机和运行MacOS的苹果机等等,而各种操作系统之间的文件交流问题,需要建立一个统一的文件传输协议,这就是所谓的FTP。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议,这样用户就可以把自己的文件传送给别人,或者从其它的用户环境中获得文件。

与大多数Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。比如说,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会响应这条命令,将指定文件送至用户的机器上。客户机程序代表用户接收到这个文件,将其存放在用户目录中。

FTP的使用当中,用户经常遇到两个概念:下载Download)和上载Upload)。下载文件就是从远程主机拷贝文件至自己的计算机上;上传文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上载(下载)文件。

使用FTP时必须首先登录,在远程主机上获得相应的权限以后,方可上载或下传文件。也就是说,要想同哪一台计算机传送文件,就必须具有哪一台计算机的适当授权。换言之,除非有用户ID和口令,否则便无法传送文件。这种情况违背了Internet的开放性,Internet上的FTP主机何止千万,不可能要求每个用户在每一台主机上都拥有帐号。匿名FTP就是为解决这个问题而产生的。

匿名FTP是这样一种机制,用户可通过它连接到远程主机上,并从其下载文件,而无需成为其注册用户。系统管理员建立了一个特殊的用户ID,名为anonymous, Internet上的任何人在任何地方都可使用该用户ID

通过FTP程序连接匿名FTP主机的方式同连接普通FTP主机的方式差不多,只是在要求提供用户标识ID时必须输入anonymous,该用户ID的口令可以是任意的字符串。习惯上,用自己的E-mail地址作为口令,使系统维护程序能够记录下来谁在存取这些文件。

值得注意的是,匿名FTP不适用于所有Internet主机,它只适用于那些提供了这项服务的主机。

当远程主机提供匿名FTP服务时,会指定某些目录向公众开放,允许匿名存取。系统中的其余目录则处于隐匿状态。作为一种安全措施,大多数匿名FTP主机都允许用户从其下载文件,而不允许用户向其上载文件,也就是说,用户可将匿名FTP主机上的所有文件全部拷贝到自己的机器上,但不能将自己机器上的任何一个文件拷贝至匿名FTP主机上。即使有些匿名FTP主机确实允许用户上载文件,用户也只能将文件上载至某一指定上载目录中。随后,系统管理员会去检查这些文件,他会将这些文件移至另一个公共下载目录中,供其他用户下载,利用这种方式,远程主机的用户得到了保护,避免了有人上载有问题的文件,如带病毒的文件。

作为一个Internet用户,可通过FTP在任何两台Internet主机之间拷贝文件。但是,实际上大多数人只有一个Internet帐户,FTP主要用于下载公共文件,例如共享软件、各公司技术支持文件等。 Internet上有成千上万台匿名FTP主机,这些主机上存放着数不清的文件,供用户免费拷贝。实际上,几乎所有类型的信息,所有类型的计算机程序都可以在Internet上找到。这是Internet吸引我们的重要原因之一。

匿名FTP使用户有机会存取到世界上最大的信息库,这个信息库是日积月累起来的,并且还在不断增长,永不关闭,涉及到几乎所有主题。而且,这一切是免费的。

匿名FTPInternet网上发布软件的常用方法。Internet之所以能延续到今天,是因为人们使用通过标准协议提供标准服务的程序。像这样的程序,有许多就是通过匿名FTP发布的,任何人都可以存取它们。

Internet中的有数目巨大的匿名FTP主机以及更多的文件,那么到底怎样才能知道某一特定文件位于哪个匿名FTP主机上的那个目录中呢?这正是Archie服务器所要完成的工作。Archie将自动在FTP主机中进行搜索,构造一个包含全部文件目录信息的数据库,使你可以直接找到所需文件的位置信息。

FTP的用户分类及权限归属

在考虑FTP服务器安全性工作的时候,第一步要考虑的就是谁可以访问FTP服务器。在Vsftpd服务器软件中,默认提供了三类用户。不同的用户对应着不同的权限与操作方式。

一类是Real帐户。这类用户是指在FTP服务上拥有帐号。当这类用户登录FTP服务器的时候,其默认的主目录就是其帐号命名的目录。但是,其还可以变更到其他目录中去。如系统的主目录等等。

第二类帐户是Guest用户。在FTP服务器中,我们往往会给不同的部门或者某个特定的用户设置一个帐户。但是,这个账户有个特点,就是其只能够访问自己的主目录。服务器通过这种方式来保障FTP服务上其他文件的安全性。这类帐户,在Vsftpd软件中就叫做Guest用户。拥有这类用户的帐户,只能够访问其主目录下的目录,而不得访问主目录以外的文件。

第三类帐户是Anonymous(匿名)用户,这也是我们通常所说的匿名访问。这类用户是指在FTP服务器中没有指定帐户,但是其仍然可以进行匿名访问某些公开的资源。

在组建FTP服务器的时候,我们就需要根据用户的类型,对用户进行归类。默认情况下,Vsftpd服务器会把建立的所有帐户都归属为Real用户。但是,这往往不符合企业安全的需要。因为这类用户不仅可以访问自己的主目录,而且,还可以访问其他用户的目录。这就给其他用户所在的空间 带来一定的安全隐患。所以,企业要根据实际情况,修改用户所在的类别。

通过ftp传输文件的一般步骤

需要进行远程文件传输的计算机必须安装和运行ftp客户程序。在windows操作系统的安装过程中,通常都安装了tcp/ip协议软件,其中就包含了ftp客户程序。但是该程序是字符界面而不是图形界面,这就必须以命令提示符的方式进行操作,很不方便。

启动ftp客户程序工作的另一途径是使用ie浏览器,用户只需要在ie地址栏中输入如下格式的url地址:ftp//[用户名:口令@]ftp服务器域名[:端口号]

(CMD命令行下也可以用上述方法连接,通过put命令和get命令达到上传和下载的目的,通过ls命令列出目录,除了上述方法外还可以在cmd下输入ftp回车,然后输入open IP来建立一个连接,此方法还适用于linux下连接ftp服务器)

通过ie浏览器启动ftp的方法尽管可以使用,但是速度较慢,还会将密码暴露在ie浏览器中而不安全。因此一般都安装并运行专门的ftp客户程序。

1.在本地电脑上登陆到国际互联网.

2.搜索有文件共享主机或者个人电脑(一般有专门的FTP服务器网站上公布的,上面有进入该主机或个人电脑的名称,口令和路径).

3.当与远程主机或者对方的个人电脑建立连接后,用对方提供的用户名和口令登陆到该主机或对方的个人电脑.

4.在远程主机或对方的个人电脑登陆成功后,就可以上传你想跟别人分享的东东或者下载别人授权共享的东东(这里的东东是指能放到电脑里去又能在显示屏上看到的东东).

5.完成工作后关闭FTP下载软件,切断连接.

为了实现文件传输,用户还要运行专门的文件传输程序,比如网际快车就有这方面的功能,其它还有很多专门的FTP传输软件,FlashFxp为其中的杰出软件。有兴趣的网友可以试试其他的软件,如LeapFTP总归各有各的特色.

FTP协议

TCP/IP协议中,FTP标准命令TCP端口号为21Port方式数据端口为20FTP协议的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的位置、联接的方式、甚至是是否使用相同的操作系统无关。假设两台计算机通过ftp协议对话,并且能访问Internet 你可以用ftp命令来传输文件。每种操作系统使用上有某一些细微差别,但是每种协议基本的命令结构是相同的。

FTP的传输有两种方式:ASCII传输模式和二进制数据传输模式。

1ASCII传输方式:假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。

但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中也包含有指示页尺寸,字库等信息的非打印字符)。在拷贝任何非文本文件之前,用binary 命令告诉ftp逐字拷贝,不要对这些文件进行处理,这也是下面要讲的二进制传输。

2.二进制传输模式:在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。

如果你在ASCII方式下传输二进制文件,即使不需要也仍会转译。这会使传输稍微变慢 ,也会损坏数据,使文件变得不能用。(在大多数计算机上,ASCII方式一般假设每一字符的第一有效位无意义,因为ASCII字符组合不使用它。如果你传输二进制文件,所有的位都是重要的。)如果你知道这两台机器是同样的,则二进制方式对文本文件和数据文件都是有效的。

5. FTP的工作方式

FTP支持两种模式,一种方式叫做Standard (也就是 PORT方式,主动方式),一种是 Passive (也就是PASV,被动方式) Standard模式 FTP的客户端发送 PORT 命令到FTP服务器。Passive模式FTP的客户端发送 PASV命令到FTP Server

下面介绍一个这两种方式的工作原理:

Port模式FTP 客户端首先和FTP服务器的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。 FTP server必须和客户端建立一个新的连接用来传送数据。

Passive模式在建立控制通道的时候和Standard模式类似,但建立连接后发送的不是Port命令,而是Pasv命令。FTP服务器收到Pasv命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接。

很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作。

FTP软件可以更好的帮助你管理FTP目录 提供更系统的工具

FTP工具推荐使用 cuteftp

http://www.onlinedown.net/soft/3065.htm

主动和被动模式FTP有两种使用模式:主动和被动。主动模式要求客户端和服务器端同时打开并且监听一个端口以建立连接。在这种情况下,客户端由于安装了防火墙会产生一些问题。所以,创立了被动模式。被动模式只要求服务器端产生一个监听相应端口的进程,这样就可以绕过客户端安装了防火墙的问题。

一个主动模式的FTP连接建立要遵循以下步骤:

客户端打开一个随机的端口(端口号大于1024,在这里,我们称它为x),同时一个FTP进程连接至服务器的21号命令端口。此时,源端口为随机端口x,在客户端,远程端口为21,在服务器。

客户端开始监听端口(x+1),同时向服务器发送一个端口命令(通过服务器的21号命令端口),此命令告诉服务器客户端正在监听的端口号并且已准备好从此端口接收数据。这个端口就是我们所知的数据端口。

服务器打开20号源端口并且建立和客户端数据端口的连接。此时,源端口为20,远程数据端口为(x+1)。

客户端通过本地的数据端口建立一个和服务器20号端口的连接,然后向服务器发送一个应答,告诉服务器它已经建立好了一个连接。


FTP和网页浏览器大多数最新的网页浏览器和文件管理器都能和FTP服务器建立连接。这使得在FTP上通过一个接口就可以操控远程文件,如同操控本地文件一样。这个功能通过给定一个FTPURL实现,形如ftp://<服务器地址>(例如,ftp://ftp.gimp.org )。是否提供密码是可选择的,如果有密码,则形如:@ftp://<login>:<password>@<ftpserveraddress>。大部分网页浏览器要求使用被动FTP模式,然而并不是所有的FTP服务器都支持被动模式。(摘选自百度百科)


竟然我们都明白了FTP是什么,那么我们开始说下在Linux下如何架设FTP服务了

Linux下架设FTP的软件很多。我们这里选vsftpd来讲。

vsftp的官方网站是: http://vsftpd.beasts.org/

笔者使用的版本为2.1.2-1

那么我们开始安装吧。

跟着下图使用yum来安装:

安装好后我们看看配置文件:
/etc/logrotate.d/vsftpd.log

vsftpd日志文件
/etc/pam.d/vsftpd

vsftpd的认证模块文件

/etc/rc.d/init.d/vsftpd

vsftp的启动脚本
/etc/vsftpd/ftpusers

vsftpd的绝对黑名单
/etc/vsftpd/user_list

vsftpd的白/黑名单(视主配置文件的变量值而定)
/etc/vsftpd/vsftpd.conf

vsftpd的主配置文件
/etc/vsftpd/vsftpd_conf_migrate.sh

vsftpd操作的一些变量和设置脚本

/var/ftp

匿名用户主目录
/var/ftp/pub

匿名用户的下载目录

基本上我们只配置/etc/vsftpd面的文件就好.
我们查看一下vsftpd的核心配置文件
.
more /etc/vsftpd/vsftpd.conf
OH,MY GOD!
我们还是菜鸟
.
这也

不过我们可以试下用
:
grep -v ‘#’ /etc/vsftpd/vsftpd.conf
这个就是把注释去掉后显示的基本默认配置文件了

恍然大悟,原来grep也可以这样用
.
相信聪明的大家以后也会怎么样在查看文本时屏蔽自己不需要的内容了
.
当然如果看得懂E.这种做法是不对D.

千万不要心急马上vi.
我们还是一步一步来
.
继续

安装好后查询vsftpd服务.’chkconfig –list vsftpd

35模式启动.’chkconfig –level 35 vsftpd on

启动vsftpd服务,’service vsftpd start‘(关闭为‘service vsftpd stop’)

配置vsftp.conf文件
在配置之前,我们现把这个文件备份一下
.
然后
rm -/etc/vsftpd/vsftpd.conf
接着再创建一个vsftpd.conft文件,并设置权限(注意:一定要用ROOT用户来完成
)
touch /etc/vsftpd/vsftpd.conft
chmod 600 /etc/vsftpd/vsftpd.conf

这样就好了.
然后参照下表选择自己服务器需要的配置.VI编辑vsftpd.conf文件
.
例如我现在需要设置一个不需要输入帐号密码就能登录与下载和上传文件的FTP,还需要日志服务
.
那么好.我们就一步步来作
.
vi /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
anon_root=/var/ftp
anon_upload_enable=YES
write_enable=YES
local_umask=022
xferlog_enable=YES
xferlog_std_format=YES
listen=YES
tcp_wrappers=YES

好了..就这么简单.然后保存退出vi
接着就service vsftpd restart重启服务一下

现在开始测试吧

测试的时候注意四点
.
第一,在架设服务器时一定要保证自己的IP是静态
.
第二,防火墙是否允许FTP,如果不会设置则关掉防火墙
.’srevice iptables stop
第三,如果发现无法上传请修改/var/ftp/pub这个文件夹的权限最好设置为777权限.(一般默认要求匿名用户上传到此
)
第四,每行的值都不要有空格,否则启动时会出现错误,举个例子,假如我在listen=YES后多了个空格,那我启动时就出现如下错误
:
500 OOPS: bad bool value in config file for: listen

关于下面这个表.
解说一下
.
一般“=”后面跟的不是YES就是NO“,yes代表启用,no代表不启用,如果有特殊的表里会说明.

./etc/vsftpd/vsftpd.conf配置文件注释:

View Code SHELL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
anonymous_enable=YES                                #是否开启匿名用户
no_anon_password=YES                                #匿名用户login时不询问用户名和口 令
anon_umask=077                                      #匿名用户上传的文件权限是‘—-rw—-’
anon_upload_enable=YES                              #是否允许匿名用户上传文件
anon_mkdir_write_enable=YES                         #是否允许匿名用户建立目录
anon_other_write_enable=YES                         #是否允许匿名用户具有建立目录,上传之 外的权限,如重命名,删除
anon_world_readable_only=YES                        #匿名登入者是否能下载可阅读的档案
anon_max_rate=80000                                 #匿名用户的下载速度为 80KBytes/s
anon_root=(none)                                    #匿名用户的宿主目录
allow_anon_ssl=NO                                   #匿名用户是否允许使用安全的SSL连接 服务器
ftp_username=FTP                                    #定义匿名使用者登录的使用者名称(默认 为FTP)
banned_email_file=/etc/vsftpd.banned_emails         #禁止使用的匿名用户登陆时作为密码的电 子邮件地址使用表的位置
deny_email_enable=NO                                #禁止使用的匿名用户登陆时作为密码的电 子邮件地址
secure_email_list_enable                            #如果你想只接受以指定E-MAIL地址登录的匿名用户的话,启用它
local_enable=YES                                    #本地用户是否可以登录
local_umask=022                                     #设置本地用户的文件生成掩码
file_open_mode=0666                                 #上传文件的权限配合umask使用
local_root=(none)                                   #指定所有本地用户登陆后的目录,如果不设置此项,用户都会登陆于自己的主目录
local_max_rate=500000                               #本地用户的下载速度为500KBytes/s
chroot_local_user=YES                               #是否允许用户离开其宿主目录
chroot_list_enable=NO                               #登录用户名字若在/etc/vsftpd.chroot_list内,则会启用chroot机制,将这个用户限制在其home目录下.
guest_enable=YES                                    #是否开启虚拟用户(如果开启则匿名用户用使用guest_username值的用户)
guest_username=vsftpd                               #指定虚拟用户名
virtual_use_local_privs=YES                         #虚拟用户和本地用户权限是否相同
userlist_enable=YES                                 #是根据user_list实行访问控制(若启用此选项,userlist_deny选项才被启动)
userlist_deny=NO                                    #若为YES,则 userlist_file中的用户将不能登录,为NO则只有userlist_file的用户可以登录
write_enable=YES                                    #用户是否具有写的权限(全局,若要对其中一种用户开放上传权限,此处必须YES)
download_enable=YES                                 #是否允许下载(全局模式)
chmod_enable=YES                                    #是否可以修改文件权限
nopriv_user= nobody                                 #设定服务执行者为nobody,vsftpd推荐使用一个权限很低的用户,最好是没有家目录(/dev/null),没有登陆shell(/sbin/nologin),系统会更安全
dirmessage_enable=YES                               #当切换到FTP服务器的某个目录这哦功时,是否显示该目录下的.message信息
dirlist_enable=YES                                  #是否启用通俗命令(如果设置为NO,那么只能使用unix/linux的命令)
xferlog_enable=YES                                  #是否启用上传和下载日志
xferlog_std_format=YES                              #是否使用标准的ftpdxferlog日志格式
xferlog_file=/var/log/vsftpd.log                    #将上传下载日志记录到/var/ log/vsftpd.log中
log_ftp_protocol=NO                                 #当xferlog_std_format关闭且本选项开启时,记录所有ftp请求和回复,当调试比较有用.
dual_log_enable=NO                                  #如果启用,两个LOG文件会各自产生,默认的是/var/log/xferlog和/var/log/vsftpd.log
vsftpd_log_file=/var/log/vsftpd.log                 #这是被生成的vsftpd格式的log文件的名字(只有xferlog_enable被设置,而xferlog_std_format没有被设置时,此项才生效)
syslog_enable=NO                                    #如果启用,系统log将取代vsftpd的log输出到/var/log/vsftpd.log.FTPD的log工具将不工作
connect_from_port_20=YES                            #是否启用FTP数据端口的连接请求
listen=YES                                          #是否使用standalone启动vsftpd,而不是super daemon(xinetd)控制它 (vsftpd推荐使用standalone方式)
listen_ipv6=NO                                      #与‘listen’功能嗯相同,但此项监听IPV6(两个只能设置一个)
pam_service_name=vsftpd                             #PAM认证服务配置文件名称,保存在“/etc/pam.d”目录下
userlist_enable=YES                                 #是否检查userlist_file设置文件
tcp_wrappers=YES                                    #是否使用tcp_wrappers作为主机访问控制方式(tcp_wrappers的两个配置文件“/etc/hosts.allow 允许访问的主机“,”/etc/hosts.deny拒绝访问的主机”
ftpd_banner=Welcome to yayi.biz FTP Service         #FTP欢迎信息(如果设置了banner_file则此设置无效)
banner_file=/etc/vsftpd/banner                      #定义登录信息文件的位置
check_shell=NO                                      #是否检测SHELL
chown_uploads=YES                                   #是否开启匿名上传用户切换(如果开启,上传用户则变为‘chown_username=daemon’指定的用户)
chown_username=daemon                               #匿名上传文件的属主
file_open_mode=0666                                 #对于上传的文件设定权限
idle_session_timeout=600                            #客户端超过600S没有动作则视为超时
data_connection_timeout=300                         #数据传输时超过120S没有动作则视为超时
connect_timeout=60                                  #连接超时时间
pasv_min_port=30000                                 #建立资料联机所可以使用port 范围的上界,0表示任意,默认值为0
pasv_max_port=30999                                 #建立资料联机所可以使用port 范围的下界,0表示任意,默认值为0
pasv_enable=YES                                     #是否允许使用PASV模式
pasv_promiscuous+NO                                 #是否关闭PASV安全检查.(删除‘+NO’则开启)
pasv_address=(none)                                 #使vsftpd在pasv命令回复时跳转到指定的IP地址.
port_enable=YES                                     #是否允许使用PORT模式
prot_promiscuous                                    #是否开启安全PORT检查(‘+NO’则不开启)
pasv_max_port=0                                     #指定为被动模式数据连接分配的最大端口(0为任何)
pasv_min_port=0                                     #指定为被动模式数据连接分配的最小端口(0为任何)
ACCEPT_TIMEOUT=60                                   #PAVS请求60s无响应则视为超时
ascii_upload_enable=YES                             #是否可用ASCII 模式上传(默认为NO)
ascii_download_enable=YES                           #是否可用ASCII 模式下载(默认为NO)
secure_chroot_dir=/usr/share/empty                  #这个选项必须指定一个空的数据夹且任何登入者都不能有写入的权限,当vsftpd 不需要file system 的权限时,就会将使用者限制在此数据夹中,默认值为/usr/share/empty
ls_recurse_enable=YES                               #是否能使用ls -R命令以(防止浪费大量的服务器资源)
one_process_model=YES                               #是否使用单进程模式
text_userdb_names=NO                                #是否可以查看文件拥有者的UID
use_localtime=NO                                    #显示目录清单时是用本地时间还是GMT时间,可以通过mdtm命令来达到一样的效果
use_sendfile=YES                                    #是否测试平台优化
setproctitle_enable=YES                             #是否显示状态会话信息
user_config_dir=/etc/vsftpd/userconf                #定义用户配置文件的目录
local_root=xxx                                      #定义本地用户登陆的根目录,注意定义根 目录可以是相对路径也可以是绝对路径.相对路径是针对用户家目录来说的
max_clients=0                                       #可接受的最大client数目(0为不限制)
max_per_ip=0                                        #每个ip的最大client数目(0为不限制)
connect_from_port_20=YES                            #是否启用FTP数据端口的数据连接
ftp_data_port=20                                    #设定PORT模式下的连接端口(只要被激活)
connect_from_port_20
listen_address=192.168.0.2                          #绑定FTP的IP地址(在多网卡或者多IP地址的机器上使用)
listen_port=2121                                    #绑定FTP使用使用端口
ftp_data_port=2020                                  #绑定FTP数据传输端口
background=NO                                       #起用时,VSFTPD将把监听进程置于后台,但访问VSFTPD时,控制台将立即被返回到SHELL
force_dot_files=NO                                  #如果激活, 以. 开始的文件和目录在目录列取的时候将会被显示, 即使客户端没有使用“a” 标识. 这不包括“.” 和“..” 目录
ssl_enable=NO                                       #是否启用SSL
force_local_data_ssl=YES                            #是否要求非匿名用户使用安全的SSL在 数据线路上收发数据
force_local_logins_ssl=YES                          #是否要求非匿名用户使用安全的SSL登录以发送密码
ssl_tlsv1=YES                                       #是否允许以TLS V1协议的连接,TLS V1连接将是首选
ssl_sslv2=NO                                        #是否允许以SSL V2协议的连接,TLS V1连接将是首选
ssl_sslv3=NO                                        #是否允许以SSL V3协议的连接,TLS V1连接将是首选
hide_ids=NO                                         #如果启用,目录资源列表里所有用户和组的信息将显示为\”ftp\”.
run_as_launching_user=NO                            #如果你使用非root用户启动vsftpd时使用.(不是Linux专业人士请不要使用,除非自己清楚自己在作什么.)
session_support=NO                                  #是否让VSFTPD去尝试管理登录会话
text_userdb_names                                   #默认情况下,在文件列表中,数字ID将被显示在用户和组的区域.你可以编辑这个参数以使其使用数字ID变成文字

注意:每行的值都不要有空格,否则启动时会出现错误,举个例子,假如我在listen=YES后多了个空格,那我启动时就出现如下错误:
500 OOPS: bad bool value in config file for: listen

最后介绍下如何配置FTP虚拟用户,过程不做详细介绍,自己理解。

1)、建立虚拟用户口令库文件
#touch logins.txt
#vi logins.txt

test
passwrod 123
chick
passwrod 123

2)
、生成vsftpd的认证文件

#db_load -T -t hash -f logins.txt /etc/vsftpd/vsftpd_login.db
3)
、建立虚拟用户所需的PAM配置文件

#vi /etc/pam.d/vsftpd
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

4)
、建立虚拟用户及所要的访问的目录并设置相应权限

#useradd -d /home/ftpsite/ virtual
#chmod 700 /home/ftpsite/

5)
、设置vsftpd.conf配置文件

#cd /etc/vsftpd
#cp vsftpd.conf vsftpd.conf.bak
#vi vsftpd.conf

添加虚拟用户的配置项

guest_enable = YES
guest_username = virtual
pam_service_name = vsftpd

6)
、重新启动vsftpd服务程序

#service vsftpd restart
7)
、测试vsftpd中的虚拟用户账号

#touch /home/ftpsite/afile
#chown virtual.virtual /home/ftpsite/afile

使用ftp命令登陆vsftpd服务器,并使用已配置的虚拟用户账号进行登陆

8
)、对不同的虚拟用户设置不同的权限

1.
设置主配置文件

user_config_dir=/etc/vsftpd_user_conf
vsftpd.conf配置文件中添加user_config_dir配置项,并设置用户配置文件的保存目录

2.
建立用户配置文件目录

#mkdir /etc/vsftpd_user_conf
3.
为虚拟用户建立单独的配置文件

“/etc/vsftpd_user_conf/” 目录中可以为每个虚拟用户建立独立的配置文件,配置文件名称和用户名相同

在虚拟用户的独立配置文件中,配置项的含义如下:

anon_world_readable_only=NO 表示用户可以浏览FTP目录和下载文件
anon_upload_enable=YES
表示用户可以上传文件

anon_mkdir_write_enable=YES
表示用户具有建立和删除目录的权利

anon_other_write_enable=YES
表示用户具有文件改名和删除文件的权限

Posted by Yayi   @   1 十月 2009 0 comments
Tags : , ,

已经有 0 评论

No comments yet. Be the first to leave a comment !
发 表 评 论

Previous Post
«
Next Post
»
Copyright ©2008 - 2011 Yayi's World
知识共享许可协议 粤ICP备09088251号