控制連接配接(持續連接配接) -> TCP21(指令信道) -> 使用者收發FTP指令
資料連接配接(按需連接配接) -> TCP20(資料信道) -> 用于上傳下載下傳資料
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5SOiVDZxQzNiRzNkNjZyMWMkBjYmJDZ1IjNzIjZmBDZw8CX1AzLchDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLzM3Lc9CX6MHc0RHaiojIsJye.png)
ftp模式分為主動模式(active mode)和被動模式(passive mode),ftp是tcp連接配接,是以要進行三次握手。
@See
在指令行輸入vim /etc/vsftpd/vsftpd.conf:
active mode:
passive mode:
在linux上,如果不配置pasv_enable=NO,預設是passive模式。(以前在鎮江農商行,遇到檔案傳輸過不去的問題,後來才發現為被動模式,但配置的為NO,改成YES即可。
service vsftpd restart 重新開機ftp服務;
通過指令行連接配接ftp server:
active mode: ftp -A 192.168.180.106
active模式連接配接ftp server時一定要加 -A
passive mode: 可以直接使用 ftp 192.168.180.106
如下圖,在active模式下,要傳輸資料時,ftp client通過第23個包通過21号端口告訴server資料傳輸聯系端口43187(大于1024的任意端口),并進行listen,server端用端口20主動和client端43187建立資料傳輸通道,并傳輸資料(第30,32,34個包)。這裡是server知道了client端的資料通道監聽端口後,主動建立了資料傳輸通道,是以是主動模式。
在active模式下,資料傳輸部分(FTP-DATA類型的包),ftp-server端用的端口是20,預設情況下,FTP PORT主動模式進行資料傳輸時使用20端口,ftp-client端用的是43187端口,是上一步client發給server的資料傳輸監聽端口。
總結:active 模式
在passive模式下,如下圖的第28個包,是由client端發起PASV(passive mode)的資料傳輸通道連接配接請求,是以為被動模式。
而在passive模式的資料傳輸部分(FTP-DATA類型的包),ftp-server端用的端口是3542,這個端口是在/etc/vsftpd/vsftpd.conf檔案中passive模式下設定的端口範圍(3000-4000,可以自己設定)中任意選的一個端口,ftp-client端用的是53001端口,是大于1024的任意一個端口。
總結:
passive模式
Binary模式: 不對資料進行任何處理,适合進行可執行檔案、壓縮檔案、圖檔等。
ASCII模式:進行文本傳輸時,自動适應目标作業系統的結束符,如回車符等
LINUX的紅帽發行版中VSFTP預設采用的是Binary模式,這樣能保證絕大多數檔案傳輸後能正常使用
切換方式:
FTP的使用可以使用?查詢所有指令
注:關閉防火牆和SELINUX
注:在用戶端登入後,預設情況下可以下載下傳,不能上傳
FTP伺服器端
FTP用戶端
實作上傳
實作建立目錄和檔案其他操作
實作檔案下載下傳
建立的使用者,不需要登入作業系統,僅用來登入VSFTP
建立的時候,如果想限制使用者的家目錄,可以這樣建立
将所有的使用者禁锢在自己的家目錄下(即不能随意切換路徑)
将部分使用者禁锢在自己的家目錄下
注:白名單使用的前提,要把chroot_local_user=YES開啟,測了幾遍發現這個問題
配置檔案:/etc/vsftpd/ftpusers
所有寫入此檔案内的使用者名都不允許登入ftp,立即生效
修改被動模式資料傳輸使用端口
注:做虛拟使用者配置檔案設定時,将主配置檔案中的自定義的匿名使用者相關設定注釋掉
給3個配置檔案賦予權限
接下來