|
在Linux环境下使用的FTP服务器软件主要有Wu-FTP、NcFTP和ProFTP等3种。由于Wu-FTP是目前最流行的一种免费FTP服务器软件,所以下面主要介绍Wu-FTP。
|
|
|
|
|
(1)Wu-FTP是基于GPL协议开发的,它是一个源代码公开的自由软件。
|
|
|
(2)Wu-FTP是历史最久的非商业FTP服务器程序之一,它的影响非常广泛。
|
|
|
(3)Wu-FTP项目仍然继续进行,新的特性不断被加入。
|
|
|
(4)Wu-FTP支持广泛的UNIX和类UNIX平台。
|
|
|
|
(1)可以控制不同网络和域的用户对FTP服务器的存取权限和访问时段。
|
|
|
(2)使用者在下载文件时,可以自动对其进行压缩和解压缩工作。
|
|
|
|
(4)可以显示传输时的相关信息,方便用户及时了解目前的传输动态。
|
|
|
(5)可以设置最大连接数,从而提高了效率,且有效地控制了负载。
|
|
|
|
|
Wu-FTP有RPM包分发版本,可以从Red Hat网站下载或在Red Hat Linux 7.0的光盘中找到。二进制的分发版本可以从ftp://ftp.wu-ftpd.org/pub/wuftpd处进行下载。
|
|
|
下面以RPM的安装为例介绍Wu-FTP的安装过程。
|
|
|
若在安装Red Hat时没有安装Wu-FTP,则可以使用下面的命令进行安装:
|
|
|
|
若获得了更新版本的Wu-FTP的RPM,可以使用下面的命令进行升级:
|
|
|
|
|
|
|
|
|
需要确定/etc/services文件有以下一行内容,同时该内容未被加上注释符"#":
|
|
|
|
2)创建/etc/xinetd.d/wu-ftpd文件
|
|
|
|
|
|
要想使修改内容立即生效,可以重新启动xinetd程序。其命令如下:
|
|
|
|
|
与测试Sendmail服务器一样,可以通过telnet命令登录到21端口来测试Wu-FTP服务是否启动。其命令如下:
|
|
|
|
|
|
|
/etc/ftpuser用来指定某些用户不能登录本FTP服务器。其实这个设置是十分简单的,只需将要禁止的用户账号写入文件/etc/ftpuser中。由于从系统的安全考虑,一般不希望权限过大的用户和一些与命令名相同的用户进入FTP服务器,所以在默认配置中以下用户已经被列入了"黑名单":
|
|
|
|
|
/etc/ftphosts用来指定某些主机不能连接本FTP服务器。要禁止某些来自指定机器上的登录有两种方法:一种是在/etc/ftpaccess中设置deny命令;另一种是在/etc/ftphosts中写入要禁止的主机的IP地址或域名。下面是一个/etc/ftphosts文件的范例:
|
|
|
|
例中允许用户xyz从域名以abc.com.cn为后缀的主机及210.102.0.0/255.255.0.0的主机上登录;禁止用户Tom从域名hanker.com为后缀的主机及131.222.154.0/255.255.255.0的主机上登录。当用户名为anonymous或ftp时,均表示匿名用户。
|
|
|
|
/etc/ftpconversions文件主要定义用户从FTP服务器中下载文件时对文件进行格式转换的规则,如压缩、解压缩、打包和开包等操作。这样用户就不必为.tar、.gz、.tgz、.Z、.z之类的文件伤脑筋了。
|
|
|
/etc/ftpconversions文件的格式乍看上去很复杂,不过不必担心,基本上不用修改、设置。下面是一个/etc/ftpconversions文件,它已经能够满足一般的使用需要了。
|
|
|
|
如果想让FTP服务器有自动压缩、解压缩的功能,必须先将一些压缩、解压缩的命令文件如tar、gzip、gunzip、compress、uncompress等复制到/home/ftpd/bin目录下。
|
|
|
|
/etc/ftpaccess是FTP服务器上最重要的配置文件,它主要控制FTP存取权限,直接关系到FTP服务器能否正常工作,还有其他许多权限上的设置。下面是一个典型的配置实例。
|
|
|
|
下面逐条进行讲解,并给出每条设置的含义,以便读者触类旁通,根据自己FTP服务器的具体情况进行合理设置。
|
|
|
|
|
功能:设置当用户登录到FTP服务器时,允许用户输入错误密码的次数。
|
|
|
实例:loginfails 3,密码输入错误3次就切断连接。
|
|
|
|
格式:class[类名][real/guest/anonymous][IP地址]
|
|
|
功能:用于设置FTP服务器上用户的类别,并可对客户端的IP地址进行限制,允许某部分的IP地址或全部的IP地址访问。而在FTP服务器上的用户基本上可以分为以下3类。
|
|
|
|
|
③anonymous:权限最低的匿名用户。实例如下。
|
|
|
class local real*:定义一个名为local的类,它包括在任何地方登录(*代表所有IP地址)的real用户。
|
|
|
class remote anonymous guest*:定义一个名为remote的类,它包括在任何地方登录的anonymous用户和guest用户。
|
|
|
|
格式:limit[类别][人数][时间][文件名]
|
|
|
功能:设置指定时间内指定的类别允许连接的人数上限,当达到人数上限时显示指定文件的内容。
|
|
|
实例:limit remote 100 Any/etc/ftpd/toomany.msg在任何时间内,remote类的访问用户达到100人时,将不再允许或无法产生新的连接。当第101位用户要连接时,连接将失败,并向用户显示文件/etc/ftpd/toomany.msg的内容。
|
|
|
|
|
功能:当用户执行指定的指令时,系统将指定的文件内容显示出来。
|
|
|
实例:message/etc/ftpd/welcome.msg login当用户执行login命令时,也就是登录到FTP服务器上的时候,系统将显示文件/etc/ftpd/welcome.msg的内容。
|
|
|
|
|
功能:设置某个类别的用户可以使用compress(压缩)功能。
|
|
|
实例:compress yes local remote允许local和remote两类用户都能使用compress(压缩)功能。
|
|
|
|
|
功能:设置某个类别的用户可以使用tar(归档)功能。
|
|
|
实例:tar yes local remote允许local和remote两类用户都能使用tar功能。
|
|
|
|
|
|
实例:private yes支持群组对文件的取用。
|
|
|
|
格式:passwd-check[none/trivial/rfc822][enforce/warn]
|
|
|
功能:设置匿名用户anonymous的密码使用方式。
|
|
|
|
trivial表示只要输入的密码中含有字符"@"就可以登录。
|
|
|
rfc822表示密码一定要符合RFC 822中所规定的E-mail地址才能登录。
|
|
|
enforce表示输入的密码不符合以上指定的格式就不允许登录。
|
|
|
warn表示密码不符合规定时只出现警告信息,仍然能够登录。
|
|
|
实例:passwd-check rfc822 warn希望能够得到符合规定的E-mail作为密码,但如果不是也允许登录。
|
|
|
|
格式:log command[real/guest/anonymous]
|
|
|
功能:设置某些用户登录后的操作记录在文件/usr/adm/xferlog中。
|
|
|
实例:log command real当real用户登录后,将其操作记录下来。由于其他用户权限较低,所以操作不会引起太大的安全隐患,所以一般只需记下real用户的操作就可以了。
|
|
|
|
格式:log transfer[real/guest/anonymous][inbound/outbound]
|
|
|
功能:设置某些用户的上传(Inbound)和下载(Outbound)操作日志。
|
|
|
|
log transfer anonymous guest inbound outbound对于匿名用户要更加关注他们的文件操作,所以无论是上传还是下载都进行记录。
|
|
|
log transfer real inbound:对于合法用户则只记录他的上传记录。
|
|
|
|
|
功能:FTP服务器关闭的时间可以设置在后面所指定的文件中,当设置的时间一到,便无法登录FTP服务器了,要想恢复,只有将这个文件删掉。而这个文件必须由指令/bin/ftpshut来生成。
|
|
|
实例:shutdown/etc/ftpd/shut.msg
|
|
|
|
格式:delete[yes/no][real/anonymous/guest]
|
|
|
功能:设置是否允许指定用户使用delete命令删除文件。默认是允许。
|
|
|
实例:delete no anonymous,guest为了更好地管理FTP服务器,一般情况下不允许匿名用户执行delete命令。
|
|
|
|
格式:overwrite[yes/no][real/anonymous/guest]
|
|
|
功能:设置是否允许指定用户覆盖同名文件。默认是允许。
|
|
|
实例:overwrite no anonymous,guest为了更好地管理FTP服务器,一般情况下,不允许匿名用户覆盖同名文件。
|
|
|
|
格式:rename[yes/no][real/anonymous/guest]
|
|
|
功能:设置是否允许指定用户使用rename命令来为文件改名。默认是允许。
|
|
|
买例:rename no anonymous为了更好地管理FTP服务器,一般情况下,不允许匿名用户执行rename命令改变文件名。而对有记录的匿名用户则适当放宽,允许他们使用改名命令。
|
|
|
|
格式:chmod[yes/no][real/anonymous/guest]
|
|
|
功能:设置是否允许指定用户使用chmod命令更改文件权限。默认是允许。
|
|
|
实例:chmod no anonymous,guest为了更好地管理FTP服务器,一般情况下,不允许匿名用户执行chmod命令更改文件权限。
|
|
|
|
格式:umask[yes/no][real/anonymous/guest]
|
|
|
功能:设置是否允许指定用户使用umask命令。默认是允许。
|
|
|
实例:umask no anonymous为了更好地管理FTP服务器,一般情况下,不允许匿名用户执行umask命令。
|
|
|
|
格式:upload[根目录][上传目录][yes/no][用户][权限][dirs/nodirs]
|
|
|
|
|
upload/home/ftpd*no表示在子目录/home/ftpd下不允许上传。
|
|
|
upload/home/ftpd/bin no表示在子目录/home/ftpd/bin下不允许上传。
|
|
|
upload/home/ftpd/etc no表示在子目录/home/ftpd/etc下不允许上传。
|
|
|
upload/home/ftpd/pub yes real 0644 dirs允许服务器上的合法用户在子目录/home/ftpd/pub下可以上传权限为0644(也就是-rw-r--r--)的文件,而且在这个目录下可以新建子目录。
|
|
|
upload/home/ftpd/incoming yes real guest anonymous 0644 dirs允许所有的用户在子目录/home/ftpd/incoming下可以上传权限为0644的文件,而且在这个目录下可以新建子目录。
|
|
|
|
|
功能:为指定目录设置一个别名,在切换目录时就可以使用较短的目录别名。
|
|
|
实例:alias inc:/incoming为子目录incoming设置一个别名inc。
|
|
|
|
|
功能:只要在此设置系统管理员的E-mail地址,FTP服务器有问题或任何信息都要通知系统管理员。
|
|
|
实例:email guest@XXX.net这里仅是一个示例,实际上可以包含多个符合规范的E-mail地址。
|
|
|
|
|
功能:可以限制某些IP地址或域名的用户无法登录FTP服务器。
|
|
|
实例:deny*.com.tw/etc/ftpd/deny.msg设置凡是以.com.tw结束的域名,都禁止其访问。而将/etc/ftpd/deny.msg的内容显示给用户看。
|
|
|
|
|
使用ftpcount命令可以十分清楚地统计出当前连接到FTP服务器上的用户数,并且同时列出上限。命令输出如下:
|
|
|
|
上例中显示属于local(本地)的有0个人在线,上限为20;属于remote(远程)的有5个人在线,上限为100。
|
|
|
|
使用ftpwho命令可以查看当前连接用户的详细情况。命令输入如下:
|
|
|
|
上例中显示all类有两个用户登录,并显示登录时间、来源和状态。
|
|
|
|
可以使用ftpshut命令生成一个在目录/etc/ftpaccess中设置的shut.msg文件,用于关机设定。ftpshut命令的格式如下:
|
|
|
|
.-l<分钟>:指定在关闭FTP服务器功能前多少分钟时停止用户的连接。
|
|
|
.-d<分钟>:指定在关闭FTP服务器功能前多少分钟时切断用户连接。
|
|
|
.关闭时间:指定关闭FTP服务器的时间,如6:20写为0620。如果要立即关闭,可以用now。
|
|
|
."警告信息":指定断线之前显示给用户的警告信息。
|
|
|
|
|
例子中的FTP服务器将在23:00关闭,关闭前25分钟将拒绝用户登录,关闭前5分钟将断开所有连接,并给在线用户发送"Warn:FTP server will shutdown!"消息。
|
|
|
|
|
FTP服务器关闭后要重新启动,只要把目录/etc/shutmsg下的这个文件删除,并重新启动FTP服务器就可以继续FTP服务了。
|
|
|