鳥哥的 Linux ADSL 私房菜


簡易 FTP Server 架設 -- Wu FTP
本文已不再維護,更新文章請參考 vsftpd 的介紹
最近更新日期: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以來統計人數