鸟哥的 Linux ADSL 私房菜


简易 FTP Server 架设 -- Wu FTP
最近更新日期:2003/09/13
 
在 Internet 上面的传输协议当中, FTP ( File Transfer Protocol ) 算是一个最古老的协定之一了!早期还没有这么多好用的协议之前( 例如 SAMBA ),都是使用 FTP 来进行数据的传递的呢!另外,一般来说,数据的传输以 FTP 这个协议来传送是相当的快速的,而且某些场合当中其实也相当的方便。不过,值得注意的是,使用 FTP 来传输时,其实是具有一定程度的『危险性』,因为数据在 Internet 上面是完全没有受到保护的『明码』机制!所以,其实鸟哥不太建议大家使用这个服务器的啦!尤其当你建置好了 FTP 之后,如果经常进行数据的传递,对于您的网络频宽『真的有很大的损害』啊!不过,无论如何, FTP 仍然有其存在的必要!例如中山大学的 FTP 站就作的相当的棒啊!所以,底下我们就来谈一谈用在这个古老的协议上面,最古老的服务器之一: Wu FTP
 
原理
  :FTP 的功能简介
  :FTP 的运作流程与使用到的 Port
  :什么是『被动, passive』的联机
  :FTP 的替代方案与安全性问题
  :什么时候才要设定 FTP 啊!开放谁人连进来
套件安装
Server 端设定
  :Wu FTP 的结构
  :最简单的 ftpaccess 设定档
  :使用 Super daemon 管理 FTP 的情况
  :欢迎画面的建立、 Readme 档案与关闭 FTP 讯息内容
  :限制最大在线人数
  :限制与取消使用者的家目录规范
  :时间相关的设定项目
  :流量与上传下载总量的限制项目
  :创造 guest user 与 guest user 的家目录问题
  :anonymous 的根目录与建立可上传目录
  :针对人物(real, guest, anonymous)的限制设定项目
  :拒绝某些使用者与开放某些使用者的登入(/etc/ftphosts, deny-uid, allow-uid)
  :目录与连结文件的问题
  :建立 passive port 提供 client 端登入
  :修改 FTP 预设的 port 21 的联机
  :一个多样化的实例
Client 端的使用 FTP 软件
  :ftp
  :ncftp
Server 端的安全设定项目
  :iptables
  :TCP_Wrappers
  :pam 模块与 /etc/ftpusers 的关系
  :FTP 本身提供的抵挡 username 或 host 的控件目
重点回顾
参考资源
本章习题练习

原理:
套件安装
事实上,使用 Wu ftp 来架设你的 FTP 服务器时,还是以 RPM 的方式来安装比较好啦!另外,如果您的 Linux distribution 提供其它版本的 FTP 服务器,呵呵!那么就不要使用 wu ftp 也没有关系啊!这是因为 wu ftp 实在是太古老了,所以很多的黑客软件都是针对他来设计的,也因为如此啊,所以才会产生『Wu FTP 服务器比较不安全』的情况啊!好了,底下我们以 Red Hat 7.x 的版本来进行说明吧。基本上,一个 FTP 服务器包含 Server 与 Client 用途的套件至少要有:
 
[root@test root]# rpm -qa | grep ftp
ncftp-3.0.3-6
ftp-0.17-12
wu-ftpd-2.6.1-20
 
其中: 如果没有安装,请马上安装吧!如果不晓得怎么安装,那么请拿出『鸟哥的 Linux 私房菜 -- 基础学习篇』好好的将 mount CD 的指令、搜寻的指令,以及 RPM 的指令瞧一瞧先!

