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