红联Linux门户
Linux帮助

请问Linux 下用什么做FTP服务器比较好?

发布时间:2007-11-03 17:44:43来源:红联作者:cn256
我想知道LINUX下用什么做FTP服务器比较好
并请告诉我怎么安装配置该推荐的FTP服务器。

[ 本帖最后由 cn256 于 2007-11-3 18:21 编辑 ]
文章评论

共有 9 条评论

  1. cn256 于 2007-11-04 12:58:04发表:

    昨天看了一些有关proftp安装的教程,感觉太复杂了,今天来学习下vsftp:0wmjh(1

  2. cn256 于 2007-11-04 12:54:37发表:

    据说WU-FTP不够安全,是吗?

  3. thinker329 于 2007-11-04 12:52:45发表:

    用它啦----vsftp
    强大而又安全!

  4. thinker329 于 2007-11-04 12:52:35发表:

    用它啦----vsftp
    强大而又安全!

  5. 空空也007 于 2007-11-03 23:27:33发表:

    晕,怎么图片没有了,我再找找看

  6. 空空也007 于 2007-11-03 23:26:38发表:

    rpm包可从http://rpmfind.net/linux/RPM/WByName.html下载得到, rpm包的WU-FTP安装方式非常简单,假设下载得到的rpm包存放在/download目录下,输入图1中的命令就会自动完成安装。


    图 1
    压缩的源代码可以从ftp://ftp.wu-ftpd.org/pub/wu-ftpd/binaries/intel/linux/得到。这里我们以最新的2.6.2为例来说明如何编译安装WU-FTP。
    假设下载得到的压缩源代码存放在/download目录下,文件名为wu-ftpd-2.6.2.tar.gz,图2显示了解压和编译的命令。


    图 2
    编译成功以后将生成如下几个可执行文件:
    ftpd: FTP服务器程序
    ftpcount: 这是一个计数器,显示目前ftp登录的人数
    ftpshut: 用于关闭FTP守护进程的程序
    ftpwho: 查看当前FTP服务器的连线情况
    ckconfig: 检查FTP的设置是否正确
    ftprestart:重新启动ftp服务器
    然后就是安装了,执行“make install”命令进行安装。
    若是第一次安装,使用ckconfig命令查找ftpd的各种配置文件存放目录:ftpusers、ftpservers、ftpaccess、ftp.pids-%s、ftpconversions、xferlog、ftphosts和ftpgroups。ckconfig是用来确保修复该程序检测到的任何问题。图3为本服务器执行chconfig 后相关信息。













    图 3
    (三)配置/etc/ftpaccess
    这是FTP服务器最重要的配置文件,将决定FTP是否可以正常工作及许多访问权限的设置。该文件中包含的用户不能通过FTP登录服务器,有时将需要禁止的用户账号写入文件/etc/ftpuser中,就能够禁止一些用户使用 FTP服务。以下说明一些该文件中配置项的含义:
    (1) 格式:loginfails [次数]
    功能:设定当用户登录到FTP服务器时,允许用户输错密码的次数。
    (2) 格式: guestuser [用户名]
    功能: 指定的非匿名用户登录进入服务器以后,都被做为匿名用户处理。
    (3) 格式:class [类名] [real/guest/anonymous] [IP地址]
    功能:这个指令的功能设定FTP服务器上用户的类别。并可对客户端的IP地址进行限制,允许某部分的IP地址或全部的IP地址访问。而在FTP服务器上的用户基本上可以分为以下三类:
    real 在该FTP服务器有合法账号的用户;
    guest 有记录的匿名用户;
    anonymous 权限最低的匿名用户
    (4) 格式:limit [类别] [人数] [时间] [文件名]
    功能:这个指令的功能为设置指定的时间内指定的类别允许连接的指定人数上限。当达到人数上限的时候,显示指定文件的内容。
    (5) 格式:email [guest的E-Mail地址]
    功能:只要将某些E-Mail地址设置在这个地方,那么这些用户登录到FTP服务器时,他的身份将为guest,一般权限比real低一些,比anonymous高。
    (6) 格式:message [文件名称] [指令]
    功能:当用户执行所指定的指令时,系统将指定的文件内容显示出来。
    (7) 格式:compress [yes/no] [类别]
    功能:设置哪一个类别的用户可以使用compress(压缩)功能。
    (8) 格式:tar [yes/no] [类别]
    功能:设置哪一个类别的用户可以使用tar(归档)功能。
    (9) 格式:chmod [yes/no] [real/anonymous/guest]
    功能:设置是否允许指定用户使用chmod命令更改文件权限。默认是允许。
    (10) 格式:delete [yes/no] [real/anonymous/guest]
    功能:设置是否允许指定用户使用delete命令删除文件。默认是允许。
    (11) 格式:overwrite [yes/no] [real/anonymous/guest]
    功能:设置是否允许指定用户覆盖同名文件。默认是允许。
    (12) 格式:rename [yes/no] [real/anonymous/guest]
    功能:设置是否允许指定用户使用rename命令来为文件改名。默认是允许。
    (13) 格式:log transfers [real/guest/anonymous] [inbound/outbound]
    功能:设置哪些用户的上载(inbound)和下载(outbound)操作做日志。
    (14) 格式:passwd-check [none/trivial/rfc822] [enforce/warn]
    功能:设定对匿名用户anonymous的密码使用方式。
    none 表示不做密码验证,任何密码都可以登录;
    trival 表示只要输入的密码中含有字符“@”就可以登录;
    rfc822 表示密码一定要符合RFC822中所规定的E-Mail格式才能登录;
    enfore 表示输入的密码不符合以上指定的格式就不让登录;
    warn 表示密码不符合规定时只出现警告信息,仍然能够登录。
    (15) 格式:log command [real/guest/anonymous]
    功能:设置哪些用户登录后的操作记录在文件/usr/adm/xferlog中。
    (16) 格式:umask [yes/no] [real/anonymous/guest]
    功能:设置是否允许指定用户使用umask命令。默认是允许。
    (17) 格式:upload [根目录] [上载目录] [yes/no] [用户] [权限] [dirs/nodirs]
    功能:对可以上载的目录进行更加详细的设置。
    (18) 格式:limit [类别] [人数] [时间] [文件名]
    功能:设定在某个类在某个时间内允许连接FTP服务器的人数的限制,并指定当连接人数超过限制,后面的用户连接时显示指定文件的消息给用户看。
    图4是本服务器/etc/ftpaccess的配置方案。














    图 4
    (四)配置/etc/ftpusers、/etc/ftphosts和/etc/ftpconversions
     /etc/ftpusers是用来限制系统上的某些用户不能使用FTP。这个设置十分简单,只要将要禁止的用户账号写入文件/etc/ftpusers中。由于从系统的安全考虑,一般我们不希望权限过大的用户和一些与命令名相同的用户进入FTP服务器。因此在缺省的配置中,有些用户已经被列入了“黑名单”。本服务器的/etc/ftphosts文件设置如图5所示。







    图 5
    设置/etc/ftphosts,是为了禁止某些来自指定主机上的登录。拒绝来自某些主机的登录,有两种方法。一种方法就是在/etc/ftpaccess中设置deny命令,另一种更加简单的方法就是在/etc/ftphosts中写入你要禁止的主机的IP地址或域名。本FTP服务器没有需要禁止登陆的主机,所以没有设置/etc/ftphosts文件。
    /etc/ftpconversions文件用来设定当用户下载文件时应该做那些操作,例如压缩、解压缩等。要实现这些功能,必须先将一些压缩、解压缩的命令文件如tar、gzip、gunzip、compress、uncompress等命令文件拷贝到/home/ftpd/bin目录下。本FTP服务器使用图 6所示的默认设置。








    图 6
    (五)创建FTP的账户
    很多时候需要创建一些只允许ftp到服务器的用户,实现方法如下:
    修改/etc/shells文件,在最后添加/dev/null项或/bin/passwd项,然后编辑文件/etc/passwd,将那些只允许FTP的系统的用户的登录shell改为/dev/null(若不允许用户修改其口令)或/bin/passwd(若允许用户修改其口令字)。这样,则该用户只能使用如pop3、FTP等服务,而不能通过telnet登录到系统中。
    (六)测试WU-FTP服务器
    配置完WU-FTP服务器后,需要测试服务器是否能正常工作,能否达到预期的目标。
    首先,我们需要一个能上传、下载和删除文件的用户,这里我设置的用户名为“ken”,密码为“159357”。图7显示了验证过程。





















    图7
    从图5我们知道,此用户拥有上传、删除的权限。我们还需要有匿名(anonymous)用户供普通用户下载,但不能上传和删除FTP中的文件。下面我们测试“anonymous”用户能否达到预期的目的,图8显示了验证过程。





























    图 8
    由图8的结果可以看到,“anonymous”用户完全能达到我们想要的目的。
    四、Shell与Shell脚本
    (一)Shell简介
    Shell是一个用来运行命令、程序和Shell脚本的环境。Shell具有不同的风格,就像Linux操作系统具有不同的风格一样。每种风格的Shell都具有各自可以识别的命令和功能。
    Shell脚本的基本概念是一组命令,这些命令按照执行的顺序列出。Shell脚本和函数都是解释型的(interpreted)。这意味着他们不进行编译。
    (二)编写Shell脚本
    在很多公司内,日常业务就是随时对要处理的数据进行文件传输。由于这些数据的重要性,数据的传输必须自动完成。ftp的自动化涉及三个方面:需要将出站的(outbound)文件传输到其它的站点、从远程站点将入站的(inbound)文件传输到本地站点,周期性地检查远程站点以确定文件是否能够下载。本文以更新瑞星升级包为例,创建Shell脚本完成自动下载。
    为了方便测试,我将本服务器视为远程FTP服务器。假设登陆远程服务器需要账号“ken”,密码“159357”,升级包在服务器的“/down”目录下,需要将升级包下载到本地“/var/ftp/ruixing”(此目录在匿名访问的默认目录之下,因此匿名用户登陆后就能直接下载更新后的升级包)目录下。为此,创建文件名为“/ftpscript”的Shell脚本,内容为图9所示。






    图 9
    (三)测试Shell脚本
    为了验证“/ftpscript”脚本能否达到更新文件的目的,将升级包“upgrade.exe”放在FTP服务器的“/down”之下,然后执行“/ftpscript”脚本,图10显示了全过程。
















    图 10
    由图10反馈的信息,我们知道升级包更新成功。为使每次更新都不必手工执行一次“/ftpscript”脚本。我将在cron表中创建一条项目,以便在指定的时间内能自动执行此脚本。操作如图11所示。



    图 11
    创建好cron表后,我们可以用crontab -l命令查看。图12显示了查看的内容。




    图 12
    从图12可知corn表中确实添加了“0 8 * * * root /ftpscript”。此语句是令每天早上8点以root用户执行“/ftpscript”脚本。

  7. Shader 于 2007-11-03 20:33:08发表:

    usftpd,proftp等等,虽然没做过不过linux下的FTP服务能实现的有很多

  8. cn256 于 2007-11-03 18:09:16发表:

    谢谢楼上朋友,不过我是指FTP服务器。

  9. wuanshou 于 2007-11-03 17:54:36发表:

    一般都用APACHE服务器+MYSQL数据库