Linux下架设FTP

来源: 作者: 2006-04-24 出处:pcdog.com

  • access
  • 磁盘空间
  • dns
  • 解压缩
  • 漏洞

  •   Linux下一般最常用的工具wu-ftpd.
      wu-ftpd的安装非常容易,大多数版本的Linux中都包含了wu-ftpd的rpm软件包,你可以在安装Linux时指定装入。如果你想自行编译源代码,也可以到ftp://ftp.wu-ftpd.org下载最新版本的源代码包。
      安装好以后,可以用ckconfig命令来检查是否已经正确安装。在/etc/passwd中可以指定ftp用户的登入目录。
      wu-ftpd主要有以下6个配置文件:
      ftpaccess(主要配置文件,控制存取权限)
      ftpconvertions(配置文件压缩/解压缩转换)
      ftpgroups(设定ftp自己定义的群组)
      ftphosts(设定个别的用户权限)
      ftpservers(设定不同IP/Domain Name以对应到不同的虚拟主机)
      ftpusers(设定哪些帐号不能用ftp连线)
      下面我们来一一介绍。
      ⒈/etc/ftpaccess(wu-ftpd的主要配置文件)
      class--定义群组,用法如下:
      class<种类><用户地址>[<用户地址>……]
      由class定义的群组用户才可以连线进来,可以使用多层式的class来规范哪些群组的用户能够从哪些地方上来。这里有三个重要的种类,real、anonymous个guest。real如果没有列在定义中,那么这台机器中任何真实的一般用户都无法用自己的帐号连上来。anonymous如果没有在定义,就表示不让没有帐号的的人连上来。如果有定义guest,那么guest群组的人就可以上来。另外<用户地址>是指ftp上来的用户会用到的IP地址,则可自行设定。以下是一些例子:
      class all real,guest,anonymous *
      定义了一个名为all的class,包含三种人,所有IP的连线用户(也就是所有人都包括了)
      class local real localhost loopback
      local这个class说,只有real的用户可以从本机机器连上来
      class remote guest,anonymous *
      remote这个class包含了从任何地方上来的guest和anonymous用户,但是real用户不算
      class rmtuser real !*.example.com
      rmtuser这个class包含了从外面来的(除了example.com)真实用户
      autogroup--自动对应群组,用法如下:
      autogroup[……]
      当你定义好的那些同属于一个class的用户,一旦连线上来就会被对应到一个相应的群组下面,这样你就可以用Unix的文件权限对某一群人做限制。
      deny--拒绝某些地址连线,用法如下:
      deny<拒绝连线的地址><信息文件>
      禁止某些机器连线,并显示<信息文件>。例如:
      deny 210.62.146.*:255.255.255.254 /etc/reject.msg
      guestgroup--设定访客群
      guestuser--设定访客帐号
      realgroup--设定真实群组
      realuser--设定真实帐号
      nice--设定给某些class多少优先权,用法如下:
      nice
      在Linux中,nice的值是-20(最优先)到19(最后处理),这里你可以指定负的值来提高某class的优先顺序。
      defumask--设定某class的umask,用法如下:
      defumask[]
      umask是建立文件时该文件的的权限掩码
      tcpwindow--设定tcpwindow的大小
      keepalive--设定是否使用TCP SO_KEEPALIVE来控制断线情形
      timeout--设定连线超时,用法如下:
      timeout accept<秒>
      接受连线超时,预设120秒
      timeout connect<秒>
      连线建立超时,预设120秒
      timeout data<秒>
      数据传送超时,预设1200秒
      timeout idle<秒>
      用户发呆超时,预设900秒
      file-limit--限制某class只能传几个文件,用法如下:
      file-limit[][]
      对某个class限制存取文件的数目,包含了in(上传)、out(下载),total raw代表整个传输的结果,不光是数据文件。例如:
      file-limit out 20 lvfour
      限制lvfour这个class的用户最多只能下载20个文件
      byte-limit--限制某class只能传几个字节,用法跟file-limit相似
      limit-time--限制一个连线只能持续多久,用法如下:
      limit-time{*|anonymous|guest}<分钟>
      为了避免有人挂在站上不下来,可以用这个方法限制用户的上线时间,例如:
      limit-time guest 5
      让guest帐号的用户只能用5分钟
      limit--限制某class能同时几人上线,用法如下:
      limit<连线数目><时间区段><额满信息文件>
      设定某个class在某一时间区段内最多能够几人同时上线,后面是当超过连线数目时要显示的信息。例如:
      limit all 32 Any /home/ftp/etc/toomanyuser.msg
      限制所有连线在任何时间只能有32个用户,超过则拒绝连线并显示信息
      limit levellone 5 Any2300-0600 /home/ftp/etc/toomanyuser.msg
      限制levellone这个class的用户在23:00到6:00这段时间内只能有5人连线
      noretrieve--设定哪些文件不可下载
      noretrieve[absolute/relative][class=]…[-][<文件名>…]
      absolute或relative指文件是用绝对路径还是相对路径
      allow=retrieve--设定哪些文件可以下载
      allow[absolute/relative][class=]…[-][<文件名>…]
      loginfails--设置登入错误可尝试的次数
      当用户连线时可能打错ID或密码,这个设定可以让他打错几次以后就断线,避免有人用穷举法猜测密码。
      private--设定线上是否可以执行SITE GROUP/SITE GPASS
      当开放SITE GROUP与SITE GPASS指令时,可以用这两个指令切换到/etc/ftpgroup的群组。一般而言我们不会用到这个功能,以避免安全漏洞
      greeting--显示Server的版本信息,用法如下:
      greeting
      当用户登入画面显示的server信息,full是预设值,包含版本号以及hostname,brief只有hostname,而terse只有“FTP server ready”的信息。
      barnner--设定未进入Login画面之前用户看到的信息,用法如下:
      banner<文件路径>
      这里叙述了在用户登入时,在还没打ID/Password之前要出现的信息。文件路径指的是相对于真实的路径,而不是相对于ftp的根目录。
      host--设定ftp主机名
      email--指定ftp管理者的email地址
      message--信息文件的设定,用法如下:
      message<文件>{<何时>{……}}
      这里的文件的路径是相对于ftp的根目录的,“何时”是指当你做了什么动作之后的反应,有几个选择:
      login(登入时)
      cwd=<目录>(进入某目录时)
      class 名称是前面已经定义过的,允许你的信息只对哪些人发出。
      而信息文件的内容除了文字以外,还可以使用以下一些事先定义好的代号:
      %T(本机时间)
      %F(目前分区所剩余的空间)
      %C(目前所在的目录)
      %E(管理者的E-mail)
      %R(客户端主机名称)
      %L(本机主机名称)
      %U(用户名称)
      %M(与我相同class用户允许多少人连线)
      %N(与我相同class用户目前有多少人连线)
      %B(绝对磁盘限制大小,目前分区(单位blocks))
      %b(preferred磁盘限制大小,目前分区(单位blocks))
      %Q(目前已使用的blocks)
      %I(最大可使用的inodes(+1))
      %i(Preferred inodes限制)
      %q(目前使用的indoes)
      %H(超量使用磁盘空间的时间限制)
      %h(超量使用文件数目的时间限制)
      readme--通知用户哪些README文件已经更新
      log commands--记录用户所使用过的命令,用法如下:
      log commands<用户种类>
      log transfers--记录用户所传输的文件,用法如下:
      log transfers<用户种类><传输方向>
      设定有哪些类型的用户传输文件需要记录,包含了inbound(用户上传)和outbound(用户下载),例如:
      log transfers anonymous,guest inbound,outbound
      log security--记录安全性,用法如下:
      log security<用户种类>
      特别用于记录某类用户关于noretrive、notar等有关安全性的记录
      log syslog--记录到系统的syslog文件
      alias--设定目录别名,用法如下:
      alias<别名字符串><目录>
      cdpath--设定cd更换目录搜索顺序
      compress,tar--设定是否自动压缩,用法如下:
      compress[……]
      tar[……]
      定义哪些人可以执行压缩以及tar
      shutdown--通知用户要关站了
      shutdown<信息文件>
      如果信息文件存在的话,当这个文件指定的某时间以后,就会拒绝连线并切断已有的连线,等时间一到就关机。这个信息文件的格式如下:
      <年><月><日><时><分><拒绝倒数><断线倒数><文字>
      daemon address--指定只监听某个IP地址,用法如下:
      daemon address
      当你有许多IP的时候,使用这个选项将会取消其它任何虚拟FTP主机的设定。不设定的话,监听所有IP。
      virtual--设定虚拟FTP站台
      wu-ftpd提供了虚拟主机的功能,也就是说,在同一台机器上提供了不同FTP站台,以主机名称或IP来区分;当然你要用名称的话,还需要跟DNS配合才行。virtual有很多个设定:
      virtual
      <路径>
      可以是主机名或IP地址
      root指的是ftp的根目录,banner是欢迎信息,logfile指的是这个虚拟站台的log文件
      以下是一些例子:
      virtual virtual.com.bj root /home/ftp2
      virtual virtual.com.bj banner /etc/vftpbanner.2
      virtual virtual.com.bj logfile /etc/viftplog.2
      virtual
      <字母>
      用户可以查到hostname跟管理者email,以下是一些例子:
      virtual 210.62.146.50 hostname virtual.site.com.bj
      virtual vritual.site.com.bj email ftpown@virtual.site.com.bj
      virtual
      all
    更多内容请看PCdog.com--FTP服务器FTP软件的安装ftp服务器的配置专题
    上一篇:Linux Cluster
    下一篇:LVM for Linux测试报告