Linux下FTP服务器的安装和配置详细Word文件下载.docx
《Linux下FTP服务器的安装和配置详细Word文件下载.docx》由会员分享,可在线阅读,更多相关《Linux下FTP服务器的安装和配置详细Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。
ftpstreamtcpnowaitroot/usr/sbin/tcpdin.ftpd-l–a
如果系统中以前安装有wu-ftpd的话,这一步可以略去不做,安装安装程序会自动更新/etc/inetd.conf文件有关ftp的记录项。
5.如果想为FTP用户提供压缩解压缩的功能,我们还需要将tar、gzip、compress、cpio、sh等可执行文件复制到/home/ftp/bin目录下。
此外,还需要将ls命令复制到/home/ftp/bin中,以便使用者查看目录。
因为我们复制到/home/ftp/bin目录下的程序有可能是动态链接的,所以它们运行时还需要共享函数库,我们要将他们运行时需要用到的共享库复制到/home/frp/lib目录中。
检查这些命令所需要的共享库可以使用“ldd”命令。
例如对于“ls”命令,我们使用“ldd/usr/bin/ls”命令就可以得到如下的输出:
#ldd/usr/bin/ls
libc.so.6=>
/lib/libc.so.6(0x40003000)
/lib/ld-linux.so.2=>
/lib/ld-linux.so.2(0x00000000)
这样,我们就需要将/lib/libc.so.6和/lib/ld-linux.so.2复制到/home/ftp/lib目录中。
其它命令所需的共享库您也可以参照上面的方法找出并复制到/home/etc/lib目录中。
接下来复制/etc/passwd和/etc/group文件到/home/ftp/etc,并删除其中任何个人用户和个人用户组的信息。
基本上应该按照下面的例子修改:
#/home/ftp/etc/passwd文件
root:
*:
0:
:
bin:
1:
operator:
11:
nobody:
99:
ftp:
1000:
#/home/ftp/etc/group文件
daemon:
2:
sys:
3:
adm:
4:
6.为了确保提供FTP服务不会给我们的系统带来安全隐患,我们还需要采取以下措施:
#chmod0555/home/ftp
#chmod0111/home/ftp/bin/*
#chmod0555/home/ftp/lib/*
#chmid0444/home/ftp/etc/*
配置FTP服务器
在安装好wu-ftpd之后,我们还需要定制FTP服务器,使之实现我们上一节中提到的各种功能。
为了使我们的FTP服务器实现这些功能,我们需要修改ftpusers、ftpaccess、ftpconversions、xferlog、ftpgroups、ftphosts等系统配置文件。
下面我们就来看一看这些文件的功能以及配置它们的方法。
各配置文件的功能
在开始配置FTP服务器的配置文件之前,我们先来简要地介绍一下各个文件的功能。
在开包后的wu-ftpd-2.5.0目录中的doc/examples目录下,我们可以找到以下这些文件的示例。
/etc/ftpaccess一般情况下,我们最为重视的配置文件应该是“ftpaccess”,因为该文件决定着我们FTP服务器是否能够正常工作。
此外,我们还可以在这个系统参数文件中设置多项有关使用权限记录,以及与信息有关的文件名称及路径。
/etc/ftpusers决定哪些人不可以执行ftp命令来传输文件,这些帐号通常是root、bin、news以及guest等有特殊用途的帐户。
/etc/ftpconversions配置该文件可以实现用户在通过FTP传输文件的同时,对文件进行压缩打包等处理。
/etc/ftphosts决定哪些网络中的主机或某些用户不能访问FTP服务器的文件。
/etc/ftpgroups该文件不是决定哪些用户组不能够访问FTP服务器,它只有在使用SITEGROUP功能时才有用。
/var/log/xferlogFTP日志文件。
该文件将记录使用匿名帐户的用户所上传或下载的过的文件,该文件只是记录FTP信息,我们不需要对它进行配置。
大致了解了各个设置文件的功能以后,我们就来为您介绍这些文件中的内容以及学习如何配置。
配置/etc/ftpaccess文件
我们前面介绍的wu-ftpd的大多数功能都是在ftpaccess文件中设置的。
我们无须自己编写该文件,doc/examples/ftpaccess.heavy是一个稍微修改一下就能适用于大多数FTP服务器的例子,所以下面我们将以这个示例文件为例为您介绍ftpaccess文件的配置。
#wu-ftpd-2.5.0的/etc/ftpaccess示例文件ftpaccess.heavy
#
#设置用户登录FTP服务器时,允许输错密码的次数。
#loginfails2表示允许用户输错两次密码,如果两次都输入
#错误的话,FTP服务器打印“repeatedloginfailures”的信息
#并退出FTP会话过程。
如不设置,则缺省值是5。
loginfails2
#class是用来定义用户级别的命令,它的格式为
#class<
class>
<
typelist>
addrglob>
[<
….]
#FTP服务器上有三种类型的使用者,分别是“real”——表示
#在该FTP服务器上有合法帐号的用户;
“guest”——表示另行
#定义的某些使用组的使用者;
“anonymous”——权限最低的匿名
#用户。
有了这三种使用者以后,在ftpaccess文件中就可以根据不
#同的使用者设置不同的存取权限。
但是,只有三种定义一般是不够
#的,我们可以根据class的语法定义更多的控制命令。
例如:
#classremotereal,guest,anonymous*
#这条class语句定义了remote中有三种不同的使用者,“*”表示网络
#上所有的计算机,也就是说任何人都可以访问FTP服务器,一般的匿名
#FTP站点都应该有这一项。
如果我们希望某台主机或网域中的机器具有
#特殊的权限,那么我们可以设置如下的class:
#classlocalreal,guest,anonymouslocalhost
#这表示本地主机的类别被定义为local,当我们从主机连上FTP服务器上
#时,就可以用较为特别的权限。
#下面是ftpaccess.heavy文件指定的两个class,它们的意思是来自*.domain
#和本地主机被归为local组,而其它的主机则是remote组。
classlocalreal,guest,anonymous*.domain0.0.0.0
classremotereal,guest,anonymous*
#我们可以使用limit命令设置某个时间段的FTP用户数量,如果超出了
#规定的人数,则打印/etc/msgs/msgs.toomany文件并拒绝用户登录。
#limitlocal20Any/etc/msgs/msgs.roomany
#就是限制local这个组的机器同时间内最多允许20人连接FTP服务器,如果
#超员,则打印/etc/msgs/msgs.toomany文件,显示当前在线人数太多。
ftp的
#说明文件都可以包含变量,在说明文件中可以使用“变量替换(magic
#sookies)”以指定的字符串代替某个变量:
#%T本地时间
#%FCWD所在分区的剩余空间
#%C当前工作目录
#%E定义在ftpaccess文件中维护者的电子邮件地址
#%R远端主机名称
#%L本地主机名称
#%U登录时所给的用户名称
#%M该class允许的最大使用者数目
#%N该class目前的使用者数目
#我们可以利用这些变量编辑一个显示信息非常完善的说明文件。
下面的
#例子是设置当local用户在任何时候不能超过20人,remote用户在周六
#周日的18:
00到6:
00不能超过100人,否则将显示/etc/msgs目录下的
#msg.toomany文件的内容。
limitlocal20Any/etc/msgs/msg.toomany
limitremote100SaSu|Any1800-0600/etc/msgs/msg.toomany
limitremote60Any/etc/msgs/msg.toomany
#readme命令的作用是指定用户登录或进行其它操作(如更换目录)时
#FTP服务器提示用户阅读的文件。
readmeREADME*login
readmeREADME*cwd=*
#messages命令主要是设置一些FTP的显示信息,如下面的“message
#/welcome.msglogin”就是代表用户登录时,将显示/home/ftp目录下的
#welcome.msg作为进站画面。
我们要提醒您的是FTP服务器都是以
#/home/ftp这个目录作为根目录的,所以要写成/welcome.msg。
而
#“message.messagecwd=*”则是定义用户在更换目录时将显示在目录
#下的文件。
message/welcome.msglogin
message.messagecwd=*
#下面定义的允许从local和remote登录的机器在传输文件时,可执行compress
#压缩文件或使用tar命令将多个文件打包成一个文件。
compressyeslocalremote
taryeslocalremote
#是否允许通过SITEGROUP和SITEGPASS命令适用秘密文件
#allowuseofprivatefileforSITEGROUPandSITEGPASS?
privateyes
#设置密码检查的规则。
FTP服务器将要求匿名用户使用其电子邮件
#地址作为密码,可是有人还是会胡乱输入,所以我们可以使用passwd-check
#来查看用户是否输入一个类似于user@hostname的E-mail地址:
none表
#示不进行密码检查;
trivial表示密码必须含有“@”;
而使用rfc822时,
#表示密码必须满足rfc822规定的地址。
当密码不合要求时,warn将给予
#警告,但依然允许他们登录,而enforce则表示警告并使用户退出。
#
#passwd-check<
none|trivial|rfc822>
[<
enforce|warn>
]
passwd-checkrfc822warn
#logcommands<
记录<
类型(可以是anonymous、
#guest和real)用户使用的命令。
Logtransfer<
directions>
#记录<
类型的用户做的<
(可以为inbound传进服务器、
#outbound传出服务器)方向的文件传输。
logcommandsreal
logtransfersanonymous,realinbound,outbound
#如果shutdown<
path>
指定的文件存在,FTP服务器将定期检查<
文件
#以查看服务器是否预定关闭。
<
文件的格式为:
#<
year>
month>
day>
hour>
minute>
deny_offset>
disc_offset>
text>
和<
的意思是在服务器关闭前多长时间新的登录
#请求和现存的连接将被拒绝和终止。
是对拒绝连接的用户的一段信息。
#如:
#1999102500:
0000100005
#Systemshutdownat%s
#表示1999年10月25日00:
00关闭FTP服务器,10分钟以前拒绝连接,5分钟
#以前中断正在连接的FTP服务。
外部程序ftpshut可以用来产生<
文件,
#例如上面的文件可以通过如下的命令来产生:
#ftpshut0000
shutdown/etc/shutmsg
#设置用户在FTP服务器上可以使用的命令,我们可以看到下面所有的
#命令后面都是“no”,也就是说guest用户不能使用delete、overwrite、
#rename命令,而anonymous则都不能使用。
只有real用户可以使用这些命令。
#allthefollowingdefaultto"
yes"
foreverybody
deletenoguest,anonymous#deletepermission?
overwritenoguest,anonymous#overwritepermission?
renamenoguest,anonymous#renamepermission?
chmodnoanonymous#chmodpermission?
umasknoanonymous#umaskpermission?
#设置用户上传文件的目录。
下面例子中/var/ftp目录下的/incoming目录可以
#用来上传文件,上传文件的属主是root,组别是daemon,读取权限是0600,
#dirs表示在/incoming目录中可以创建子目录。
#specifytheuploaddirectoryinformation
upload/var/ftp*nonobodynogroup0000nodirs
upload/var/ftp/binno
upload/var/ftp/etcno
upload/var/ftp/incomingyesrootdaemon0600dirs
#为/incoming目录设置路径别名为inc:
,用户在任何时候只要使用命令
#“cdinc:
”就可以到达/incoming目录。
#directoryaliases...[note,the"
"
isnotrequired]
aliasinc:
/incoming
#cdpath主要定义在改变目录时使用的搜索路径。
如果我们定义:
#cdpath/incoming/test、cdpath/pub、cdpath/,那么用户在任意路径
#随便cd到一个目录,比如cdtest,那么将依次搜寻:
#/incoming/test
#/pub/test
#/test
#以寻找一个符合test目录的路径。
cdpath/incoming
cdpath/pub
cdpath/
#path-filter的功能是检查用户上传文件的文件名是否合法,如下面
#第一条命令就是指定所有的匿名用户上传文件的文件名只能是以
#A-Z、a-z、0-9以及“._-”组成,而不能以一个“.”或是一个“-”开始。
#如果文件名不合法,将显示/etc/pathmsg给该用户。
path-filteranonymous/etc/pathmsg^[-A-Za-z0-9_.]*$^.^-
path-filterguest/etc/pathmsg^[-A-Za-z0-9_.]*$^.^-
#设置guest用户
#specifywhichgroupofuserswillbetreatedas"
guests"
.
guestgroupftponly
#FTP服务器管理员的邮件地址
emailuser@hostname
以上是一些ftpaccess常用的设置,您也可以参考ftpaccess的manpagse来获得更详细的配置信息。
配置/etc/ftpusers和/etc/ftphosts文件
通过ftpusers文件,我们可以限制系统中有哪些用户不能使用ftp服务,ftphosts文件与之类似,所不同的是该文件中记录的是不能访问FTP服务器的主机。
通常这样做的目的都是出于系统安全的考虑。
Wu-ftpd为我们准备有这两个文件的示例,我们可以在examples目录中找到它们。
下面是ftpusers文件设置的例子:
#禁止使用FTP服务的用户
root
bin
boot
daemon
digital
field
gateway
guest
nobody
operator
ris
sccs
sys
uucp
限制这些用户使用FTP服务器主要是基于系统安全的考虑,避免权利过大的用户(如root、ftpadm)登录FTP服务器和避免使用系统命令作为帐号(如shutdown、sync),以避免系统管理上的困惑。
我们可以根据自己使用的需要,向该文件中增加或删除用户并将它复制到/etc目录中。
如果我们要架设的是匿名FTP服务器,那么通常不需要设置ftphosts文件,对于其它类型的FTP服务器可以参考examples/ftphosts文件的格式结合自己的情况加以修改,然后复制到/etc目录中即可。
下面是examples/ftphosts文件,该文件允许网络somehost.domain中的用户ftp访问FTP服务器(somehost.domain可以是IP地址或域名)而禁止网络otherhost.domain和网络131.211.32.*中的用户fred使用FTP服务。
#ftphosts文件配置示例,allow和deny的格式分别为:
#allow<
username>
hostnameordomain>
#deny<
#以“#”开头的均为注释,空行将被忽略
allowftpsomehost.domain
denyfredotherhost.domain131.211.32.*
配置/etc/ftpconversions文件
ftpconversions文件主要定义用户从FTP服务器中下载文件时对文件进行格式转换的规则。
例如压缩、解压缩、打包和开包等操作,这样用户就不必为.tar.gz、.tgz、.Z、.z之类的文件伤脑筋了。
Ftpconversions文件的格式初看上去很复杂,不过不用担心,/examples目录中也有该文件的例子,我们只要原封不动的将它复制到/etc目录中就能满足我们的使用需要了。
下面让我们来看看ftpconversions文件中各个记录项,有关各项的说明我们罗列在表14-1中:
#ftpconversions文件示例
:
.Z:
/bin/compress-d-c%s:
T_REG|T_ASCII:
O_UNCOMPRESS:
UNCOMPRESS
/bin/compress-c%s:
T_REG:
O_COMPRESS:
COMPRESS
.gz:
/bin/gzip-cd%s:
GUNZIP
.gz