Server 端设定:
Client 端的使用 FTP 软件
事实上,我们在网络常用指令那个章节当中已经介绍过了 ftp 与 ncftp 这两个很好用的 client 端软件了,在这里我们再次的强调一下这两个软件,其中,比较重要的是强调传输的模式。在 Server 与 Client 传输的过程中,数据的流动主要分为 binary 与 ascii 两种模式,需要注意的是: 底下我们就来介绍两个软件吧!
 

  • ftp

  • 远程传送数据当中,速度最快的协议之一
    语法
    [root @test /root]# ftp [-p] host [port]
    参数说明:
    -p :启动 PASSIVE 模式!
    范例:
    [root @test /root]# ftp localhost     <==预设是以 port 21 来进行联机
    [root @test /root]# ftp localhost 1354   
    如果你设定的 ftp 的 port 非正规的 21 ,则可以这样!

    [root @test /root]# ftp localhost  <==连接到远程主机
    Connected to localhost (127.0.0.1).
    220 localhost FTP server (Version wu-2.6.1-20) ready.
    Name (127.0.0.1:test): test
    331 Password required for test.
    Password: <==输入密码
    230 User test logged in.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> dir          <==显示远方主机的内容
    ftp> cd           <==变换远程主机的目录
    ftp> close or bye or exit <==离开远程主机
    ftp> get file       <==取得远程主机的档案
    ftp> mget file       <==取得所有的档案,例如 mget .bash* !
    ftp> put file       <==将本地端档案 file 丢到远程主机上
    ftp> mput file       <==与 mget 差不多意思啦!
    ftp> delete file      <==杀掉远程主机的 file 档案
    ftp> help         <==显示求救指令!
    ftp> mkdir dir       <==在远程主机上面建立目录
    ftp> lcd          <==变换本地端路径!
    ftp> ascii or binary    <==重要的很!上面提过的!

     

  • ncftp

  • 登入匿名主机最好用的文字接口 FTP 软件!
    语法
    [root @test /root]# ncftp [host]
    [root @test /root]# ncftp [ftp://domain.name/path]
    参数说明:
    可以直接连接到 host 主机,也可以直接连接到主机的某个路径之下,相当的方便
    范例:
    [root @test /root]# ncftp ftp.nsysu.edu.tw   <==连接到中山大学 FTP 站
    [root @test /root]# ncftp ftp://ftp.nsysu.edu.tw/Linux
    直接连接到 Linux 底下的 Linux 目录下!

    远程主机的一些服务指令:
    ncftp /pub/Linux > cd Redhat      <==变换目录
    ncftp /pub/Linux > dir         <==显示目前目录下的档案与目录信息
    ncftp /pub/Linux > get file1       <==将 file1 的资料存到本地端
    ncftp /pub/Linux > get -z file1 file2  <==将 file1 存到本地改档名为 fill2
    ncftp /pub/Linux > get -A file1 file2  
    将 file1 以累积的方式(append)增加到 file2 这个档案
    ncftp /pub/Linux > pub file       <==将档案由本地端上传至远程!
    ncftp /pub/Linux > rename file1 file2  <==将远程的主机之 file1 更名为 file2
    ncftp /pub/Linux > rm file       <==删除档案
    ncftp /pub/Linux > rmdir directory   <==删除目录
    ncftp /pub/Linux > mget directory  <==可以下载『整个目录』的数据!很棒吧!

    本地端主机的一些指令功能:
    ncftp /pub/Linux > lcd      <==变更本地端目前所在的目录
    ncftp /pub/Linux > lls      <==显示目前本地端所在目录的档案与目录信息
    ncftp /pub/Linux > lmkdir    <==在本地端建立目录
    ncftp /pub/Linux > lpwd     <==显示目前本地端主机的所在目录
    ncftp /pub/Linux > lrm     <==删除本地端的档案
    ncftp /pub/Linux > lrmdir    <==删除本地端的『目录』


    Server 端的安全设定项目:
    重点回顾
    参考资源
    本章习题练习 ( 要看答案请将鼠标移动到『答:』底下的空白处,按下左键圈选空白处即可察看 )
    简易 FTP Server 架设 -- Wu FTP 设定

    2003/03/26:第一次完成
    2003/09/13:修改部分内容,增加了详细说明 chroot 的地方去!

    2003/03/26以来统计人数


    Designed by VBird during 2001-2004.  Aerosol Lab.