用LINUX架(jià)設FTP服務器
以前自己弄的東(dōng)西,現在帖出來,希望對大家有點用:)
1.1 什麽是FTP:文件(jiàn)傳輸協議原理(lǐ)
1.1.1 命令選擇
1.1.2 命令格式
1.2 wu-Ftpd的安裝
1.3 讓FTP服務器運轉起來
1.4 配置文件的(de)設置
1.4.1 /etc/ftpaccess的設置
1.4.2 /etc/ftpusers和/etc/ftphosts的設置
1.4.3 /etc/ftpconversions設置
1.4.1 wu-ftp的(de)相關程序
1.5 開設隻能FTP的帳戶
1.6 設置虛擬FTP主機
什麽是FTP:文件傳(chuán)輸協議原理
互聯(lián)網文件傳輸協議(yì)(File Transfer Protocol ,FTP) 標準是在RFC959說明的。該協議(yì)定(dìng)義了一個從遠程計算機(jī)係統和本地計算機係統之間傳輸文件的一(yī)個(gè)標準。一般(bān)來說(shuō),傳輸文件的用戶需要先經過認證以(yǐ)後(hòu)才(cái)能登錄網(wǎng)站,然後(hòu)方能訪(fǎng)問在遠程服務器(qì)的文件。而大(dà)多數(shù)的(de)FTP服務器往往提供一個GUEST的公共(gòng)帳戶來允許沒有遠程服務器(qì)的用戶可(kě)以訪問該FTP服務器。
一個FTP會話通常包括五個軟件元素的交互。
用戶(hù)接口 提供了一(yī)個用戶接口並使用客戶端協議解釋器的服務
客戶 PI 客(kè)戶協議解釋器,其項遠程(chéng)服務器協議機發送命令並且驅動客戶數據傳輸過程
服務器PI 服務器協議解釋器,響應客戶協議機發出的命令並驅動服務器端數據傳輸過程
客戶 DTP 客戶數據傳輸過程,其(qí)負責(zé)完成和(hé)服務器數據傳輸過程及客戶端本地文件係統的通(tōng)信
服務DTP 服(fú)務器數據傳輸過程,其負責完成和客戶數據傳輸過程及服(fú)務器端文件(jiàn)係統的通(tōng)信
在RFC 959中,一般使用用戶這個名詞來指(zhǐ)代客戶。RFC 959定義了客戶PI和服務器PI交互的(de)方式和(hé)規範。用戶接口與PI和DTP交(jiāo)互的機理都(dōu)並不(bú)是協議標準的一部(bù)分。PI和DTP往往通常是在同一個程序模塊中實現的。
在FTP會話中,一共會存在有兩個獨立的網絡(luò)連接,一個(gè)是由兩端的PI使用的,另一個是由兩端的DTP使用(yòng)的。PI之間的(de)連接一(yī)般(bān)被稱作控製連接(control connection),DTP之間(jiān)的連(lián)接被稱做數據連接(data connection)
使用TCP服務的控製和數(shù)據連(lián)接
通(tōng)常情(qíng)況下,FTO服務器監聽端口號21來等待控製連接建立請求。而數據連接端口號的選擇依賴(lài)於控製連接上命令。通(tōng)常是客(kè)戶(hù)發(fā)送一(yī)個控製消息來指定(dìng)客戶監聽並(bìng)等待服務器端發(fā)送數(shù)據(jù)連接建立請求的(de)端口號。
對數據傳輸和控製命令傳輸來使用不同的獨立(lì)連接有如下優(yōu)點(diǎn):兩個連接可以選擇不同的合適服(fú)務質量,如:對(duì)控製連接來說高需要更小的延遲時間,對數據連接來(lái)說需要更大(dà)的數據(jù)吞(tūn)吐量;而且可以避(bì)免實現數據流中(zhōng)的命(mìng)令的通明(míng)性及逃逸。
當傳輸建立(lì)時,總是由客戶端首先發起。然(rán)而客戶和服務器都可(kě)能是數據發送者。除了傳輸用戶請求下載文件,數(shù)據傳輸過程(chéng)同樣在客戶端請求列服務(wù)器端目錄結構時建立(lì)。
1.1.1 命令選擇
當一個傳輸建立時,一般通(tōng)常需要指定四個方麵(miàn)的屬性:
文件類型
該屬性指定(dìng)如何將文件的數(shù)據匹配成適於傳輸(shū)的格式,一共有四(sì)種(zhǒng)可能的選擇(zé):
ASCII文件類(lèi)型
在發送端,文件從本地文本文件格式轉換為 NVT ASCII格式,每行結束有一個CR/LF對來標識。 在接收端,再被轉換為本地的文本格式。
這說明(míng)了為什麽Unix主機之間傳輸文本文(wén)件(jiàn)為何傳輸的數據量要大於文(wén)件的實際大小。若傳輸一段端或傳輸兩端都不使用ASCII文本編碼,則是應該由數據傳輸過程來實現本地編碼和NVT ASCII 編碼(mǎ)之間的轉換。
EBCDIC文件類型
類似於ASCII,區別僅僅上使用EBCDIC字符編碼
圖象 (或二進製)文件類型(xíng)
文件以(yǐ)本地傳輸內容傳輸(shū),在遠端以同本地完全(quán)相(xiàng)同的內(nèi)容存儲。
本地文件係(xì)統
用在字節大小不是8位的(de)環境下。沒字節位數由發送者指定(dìng)。
在實際應用中,隻有ASCII和圖象格式使用的較多。
格式控製
該屬性是和將文本文件最(zuì)後傳送到打印設備相關(guān)的,其中有多種方式來實(shí)現將垂直格式信息編碼到文件中,包括指示一個新頁開始的方式。有如下方式可供選擇:
無須打印格式控製,這是缺省值
Telnet打印(yìn)控製,在(zài)telnet協議中(zhōng)定義(yì)的(de)控製字符包含在數(shù)據流中。.
Fortran打印控製,
該屬性在實際(jì)中很少使用。
結構
文件可以擁有(yǒu)內部結構,在傳輸中該(gāi)結構被保留。由數據傳輸過程來負責在傳輸中的(de)結構及本地結構之間相互匹配,有三種可能性:
文件結構
這實際上意味著文件被看作(zuò)沒有內部結(jié)構的連續的字節(jiē)流。
記錄結構
文件是有(yǒu)一係列記錄(lù)組成的結構。這隻適用於文本文件。
頁麵結構
也可以稱做塊結構。每一頁都伴隨一個頁號來傳輸,從而以順序的方式來完(wán)成(chéng)傳輸。
頁麵結構(gòu)很少在實際中遇到。記錄結構也不是很常(cháng)見。對於文本文件(jiàn)使用ASCII文件類型可以(yǐ)獲得(dé)相同的(de)效果。
傳輸模式
該屬性可以取(qǔ)三個不同的值:
流模式
文件的以字節流的方式傳輸。
塊模式(shì)
文件(jiàn)以一個(gè)塊連(lián)接一個塊的方式傳輸,每個塊的開頭都有一(yī)個頭。
壓縮模式
一個簡單的運程長(zhǎng)度壓縮編碼被應用,來壓縮連續的相同的字節。
實際中,一般隻有流模式被使用。而壓縮一般(bān)通過使用各種其他的工具程序來(lái)獲得。
當一次傳輸被建立,客戶(hù)端一般指(zhǐ)定一個或多個前麵說明的屬性。若(ruò)服務器端不能支持(chí)某個選項,服務器將(jiāng)用一個錯誤(wù)信息來響應客戶端,並不具有協商機製。
FTP提(tí)供了充足的命令來使用戶和遠程建立連接並訪問遠程文件係統。
1.1.2 命令格式
命令以NVT ASCII串的格式被傳輸。每個命令以三個(gè)或四個大寫的(de)NVT ASCII字(zì)符開始,後麵帶有選項參數和一個(gè)CR/LF對來(lái)標識命令結束
應答由三個NVT ASCII數字及一個選項消息組成。
一個長(zhǎng)的應答也許會有多個消息組成,第一個消息的三個數字後帶有一個破折號,最後的(de)消(xiāo)息不帶有破折(shé)號。中(zhōng)間的(de)消息無(wú)須攜帶三個數字,但是如果帶了三(sān)個數字,則也需要破折號。
下麵是所有的命令的列表。帶有(yǒu)星(xīng)號的命(mìng)令一般很少使用,所以往往在具體實現中不(bú)支持。
String Meaning
ABOR 放棄傳輸
*ACCT 某些係統將帳號和用戶與文件係統相關聯
*ALLO 為即將傳送的文件分配空間。後麵攜帶的參數來確定字節數
*APPE 將文件(jiàn)附加到已經存(cún)在的文件(jiàn)後麵
CDUP 在遠程係統上將當前目錄切換到上級父目錄
CWD 改變遠程係統的工作目錄
DELE 刪除遠程係統的文(wén)件
HELP 讀取服(fú)務器的幫助信息,如:支持的命令的列表
LIST 在一個新建立的數據連接上發送當前工作目錄下的文件名列表
MKD 創(chuàng)建(jiàn)目(mù)錄
MODE 指定傳(chuán)輸模式,可攜帶的參數是(shì):S、B或 C.
NLST 在一個新建立的數據連接上發送一個當前目錄下(xià)的“完全”的目錄列表
NOOP 空操作(zuò),防止連接斷掉
PASS 提(tí)供一個用戶登錄密碼,必須立即跟隨在USER命令後
*PASV 指定服務(wù)器數據傳輸過程監(jiān)聽等待客(kè)戶(hù)端的(de)數據連接連接建立請(qǐng)求
PORT 指定客戶端監(jiān)聽等待服務器端建立的連接的端口號
PWD 顯示服(fú)務(wù)器(qì)端的當前工作目錄名
QUIT 退(tuì)出(chū)登錄並終(zhōng)止連接
*REIN 重新初始化,退出登錄但是並不(bú)斷開連接,後麵(miàn)必須隨後發出一個新的USER命令
*REST 從服務器的一個標識處重新開始傳輸
RETR 從遠(yuǎn)程係統取回一個文件
RMD 刪除一(yī)個(gè)目錄(lù)
*RNFR 指定要被命名的文件的老(lǎo)的路徑名(míng),隨後必須是一個RNTO命令
*RNTO 指定要被命名的文件的(de)新的路(lù)徑名
*SITE 站點特有的服務(wù)器提供的服務
*SMNT 結構加載,提供一個文件係統結構的遠程係統路徑名
*STAT 狀態信息
STOR 上載一個文件到服務器上,若文件已經存在則覆蓋
*STOU 上載一個文件到服務器上,不覆蓋已經存在(zài)的文件
STRU 指定文件結構,參數(shù)可(kě)以是F、R或P.
*SYST 報告遠程係統的操作係(xì)統(tǒng)類型(xíng)
TYPE 指(zhǐ)定文件類型,參數可以是(shì)A、E、I、L隻(zhī)有TYPE A和TYPE I常(cháng)用
控製連接命令(lìng)應答有如下形式:
Type Description
1yz 主動初步應答,在發送另(lìng)一個命令以(yǐ)前等待另一個應答
2yz 主動最後應答,最(zuì)後一個(gè)命令成功結(jié)束
3yz 主動中間(jiān)應答,必須再發送(sòng)一個命令
4yz 暫時被動應答,要求的動作當(dāng)時不能完成,但可以重試(shì)
5yz 永久被動應(yīng)答,要求的動作不能完(wán)成,不應該重試
"y"數字編碼進(jìn)一步的信息
Digit Meaning
0 語法錯誤
1 信息
2 連接狀態
3 認證和記帳
4 保留
5 File s文件係統狀態
下麵是一些典型的消息:
Number Meaning
125 數據連接(jiē)打(dǎ)開,傳輸開始
200 命令OK
331 用戶名OK 需要輸入(rù)密碼
425 不能打開數據連接
452 錯誤寫文(wén)件
500 語法錯誤-不可識(shí)別的命
具體的詳細情況可以參見RFC
wu-Ftpd的官方權威站點地址是:http://www.wu-ftpd.org/。
1.2 wu-Ftpd的安裝
當前(qián),Linux環境下有許多ftp服務器軟件可(kě)供選擇(zé),但是目前最(zuì)常見的仍然(rán)是wu-Ftpd服務器。這裏主要討論該軟件的安裝和配置。
一般來說,在安裝了linux時,缺省都會自動安裝wu-ftpd服(fú)務器,但是有時候為了某種(zhǒng)需要也需(xū)要自己親自重新安(ān)裝該服務器軟件。安裝wu-Ftpd有兩方式,一種是安裝rpm形式的發布包;一種是自己動手去(qù)編譯生成Ftp服務器。
rpm包(bāo)可以在(zài)http://rpmfind.net/linux/RPM/WByName.html處下載(zǎi)得到,以rpm包方式(shì)安裝非常簡單,隻需要在按下麵的簡單的幾個步驟就可以完成,假設下(xià)載得到(dào)的rpm包存放在/tmp目錄下:
#cd /tmp
#rpm -ivh wu-f
關鍵詞:LINUX,FTP服務器
閱(yuè)讀本文(wén)後您有什麽感(gǎn)想? 已有 人給出評價!
- 1
- 1
- 1
- 1
- 3
- 1