文章目錄
- 前言
- 一、FTP服務概述
- 1.1 FTP基本定義
- 1.2 VSFTP模式分類
- 1.3 FTP端口作用
- 二、FTP作用與工作原理(重點)
- 2.1 FTP的作用、模式及通信方式
- 2.1.1 FTP核心作用
- 2.1.2 VSFTP模式與通信協議
- 2.2 FTP工作原理與流程
- 2.2.1 主動模式工作原理
- 2.2.2 被動模式工作原理
- 2.3 FTP相關擴展知識
- 2.3.1 不同操作系統的FTP服務軟件
- 2.3.2 類似文件傳輸協議
- 三、FTP服務搭建與配置
- 3.1 安裝前準備工作
- 3.1.1 關閉防火墻與增強型安全功能
- 3.1.2 檢查與安裝VSFTP軟件
- 3.1.3 開啟并設置VSFTP服務自啟
- 3.1.4 切換配置目錄并備份配置文件
- 3.2 匿名用戶訪問配置與測試
- 3.2.1 匿名用戶訪問配置(最大權限)
- 3.2.2 匿名用戶訪問測試(Windows客戶端)
- 3.3 用戶模式登錄配置與測試
- 3.3.1 本地用戶訪問配置(禁錮目錄)
- 3.3.2 本地用戶登錄測試
- 3.3.3 修改默認根目錄
- 3.3.4 配置用戶列表(黑白名單)
- 四、FTP拓展命令
- 總結
前言
在互聯網數據交互與文件共享場景中,文件傳輸協議FTP
憑借其可靠的連接特性與成熟的C/S架構,成為應用廣泛的文件傳輸解決方案。
本文檔圍繞FTP
服務展開,系統梳理FTP
的核心概念、工作原理、端口作用,重點講解主流的VSFTP
服務(Very Secure FTP)在主動/被動模式下的運行機制,同時提供從服務搭建、配置文件修改到匿名用戶與本地用戶登錄測試的完整實踐流程,旨在幫助學習者全面理解FTP
服務,并具備獨立部署與配置FTP
服務的實操能力。
一、FTP服務概述
1.1 FTP基本定義
FTP
(File Transfer Protocol,文件傳輸協議)是典型的C/S(客戶端/服務器)架構應用層
協議,需由服務端軟件與客戶端軟件協同工作,實現文件傳輸功能。FTP客戶端與服務器之間的連接基于TCP協議
,屬于可靠的、面向連接的連接方式,能為數據傳輸提供穩定保障。FTP
使用21端口
: 用于傳輸指令,20端口
:用于傳輸數據。
1.2 VSFTP模式分類
VSFTP(Very Secure FTP,極安全FTP)作為主流的FTP服務實現,其數據傳輸支持兩種核心模式:主動方式(Standard/Active模式)和被動方式(Passive/PASV模式)
- 主動模式
- 服務器從20端口出來連接客戶端的指定端口
- 注意:客戶端的防火墻很容易去拒絕服務端外來連接,可能會導致失敗
- 被動模式
- 服務器被動打開一個隨機高位端口(1024~5000),等待客戶端進來連接
- 優勢: 避免了客戶端的防護墻的問題,但是這里要服務器配置好放行隨機端口的防火墻的規則
主動模式
:服務器主動發起數據連接
被動模式
:服務器被動等待數據連接
1.3 FTP端口作用
FTP服務依賴TCP協議的兩個固定端口實現不同功能,具體作用如下:
- 21端口:專用端口,用于建立控制連接,傳輸FTP控制指令(如登錄命令、文件操作指令等)。
- 20端口:專用端口,僅在主動模式下用于建立數據連接,傳輸文件數據(如文件內容、目錄列表等);被動模式下數據傳輸端口為服務器隨機開放的1024-5000之間的端口。
二、FTP作用與工作原理(重點)
2.1 FTP的作用、模式及通信方式
2.1.1 FTP核心作用
FTP是Internet中用于實現文件傳輸的標準協議,可支持不同操作系統(如Windows、Linux)之間的文件上傳、下載、刪除、重命名等操作,廣泛應用于網站文件更新、數據備份、資源共享等場景。
2.1.2 VSFTP模式與通信協議
- 運行模式:VSFTP遵循C/S(客戶端/服務器)模式,需服務端部署VSFTP軟件并啟動服務,客戶端通過FTP客戶端工具(如Windows命令提示符、FileZilla等)發起連接請求。
- 通信協議:FTP服務器默認使用TCP協議與客戶端通信,核心依賴20(主動模式數據傳輸)、21(控制連接)兩個端口,確保指令傳輸與數據傳輸的可靠性。
2.2 FTP工作原理與流程
FTP會話始終包含兩個獨立通道:控制通道與數據傳輸通道,兩種模式(主動、被動)的核心區別在于數據傳輸通道的建立方式,均以FTP Server為參照判斷“主動/被動”——服務器主動發起數據連接為主動模式,服務器被動等待數據連接為被動模式
。
2.2.1 主動模式工作原理
1、客戶端發送FTP請求(包含用戶名、密碼、連接模式命令PORT和自己開放的用于自身接收數據的端口)
2、FTP服務器進行響應(ACK),服務器21號端口和客戶高位端口1進行FTP會話連接。
3、FTP服務器從自己的20
端口連接客戶端發送連接請求時主動發送的端口。
4、最后客戶端發送ACK確認,開始數據傳輸。
2.2.2 被動模式工作原理
1、客戶端發送FTP連接請求(包含用戶、密碼、連接模式命令PASV)
2、FTP服務器響應(ACK),服務器21號端口和客戶端(高位端口)建立FTP連接,這個響應過程會告訴客戶端,服務器開放一個高位端口等你來連接
3、客戶端從自己的一個高位端口連接服務器響應的高位端口
4、服務器給客戶端一個ACK響應,接下來進行數據傳輸過程。
2.3 FTP相關擴展知識
2.3.1 不同操作系統的FTP服務軟件
- Windows系統:常用FTP服務軟件包括Serv-U、FTP Server、FileZilla Server等,操作界面友好,適合圖形化管理需求。
- Linux系統:主流FTP服務軟件有ProFTPD,而Very Secure FTP(vsftp) 因安全性高、穩定性強,是實際工作環境中最常用的FTP服務軟件。
2.3.2 類似文件傳輸協議
- TFTP(Trivial File Transfer Protocol,簡單文件傳輸協議):基于UDP協議,使用69號端口,功能簡單,僅支持文件上傳與下載,適用于小型嵌入式設備或簡單數據傳輸場景。
- SFTP(SSH File Transfer Protocol,SSH文件傳輸協議):基于SSH(Secure Shell)協議,通過加密通道傳輸文件,安全性遠高于FTP,適合對數據傳輸安全性要求較高的場景。
三、FTP服務搭建與配置
3.1 安裝前準備工作
3.1.1 關閉防火墻與增強型安全功能
為避免防火墻及系統增強型安全功能阻止FTP服務的端口通信,需先執行以下命令關閉相關功能:
systemctl stop firewalld # 臨時關閉防火墻服務。
systemctl disable firewalld # 設置開機自動關閉防火墻,確保后續重啟系統后防火墻不會影響FTP服務。
setenforce 0 # 臨時關閉系統增強型安全功能(SELinux),消除權限限制對FTP服務的影響。
3.1.2 檢查與安裝VSFTP軟件
- 檢查系統是否已安裝VSFTP軟件,執行以下任一命令:
yum info vsftpd # 通過yum包管理器查看vsftpd軟件的詳細信息,包括是否已安裝、版本號等。
rpm -q | grep vsftp # 通過rpm命令查詢系統中是否存在與vsftp相關的安裝包。
2. 若未安裝VSFTP軟件,執行yum install -y vsftpd
命令,通過yum包管理器自動安裝vsftpd及相關依賴包。
yum install -y vsftpd
3.1.3 開啟并設置VSFTP服務自啟
- 啟動VSFTP服務:執行
systemctl start vsftpd
命令,啟動FTP服務。 - 設置開機自啟:執行
systemctl enable vsftpd
命令,配置VSFTP服務在系統開機時自動啟動,避免每次重啟后手動啟動服務。
systemctl start vsftpd
systemctl enable vsftpd #開機自啟FTP服務
3.1.4 切換配置目錄并備份配置文件
- 切換到VSFTP服務的配置文件目錄:執行
cd /etc/vsftpd/
命令,進入該目錄(vsftpd的核心配置文件均存放于此)。 - 備份配置文件:執行
cp vsftpd.conf vsftpd.conf.bak
命令,將默認配置文件vsftpd.conf
備份為vsftpd.conf.bak
,防止后續配置修改出錯后無法恢復默認設置。
cd /etc/vsftpd/
cp vsftpd.conf vsftpd.conf.bak
3.2 匿名用戶訪問配置與測試
3.2.1 匿名用戶訪問配置(最大權限)
通過修改VSFTP主配置文件,開啟匿名用戶訪問并賦予最大操作權限,具體步驟如下:
- 編輯配置文件:執行
vim /etc/vsftpd/vsftpd.conf
命令,打開主配置文件。 - 調整配置參數(按需求修改或添加以下參數):
anonymous_enable=YES
:開啟匿名用戶訪問功能,默認已開啟。write_enable=YES
:開放服務器的寫權限,若需實現文件上傳,必須開啟此參數,默認已開啟。anon_umask=022
:設置匿名用戶上傳文件的權限掩碼(反掩碼),通過該參數控制上傳文件的默認權限(如022對應文件權限為644,目錄權限為755)。anon_upload_enable=YES
:允許匿名用戶上傳文件,默認配置文件中該參數被注釋,需取消注釋啟用。anon_mkdir_write_enable=YES
:允許匿名用戶創建(上傳)目錄,默認配置文件中該參數被注釋,需取消注釋啟用。anon_other_write_enable=YES
:允許匿名用戶執行刪除、重命名、覆蓋文件等操作,默認配置文件中無此參數,需手動添加。
- 重啟vsftp服務
systemctl restart vsftp
- 設置目錄權限:執行
chmod 777 /var/ftp/pub/
命令,為匿名用戶訪問FTP的根目錄(/var/ftp/
)下的pub
子目錄設置最大權限(777),確保匿名用戶可正常上傳數據到該目錄。
3.2.2 匿名用戶訪問測試(Windows客戶端)
在Windows系統中通過命令提示符測試匿名用戶登錄FTP服務,具體步驟如下:
- 打開命令提示符:點擊Windows開始菜單,輸入“cmd”并回車,打開命令提示符窗口。
- 建立FTP連接:執行
ftp 192.168.10.110
命令(其中192.168.10.110
為FTP服務器的IP地址),發起與FTP服務器的連接。
ftp 192.168.10.110
- 匿名登錄:連接請求發送后,系統提示輸入用戶名,輸入“ftp”(匿名用戶默認用戶名),密碼為空(直接回車),即可完成匿名登錄。
- 執行FTP操作(登錄后在
ftp>
提示符后輸入以下命令):
pwd
:查看當前匿名用戶在FTP服務器中的根目錄(默認對應Linux系統的/var/ftp/
目錄)。
ls
:查看當前目錄下的文件與目錄列表。
-
cd pub
:切換到pub
子目錄(匿名用戶上傳文件的指定目錄)。 -
get 文件名
:將FTP服務器中指定的文件下載到當前Windows客戶端的本地目錄(需替換“文件名”為實際文件名)。
文件被下載到C:\Users\用戶名下
put 文件名
:將Windows客戶端本地目錄中的指定文件上傳到FTP服務器的當前目錄(需替換“文件名”為實際文件名)。
將windows_file.txt上傳到FTP服務器的當前目錄
quit
:退出FTP連接,關閉命令提示符窗口即可結束操作。
3.3 用戶模式登錄配置與測試
3.3.1 本地用戶訪問配置(禁錮目錄)
設置本地用戶(Linux系統中的系統用戶)驗證登錄FTP,并將用戶禁錮在其宿主目錄中(禁止切換到FTP目錄以外的系統目錄),具體步驟如下:
- 編輯配置文件:執行
vim /etc/vsftpd/vsftpd.conf
命令,打開主配置文件。 - 調整配置參數(按需求修改或注釋以下參數):
local_enable=Yes
:啟用本地用戶登錄功能(本地用戶即Linux系統中的系統用戶)。anonymous_enable=NO
:關閉匿名用戶訪問,僅允許本地用戶登錄。write_enable=YES
:開放服務器的寫權限,若需本地用戶上傳文件,必須開啟此參數。local_umask=077
:設置本地用戶上傳文件的權限掩碼(反掩碼),077對應文件權限為600、目錄權限為700,僅允許文件宿主用戶(即上傳用戶)擁有讀寫權限。chroot_local_user=YES
:將本地用戶的訪問范圍禁錮在其宿主目錄中(默認宿主目錄為/home/用戶名
),禁止用戶切換到其他系統目錄。allow_writeable_chroot=YES
:允許被禁錮的用戶宿主目錄擁有寫權限,避免因目錄權限不足導致登錄失敗。- 注釋匿名用戶相關權限參數:將
anon_mkdir_write_enable=YES
、anon_other_write_enable=YES
兩行參數注釋(在參數前添加“#”),因已關閉匿名用戶訪問,無需保留匿名用戶權限配置。
- 重啟VSFTP服務:執行
systemctl restart vsftpd
命令,重啟服務使新的配置生效。
3.3.2 本地用戶登錄測試
- 命令提示符登錄:打開Windows命令提示符,執行
ftp 192.168.10.110
命令(192.168.10.110
為FTP服務器IP地址),按提示輸入Linux系統中的本地用戶名(如后續創建的zhangsan)和密碼,完成登錄。
ftp 192.168.10.110
- 圖形化界面登錄:打開windows文件夾,在地址欄輸入
ftp://zhangsan@192.168.10.110
(“zhangsan”為本地用戶名,“192.168.10.110”為服務器IP),按提示輸入密碼即可登錄。
- 等待文件上傳
- 查看服務器,看是否上傳成功
3.3.3 修改默認根目錄
通過配置文件修改匿名用戶與本地用戶登錄FTP后的默認根目錄:
- 匿名用戶根目錄:在
vsftpd.conf
文件中添加anon_root=/var/www/html
參數,設置匿名用戶登錄后的默認根目錄為/var/www/html
(需確保該目錄存在且權限合適)。 - 本地用戶根目錄:在
vsftpd.conf
文件中添加local_root=/var/www/html
參數,設置本地用戶登錄后的默認根目錄為/var/www/html
。
chmod 777 /var/www/html # 修改目錄權限
修改后需執行systemctl restart vsftpd
命令重啟服務,使配置生效。
測試一下默認目錄修改是否成功
put windows_file.txt
ls /var/www/html
3.3.4 配置用戶列表(黑白名單)
通過user_list
文件設置FTP登錄的用戶黑白名單,具體步驟如下:
- 編輯用戶列表文件:執行
vim /etc/vsftpd/user_list
命令,打開用戶列表文件,在文件末尾添加需管理的用戶(如zhangsan
),每個用戶占一行。
2. 配置用戶列表功能:執行vim /etc/vsftpd/vsftpd.conf
命令,添加或修改以下參數:
userlist_enable=YES
:啟用user_list
用戶列表文件,使列表生效。userlist_deny=NO
:將user_list
設置為白名單,僅允許列表中的用戶(如zhangsan)登錄FTP;默認值為YES
,此時user_list
為黑名單,禁止列表中的用戶登錄。
- 重啟服務:執行
systemctl restart vsftpd
命令,重啟服務使配置生效。
- 僅修改**/etc/vsftpd/user_list**,userlist_deny=YES,此時zhangsan被添加進黑名單,zhangsan無法登錄
- userlist_deny=NO,將
user_list
設置為白名單,僅允許列表中的用戶(如zhangsan)登錄FTP,例如lisi用戶無法登錄FTP服務器。
四、FTP拓展命令
擴展FTP client的命令:
- cd:改變遠程工作目錄,格式為cd <遠程目錄路徑>。
- lcd:改變本地工作目錄,格式為lcd <本地目錄路徑>。
- put:將本地文件上傳到遠程服務器,格式為put <本地文件路徑+文件名>。
- get:從遠程服務器下載文件到本地,格式為get <遠程文件路徑+文件名>。
- mput:批量上傳多個文件到遠程服務器,格式為mput <文件名稱1> <文件名稱2>…。
批量上傳成功
- mget:批量下載多個遠程文件至本地,格式為mget <文件名稱1> <文件名稱2>…。
- delete:刪除遠程單個文件,格式為delete <遠程文件名>。
- mkdir:創建一個遠程目錄,格式為mkdir <遠程目錄名>。
- rmdir:刪除遠程目錄,格式為rmdir <遠程目錄名>。
總結
本文檔詳細講解了FTP服務的核心知識與實操內容,從FTP的基本定義、VSFTP的兩種傳輸模式(主動/被動)、端口作用,到FTP的工作原理(控制通道與數據通道的建立邏輯),再到Linux系統中VSFTP服務的完整搭建流程(包括防火墻關閉、軟件安裝、配置文件修改、用戶權限設置等),并提供了匿名用戶與本地用戶的登錄測試步驟及用戶黑白名單配置方法。
通過學習本文檔,學習者可清晰理解FTP服務的運行機制,掌握VSFTP服務的部署與配置技巧,能夠根據實際需求(如匿名共享、本地用戶專屬訪問、權限控制等)靈活調整FTP服務參數,滿足不同場景下的文件傳輸需求。同時,文檔中對TFTP、SFTP等類似協議的介紹,也為學習者拓展文件傳輸解決方案的認知提供了參考,助力學習者在實際工作中選擇更合適的文件傳輸方式。