FTP(文件傳輸控制協議),可以使文件通過網絡從一臺主機傳送到同一網絡的另一臺主機上,而不受計算機類型和操作系統類型的限制。只要通信雙方都支持FTP協議,就可以通過FTP方便地傳送文件。
FTP的工作原理
FTP服務的具體工作過程如下。
①當FTP客戶端發出請求時,系統將動態分配一個端口(通常是1024以上,比如1351)。
②若FTP服務器在端口21偵聽到該請求,則在FTP客戶端的端口1351和FTP服務器的端口21之間建立起一個FTP會話連接。
③當需要傳輸數據時,FTP客戶端再動態打開一個連接到FTP服務器的端口20的第2個端口(如1352),這樣就可在這兩個端口之間進行數據的傳輸。當數據傳輸完畢後,這兩個端口會自動關閉。
④當FTP客戶端斷開與FTP服務器的連接時,客戶端上動態分配的端口將自動釋放掉。
ftp的特殊性部僅僅表現在需要使用兩個端口,而且還表現在其工作的兩種模式:主動模式和被動模式
在主動模式中,FTP客戶端隨機開啓一個大於1024的端口X向服務器的21號端口發起控制連接請求,然後開放X+1號端口進行監聽;FTP服務器接受請求並建立控制連接會話。如果客戶端在控制會話中發送數據連接請求,那麼服務器在接收到命令後,會用其本地的FTP數據端口(通常是20)來連接客戶端指定的端口X+1進行數據傳輸。
在被動模式中,控制連接和數據傳輸連接都是由FTP客戶端發起的。首先FTP客戶端隨機開啓一個大於1024的端口X向服務器的21端口發起連接,同時會開啓X+1端口,然後向服務器發送PASV命令,通知服務器自己處於被動模式。服務器收到命令後,會開放一個大於1024的端口Y進行監聽,然後用PORTY命令通知客戶端,自己的數據端口是Y。客戶端收到命令後,會通過X+1號端口連接服務器的端口Y,然後在兩個端口之間進行數據傳輸。這種方式便於數據穿越防火牆,可以使防火牆知道用於數據連接的端口號Y,而使數據連接得以建立。
簡單的說這兩種模式的區別在於數據傳輸連接的發起方不同。
pureftp是這篇文章的重點:
pureftpd的基本原理簡單的說就是使用php頁面來管理mysql數據庫,在數據庫中添加虛擬賬號,當ftp客戶端訪問ftp服務器時,將mysql數據庫中的虛擬賬號映射爲本地的一個處於鎖定狀態的賬號進而登錄ftp服務器。這樣不僅實現了ftp驗證身份登錄而且提高了系統的安全性,即使ftp帳號丟失,對於服務器影響也不大。
下面整個pureftp服務的實現是基於lamp環境,lamp環境的實現參考《lamp環境搭建以及應用--以rpm方式實現》
pureftp還需要mysql-devel的支持
pureftp的安裝較爲繁瑣,在安裝之前先捋順一下思路:
安裝pureftpd---à處理pure-ftp的WEB管理頁面---à新建存放虛擬帳號的數據庫---à處理pureftp的管理頁面與數據庫結合---à處理pureftp訪問mysql
1)安裝pureftpd
以上四個爲需要用到的兩個源碼包,一個創建數據庫的文件和pureftp連接mysql的配置文件
tar-zxvfpure-ftpd-1.0.36.tar.gz-C/usr/local/src/
2)處理pure-ftp的WEB管理頁面
3)新建存放虛擬帳號的數據庫
4)處理pureftp的管理頁面與數據庫結合
5)處理pureftp訪問mysql
6)驗證