總目錄
前 言
第一章 在Debian上配置Apache+MySQL+PHP4
第二章 在Debian上用Wu-ftpd配置FTP服務器
第三章 在Debian上用Exim配置郵件服務器
第四章 在Debian上配置Samba服務器
第五章 在Debian上用Bind配置DNS服務器
《Debian服務器設置入門》系列教程之第二章:FTP服務器
第二章 在Debian上用Wu-ftpd配置FTP服務器
本章目錄
1 開場白
2 選擇wu-ftpd
3 安裝
4 配置
5 測試
6 TODO
7 結束語
8 參考文獻
1 開場白
在五年之前,我還覺得Ftp這個東西很神秘。那時候,我身邊的大部分人,甚至以為http就是互聯網的全部。我們從網站下載文件,用的大多也是http連接。但是,事實上,ftp(File
Transfer Protocol,文件傳輸協議)這個服務已經存在很長時間了,如果要提供文件下載,除了使用http的方式連接外,我們完全可以提供ftp服務,這樣可以節省一些服務器資源,比如連接數什麼的。ftp是專門設計用來在兩台電腦之間傳輸數據的,可以避免太多的遠端執行。尤其是,當傳輸的文件比較大時,ftp會比http節省資源。另外,ftp可非常方便地上傳文件,而http則沒有那麼方便快捷。
2 選擇wu-ftpd
用apt-cache search
命令看一下,都有什麼ftp服務器可以選擇:
你會發現,Debian為我們制作了很多個ftpd服務器軟件包,包括atftpd、bsd-ftpd、ftpd、oftpd、muddleftpd、proftpd、twoftpd、vsftpd、wu-ftpd等等。其中應用最廣泛的,應該是wu-ftpd了,這是目前最流行的一種免費FTP服務器軟件,目前絕大多數的FTP站點都是由wu-ftpd來架設的,它是當初由華盛頓大學wuarchive.wustl.edu開發出來的,是一個以效率以及穩定性為考量的程序。wu-ftp如此流行,一個重要的原因是因為它強大的功能,例如:
◆ 可控制不同網域的機器對 FTP服務器的存取權限和訪問時段。
◆ 使用者在下載文件時,可自動對文件進行壓縮或解壓縮工作。
◆ 可以記錄文件上傳或下載的過程。
◆ 可以限制最高訪問人數,以維持系統的最佳運行效率。
◆ 可顯示相關的信息,以便用戶了解當前的接收狀態。
◆ 可暫時關閉FTP服務器,以便系統維護。
目前Debian提供的wu-ftpd版本是2.6.2。好,我們就選擇這個wu-ftpd了!
3 安裝
安裝很簡單,用下面的命令安裝:
它會問你,你想設置一個匿名ftp賬號嗎?輸入y,回車。
接著讓你輸入ftp根目錄,默認是/home/ftp,我們就用默認的吧。
然後它問你,你想創建一個目錄,用來讓用戶上傳文件嗎?輸入y,創建一個。
安裝程序會創建一個新的用戶ftp,並把這個用戶加入到一個新創建的組ftp中去。
然後它會說:
(它說由於無法判斷所需的版本,libnss_files.so沒有安裝,要手工安裝的話,到/home/ftp/lib去找。這塊我還沒搗鼓明白,還請高手賜教)。這裡需要對初學者說明一下,系統從/etc/passwd這個文件裡面讀取資料,得到UID和GID,來決定用戶對文件的存取權限。一會兒我們會講到,在ftpaccess這個配置文件裡,可以為某些UID的用戶或者某些GID的組設置權限。
4 配置
其實,在安裝完之後,不需要做任何配置,我們的ftp服務器已經可以使用了。如果你跟我一樣是個急性子,在進行配置之前你就可以嘗試登錄了。這時,Debian上的普通用戶,還有匿名用戶都可以訪問它,也可以向incoming目錄上傳文件,只不過看不到已經上傳的文件。但是我們仍然需要做一些配置,因為我們需要定制自己的安全性。
為了確保提供FTP服務不會給我們的系統帶來安全隱患,我們首先要采取以下措施:
4.1 配置文件介紹
wu-ftpd的配置文件放在/etc/wu-ftpd下面,主要有:
ftpaccess —— 這個是wu-ftpd的主配置文件,控制存取權限
ftpconvertions —— 這個文件定義了文件壓縮/解壓縮轉換方案
ftpservers —— 用來設置多個IP地址和域名,以對應到不同的虛擬主機
ftpusers —— 凡是寫入這個文件裡面的用戶,都不能連接ftp服務器
msg.denu —— 拒絕訪問時,顯示給用戶的信息
msg.nodns —— 當DNS查詢失敗時,顯示給用戶的信息
msg.toomany —— 當連接數過多時,顯示給用戶的信息
pathmsg ——
當用戶使用了非法路徑/文件名時,顯示給用戶的信息
welcome.msg ——
當用戶建立連接時,顯示給用戶的歡迎信息
在/usr/share/doc/wu-ftpd/examples下面,有一些配置文件的樣本,大家可以參照一下。
4.2 修改/etc/wu-ftpd/ftpaccess配置
這個文件是wu-ftpd的主配置文件,許多重要的選項都包含在這裡面,比如,要想讓Debian上的用戶可以訪問,就必須在這個文件裡面的Class段落裡面做出定義。
下面我們按照ftpaccess文件的順序,一段一段地介紹。平常不大用的,或者我不懂的,就不介紹了:-),要不然篇幅會非常大。
4.2.1 管理員的email地址
4.2.2 UID/GID設置
# 設置哪些UID/GID可以、不可以使用FTP服務。這裡的%-99我沒搞明白,請高手指教!4.2.3 登錄失敗數
# 下面設置登錄5次失敗後,斷開連接4.2.4 目錄限制
# 除了用戶自己的根目錄,讓用戶看不到別的東西。這個很關鍵!4.2.5 不可執行SITE GROUP/SITE GPASS
# private決定了用戶是否可以執行SITE GROUP/SITE GPASS命令4.2.6 定義用戶類別——class
由class定義的用戶和IP地址才能夠登錄進來。FTP服務器上有三種類型的使用者,分別是“real”——表示在該FTP服務器上有合法帳號的用戶;“guest”——表示另行定義的某些使用組的使用者;“anonymous”——權限最低的匿名用戶。有了這三種使用者以後,在ftpaccess文件中就可以根據不同的使用者設置不同的存取權限。但是,只有三種定義一般是不夠的,我們可以根據class的語法定義更多的控制命令。
語法是:
其中:<class 名稱>則可自行設定,<種類>就是上面說的三種,<用戶地址>是指ftp上來的用戶會用到的IP地址。
以下是一些例子:
4.2.7 為各個類別的用戶設置最大連接數
# 可以為每一個類別定義最大連接數,並顯示不同的錯誤信息。下面允許30個連接。4.2.8 設置readme文件
# readme命令:指定用戶登錄或進行其它操作(如更換目錄)時FTP服務器提示用戶閱讀的文件。4.2.9 是否使用壓縮
# 下面定義的允許從local和remote登錄的機器在傳輸文件時,4.2.10 記錄日志
# 如果去掉前邊的注釋符號,它就會記錄相應的信息。4.2.11 超時設置
# 下面設置:如果超過30秒沒有動作,就斷開anonymous的連接4.2.12 一些命令的權限
rename no anonymous # rename 權限?4.2.13 匿名用戶上傳權限
# 全給他們加上井號,不讓匿名用戶上傳文件 由於ftpd是被inetd調用的,所以,我們修改了配置文件後,不需要重新啟動wu-ftpd。
對於普通ftp應用,修改一下上面這個文件就足夠了。如果你還有更高的要求,就繼續往下看。
4.3 修改/etc/wu-ftpd/ftpusers
我們已經說過了,只要寫進這個文件裡面的用戶,是不能登錄我們的ftp服務器的。
限制這些用戶使用FTP服務器主要是基於系統安全的考慮,避免權利過大的用戶(如root、ftpadm)登錄FTP服務器和避免使用系統命令作為帳號(如shutdown、sync),以避免系統管理上的困惑。我們可以根據自己使用的需要,向該文件中增加或刪除用戶。
注意這個文件是/etc/ftpusers的快捷方式。下面是默認的ftpusers的內容:
4.4
修改/etc/wu-ftpd/ftpconversions文件
ftpconversions文件主要定義用戶從FTP服務器中下載文件時對文件進行格式轉換的規則。例如壓縮、解壓縮、打包和開包等操作,這樣用戶就不必為.tar.gz、.tgz、.Z、.z之類的文件傷腦筋了。ftpconversions文件的格式初看上去很復雜,不過不用擔心,我們基本上不用動它,debian為我們准備的這個配置,已經能夠滿足我們的使用需要了。下面讓我們來看看ftpconversions文件的內容:
你可能想我一樣看花了眼,不過好在我們不用深究,反正這個文件基本上把常用的壓縮,打包命令都包括在內了,只要它存在,FTP服務程序就會根據用戶的需要執行壓縮或打包的命令。
例如,用戶想下載目錄Howto中所有的文件,那麼他不必使用mget命令,而只要使用get
Howto.tar.gz,這時wu-ftpd就會將該目錄打包壓縮並發送到用戶的機器上了。所以使用該文件可以完成壓縮傳遞的數據量,減少傳輸時間等作用。
這裡有一點需要注意,這個文件中定義的可執行文件的位置/bin指的都是/home/ftp/bin而不是Linux的/目錄下的bin,所以請檢查/home/ftp/bin目錄中有無上述命令,如果沒有還需要將這些程序復制到該目錄中。我看了一下,由於我僅僅安裝了Debian的基本系統,所以bzip2這個命令是沒有的,我們可以用at-get
install bzip2命令來下載和安裝它,然後把bzip2命令復制到/home/ftp/bin就可以了。
5 測試
到這裡,匿名FTP服務器的配置工作基本上就完成了,我們可以用ftp命令連接自己的服務器,檢查合法用戶和匿名用戶的連接情況以及各個目錄的權限是否正確。之後就可以准備FTP服務的開張了。
6 TODO
在下一個版本裡面,我將描述如何用ftpmirror建立ftp服務器鏡像。
7 結束語
本文是《Debian服務器設置入門》系列教程之第二章》,建議您按照順序閱讀,有問題可以和作者kanaka聯系。
8 參考文獻
本章參考了下面的文章:
《用wu-ftpd架設FTP服務器》一文,地址是http://www.lslnet.com/linux/docs/linux-3300.htm
《架設FTP服務器》一文,地址是http://www.linuxsir.com/bbs/showthread.php?s=&threadid=8455&highlight=wuftpd
很抱歉我沒找到這兩篇文章作者的名字,但是我們仍然應該心存感激。