Linux虛擬機安裝FTP

文章目錄

  • 深入理解FTP:從原理到實戰配置(以VSFTP為例)
    • 一、FTP基礎:你需要知道的核心概念
      • 1.1 什么是FTP?
      • 1.2 FTP的“雙端口”機制
      • 1.3 為什么選擇VSFTP?
    • 二、FTP的兩種工作模式:主動與被動
      • 2.1 主動模式(Active Mode)
      • 2.2 被動模式(Passive Mode)
      • 2.3 兩種模式的適用場景
    • 三、實戰:搭建與配置VSFTP服務
      • 3.1 安裝前的準備
      • 3.2 安裝并啟動VSFTP
    • 四、配置案例:從匿名訪問到用戶登錄
      • 4.1 案例1:匿名用戶訪問(適合公開文件共享)
        • 步驟1:修改配置文件
        • 步驟2:設置目錄權限
        • 步驟3:重啟服務并測試
      • 4.2 案例2:本地用戶登錄(適合私有文件管理)
        • 步驟1:創建本地用戶
        • 步驟2:修改配置文件
        • 步驟3:客戶端測試
      • 4.3 進階:用戶訪問控制(黑白名單)
        • 核心參數說明:
        • 案例:設置白名單(僅允許zhangsan登錄)
    • 五、ftp實用指令拓展
      • 5.1 查看與導航相關命令
      • 5.2 文件傳輸控制命令
      • 5.3 會話管理命令
      • 5.4 其他實用命令
      • 5.5 總結
    • 六、總結與注意事項

深入理解FTP:從原理到實戰配置(以VSFTP為例)

在網絡通信中,文件傳輸是最基礎也最頻繁的需求之一。無論是網站部署、數據備份還是日常文件共享,都離不開高效可靠的文件傳輸協議。FTP(File Transfer Protocol,文件傳輸協議) 作為其中的經典方案,至今仍在廣泛使用。本文將從FTP的核心原理講起,詳解其工作模式,并以主流的VSFTP服務為例,手把手教你搭建和配置FTP服務,包括匿名訪問、用戶登錄及黑白名單控制。

一、FTP基礎:你需要知道的核心概念

1.1 什么是FTP?

FTP是一種基于C/S架構(客戶端/服務器) 的應用層協議,專門用于實現網絡中兩臺計算機之間的文件傳輸。它依賴TCP協議提供可靠的連接(面向連接、差錯控制),確保文件傳輸的完整性。

簡單來說,要使用FTP實現文件傳輸,需要兩端配合:

  • 服務端:運行FTP服務軟件(如VSFTP),等待客戶端連接;
  • 客戶端:通過FTP客戶端工具(如命令提示符、FileZilla)發起連接,發送傳輸請求。

1.2 FTP的“雙端口”機制

FTP協議通過兩個端口與客戶端通信,分工明確:

  • 21端口(控制端口):用于傳輸控制命令(如登錄、上傳、下載、切換目錄等),是客戶端與服務端“溝通”的通道;
  • 20端口(數據端口):專門用于傳輸文件數據(如文本、圖片、壓縮包等),是實際“搬運”文件的通道。

注意:20端口僅在主動模式下作為數據端口,被動模式下數據端口為隨機端口。

1.3 為什么選擇VSFTP?

在Linux系統中,FTP服務軟件有多種,而VSFTP(Very Secure FTP) 是最受歡迎的一款,原因在于:

  • 安全性高:默認禁用匿名用戶的危險操作,限制特權用戶登錄,減少安全風險;
  • 性能穩定:支持大并發連接,適用于生產環境;
  • 配置靈活:可通過簡單的配置文件實現匿名訪問、用戶隔離、權限控制等功能。

二、FTP的兩種工作模式:主動與被動

FTP的文件傳輸依賴“控制通道”和“數據通道”兩個連接,其中數據通道的建立方式決定了其工作模式——主動模式被動模式。兩種模式的核心區別在于:數據通道由誰主動發起建立。

2.1 主動模式(Active Mode)

以FTP服務端為參照,主動模式是“服務端主動發起數據連接”,流程如下:

  1. 客戶端通過TCP 21端口與服務端建立控制通道,發送登錄信息(用戶名、密碼);
  2. 客戶端隨機開放一個1024以上的端口(如1030),并通過控制通道發送PORT命令,告知服務端:“我用1030端口接收數據”;
  3. 服務端收到命令后,通過自身的20端口主動連接客戶端的1030端口,建立數據通道,開始傳輸文件。

類比:你(客戶端)打電話(控制通道)給快遞站(服務端)說“我在家(1030端口),快來送快遞(數據)”,快遞員(服務端)主動上門(發起連接)。

2.2 被動模式(Passive Mode)

與主動模式相反,被動模式是“服務端被動等待數據連接”,流程如下:

  1. 客戶端同樣通過21端口與服務端建立控制通道,完成登錄;
  2. 客戶端發送PASV命令,告知服務端:“我用被動模式,你開個端口等我連接”;
  3. 服務端隨機開放一個1024-5000之間的端口(如2000),并通過控制通道告知客戶端:“我在2000端口等你”;
  4. 客戶端收到后,主動連接服務端的2000端口,建立數據通道,傳輸文件。

類比:你打電話給快遞站說“我不方便出門,你開個窗口(2000端口)等我,我自己過去取”,快遞站被動等待你上門。

2.3 兩種模式的適用場景

  • 主動模式:適用于客戶端網絡環境簡單(如無防火墻限制)的場景,服務端主動連接客戶端,對客戶端端口開放要求低;
  • 被動模式:適用于客戶端有防火墻或NAT(網絡地址轉換)的場景(如家庭網絡),客戶端主動連接服務端,避免被防火墻攔截。

三、實戰:搭建與配置VSFTP服務

下面以Linux系統(CentOS為例)為例,詳解VSFTP的安裝、配置及測試過程。

3.1 安裝前的準備

為避免防火墻或安全策略阻止FTP連接,先做基礎環境配置(生產環境需按需開放端口,而非直接關閉):

# 關閉防火墻(臨時操作,生產環境建議開放20、21端口)
systemctl stop firewalld
systemctl disable firewalld# 關閉SELinux(增強型安全功能,臨時關閉)
setenforce 0

3.2 安裝并啟動VSFTP

# 檢查是否已安裝VSFTP
rpm -q vsftpd  # 無輸出則未安裝# 安裝VSFTP
yum install -y vsftpd# 啟動服務并設置開機自啟
systemctl start vsftpd
systemctl enable vsftpd# 確認服務狀態(出現"active (running)"即為正常)
systemctl status vsftpd

VSFTP的核心配置文件為/etc/vsftpd/vsftpd.conf,建議修改前先備份:

cd /etc/vsftpd/
cp vsftpd.conf vsftpd.conf.bak  # 備份配置文件

四、配置案例:從匿名訪問到用戶登錄

4.1 案例1:匿名用戶訪問(適合公開文件共享)

匿名訪問允許用戶無需賬號密碼即可登錄FTP,適合共享公開文件(如軟件安裝包、文檔)。配置步驟如下:

步驟1:修改配置文件
vim /etc/vsftpd/vsftpd.conf  # 編輯配置文件

關鍵參數設置(按需求調整):

anonymous_enable=YES  # 開啟匿名訪問(默認已開啟)
write_enable=YES      # 允許寫操作(上傳需開啟,默認已開啟)
anon_umask=022        # 匿名上傳文件的權限掩碼(022表示權限為755)
anon_upload_enable=YES  # 允許匿名上傳文件(默認注釋,需取消注釋)
anon_mkdir_write_enable=YES  # 允許匿名創建目錄(默認注釋,需取消注釋)
anon_other_write_enable=YES  # 允許匿名刪除/重命名文件(需手動添加)

保存退出(:wq)。

步驟2:設置目錄權限

匿名用戶的默認根目錄為/var/ftp/,需開放pub子目錄的寫入權限(匿名用戶默認只能操作此目錄):

chmod 777 /var/ftp/pub/  # 賦予最大權限,允許上傳/創建
步驟3:重啟服務并測試
systemctl restart vsftpd  # 重啟服務使配置生效

客戶端測試(以Windows命令提示符為例)

# 打開cmd,連接FTP服務端(替換為你的服務端IP)
ftp 192.168.10.22# 登錄:用戶名輸入ftp,密碼直接回車(匿名用戶無需密碼)
Connected to 192.168.10.22.
220 (vsFTPd 3.0.2)
User (192.168.10.22:(none)): ftp
331 Please specify the password.
Password:  # 直接回車
230 Login successful.# 測試操作
ftp> pwd  # 查看當前目錄(應顯示"/var/ftp")
257 "/var/ftp"
ftp> cd pub  # 切換到pub目錄(匿名用戶默認操作目錄)
250 Directory successfully changed.
ftp> put test.txt  # 上傳本地test.txt文件到pub目錄
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete.
ftp> get test.txt  # 下載pub目錄的test.txt到本地
ftp> quit  # 退出登錄

4.2 案例2:本地用戶登錄(適合私有文件管理)

本地用戶登錄指使用Linux系統中已存在的用戶(如zhangsan)登錄FTP,默認根目錄為用戶的家目錄(如/home/zhangsan),適合個人或團隊內部的私有文件管理。

步驟1:創建本地用戶
useradd zhangsan  # 創建用戶zhangsan
passwd zhangsan   # 設置密碼(輸入兩次)
步驟2:修改配置文件
vim /etc/vsftpd/vsftpd.conf

關鍵參數設置:

anonymous_enable=NO  # 關閉匿名訪問
local_enable=YES     # 啟用本地用戶登錄(默認已開啟)
write_enable=YES     # 允許寫操作(上傳/修改文件)
local_umask=077      # 本地用戶上傳文件的權限掩碼(077表示權限為700,僅自己可見)
chroot_local_user=YES  # 限制用戶只能訪問自己的家目錄(禁止切換到其他目錄)
allow_writeable_chroot=YES  # 允許被限制的家目錄有寫權限(避免登錄失敗)

保存退出后重啟服務:systemctl restart vsftpd

步驟3:客戶端測試
# Windows cmd中連接
ftp 192.168.10.22# 輸入用戶名xionger和密碼(創建用戶時設置的密碼)
User (192.168.10.22:(none)): xionger
331 Please specify the password.
Password:  # 輸入密碼
230 Login successful.# 測試:上傳文件到自己的家目錄
ftp> put private.doc  # 上傳本地文件
ftp> ls  # 查看家目錄文件

在這里插入圖片描述

4.3 進階:用戶訪問控制(黑白名單)

通過/etc/vsftpd/user_list文件,可設置允許或禁止特定用戶登錄FTP,實現“黑白名單”控制。

核心參數說明:
  • userlist_enable=YES:啟用user_list文件(默認開啟);
  • userlist_deny=YES:默認值,此時user_list為黑名單(禁止列表中的用戶登錄);
  • userlist_deny=NO:此時user_list為白名單(僅允許列表中的用戶登錄)。
案例:設置白名單(僅允許zhangsan登錄)
  1. 編輯user_list文件,添加允許的用戶:
vim /etc/vsftpd/user_list
# 在文件末尾添加
xionger
  1. 修改配置文件,啟用白名單:
vim /etc/vsftpd/vsftpd.conf
# 添加或修改參數
userlist_enable=YES
userlist_deny=NO  # 設為白名單

在這里插入圖片描述

在這里插入圖片描述

  1. 重啟服務:systemctl restart vsftpd

此時,只有xionger能登錄FTP,其他用戶(即使是本地用戶)會被拒絕。
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

五、ftp實用指令拓展

除了上述常用的FTP客戶端命令外,還有一些實用命令可以幫助更高效地管理文件傳輸和會話,以下是擴展補充:

5.1 查看與導航相關命令

  • pwd:顯示當前遠程服務器上的工作目錄路徑。
    示例:ftp> pwd → 輸出 257 "/var/ftp/pub"(表示當前在遠程的/var/ftp/pub目錄)。

  • ls:列出遠程當前目錄下的文件和目錄。

    • 常用選項:ls -l 可顯示詳細信息(權限、大小、修改時間等)。
      示例:ftp> ls -l → 列出遠程目錄的詳細文件列表。
  • dir:功能類似ls -l,以詳細格式列出遠程目錄內容(部分客戶端支持)。
    示例:ftp> dir → 等同于ls -l的效果。

  • !:在不退出FTP會話的情況下,執行本地系統命令。
    示例:ftp> !ls → 列出本地當前目錄的文件;ftp> !pwd → 顯示本地當前目錄路徑。

5.2 文件傳輸控制命令

  • binary:設置文件傳輸模式為二進制模式(適用于圖片、壓縮包、可執行文件等非文本文件)。
    示例:ftp> binary → 切換后傳輸非文本文件更可靠,避免格式損壞。

  • ascii:設置文件傳輸模式為ASCII模式(適用于純文本文件,如.txt.html)。
    示例:ftp> ascii → 確保文本文件在不同系統間(如Linux和Windows)換行符正確轉換。

  • prompt:開啟/關閉批量操作時的交互提示。

    • 默認開啟:執行mput/mget時,每個文件都會詢問是否傳輸。
    • 關閉提示:ftp> prompt off → 批量操作時直接執行,無需逐個確認(適合大量文件傳輸)。
  • hash:顯示文件傳輸的進度(以#符號表示,每傳輸一定大小的數據包顯示一個#)。
    示例:ftp> hash → 開啟后,上傳/下載時會看到類似 ########## 的進度標識。

5.3 會話管理命令

  • open:在FTP客戶端中重新連接到另一個FTP服務器。
    示例:ftp> open 192.168.10.33 → 連接到IP為192.168.10.33的FTP服務器。

  • user:在當前會話中切換登錄用戶(需重新輸入用戶名和密碼)。
    示例:ftp> user bob → 切換為bob用戶登錄,隨后輸入密碼即可。

  • status:查看當前FTP會話的狀態信息,包括傳輸模式(binary/ascii)、是否開啟提示、當前連接的服務器等。
    示例:ftp> status → 輸出當前會話的詳細配置。

  • bye:與quit功能相同,結束FTP會話并退出客戶端。
    示例:ftp> bye → 斷開連接并退出。

5.4 其他實用命令

  • rename:重命名遠程服務器上的文件或目錄。
    格式:rename <原名稱> <新名稱>
    示例:ftp> rename old.txt new.txt → 將遠程的old.txt改名為new.txt

  • size:查看遠程文件的大小(單位為字節)。
    格式:size <遠程文件名>
    示例:ftp> size data.zip → 輸出 215 1024000(表示文件大小為1024000字節)。

  • help:查看FTP客戶端支持的所有命令列表,或某個命令的詳細說明。
    示例:ftp> help → 列出所有命令;ftp> help put → 查看put命令的用法。

5.5 總結

FTP客戶端命令可分為導航管理cdlspwd)、文件操作putgetdelete)、傳輸控制binaryprompt)和會話管理openuser)四大類。靈活運用這些命令,能大幅提升文件傳輸的效率,尤其是批量操作和模式切換命令(如binaryprompt off)在實際工作中非常實用。

六、總結與注意事項

FTP作為經典的文件傳輸協議,憑借簡單、可靠的特點,至今仍是許多場景的首選。本文通過VSFTP實例,講解了從原理到配置的全流程,核心要點包括:

  • FTP依賴21(控制)和20(數據)端口,分主動/被動兩種工作模式;
  • 匿名訪問適合公開共享,本地用戶登錄適合私有管理;
  • 通過user_list可靈活控制用戶訪問權限。

安全提示

  • 生產環境中不要直接關閉防火墻,應開放21端口及被動模式的隨機端口范圍;
  • 匿名用戶權限需嚴格限制(避免刪除/修改權限);
  • 敏感文件建議使用SFTP(基于SSH的加密傳輸)替代FTP。

希望本文能幫助你快速掌握FTP服務的搭建與配置,讓文件傳輸更高效、安全!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/96431.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/96431.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/96431.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

開源版CRM客戶關系管理系統源碼包+搭建部署教程

在數字化轉型的浪潮下&#xff0c;客戶關系管理&#xff08;CRM&#xff09;成為企業提升競爭力的關鍵工具。為滿足開發者和企業對個性化 CRM 系統的需求&#xff0c;分享一款開源版 CRM 客戶關系管理系統&#xff0c;其源碼涵蓋前臺、后臺及 Uniapp 源代碼&#xff0c;支持快速…

基于“R語言+遙感“水環境綜合評價方法技術應用——水線提取、水深提取、水溫提、水質提取、水環境遙感等

一&#xff1a;R語言1.1 R語言特點&#xff08;R語言&#xff09;1.2 安裝R&#xff08;R語言&#xff09;1.3 安裝RStudio&#xff08;R語言&#xff09;&#xff08;1&#xff09;下載地址&#xff08;2&#xff09;安裝步驟&#xff08;3&#xff09;軟件配置1.4 第一個程序…

MCP 與 Function Calling 打開真實世界的兩種“母體”方式

AI Agent的互動之言&#xff1a;當人工智能需要獲取實時信息或與外部環境進行交互時&#xff0c;它依賴于特定的技術機制來實現。本文將以通俗易懂的方式&#xff0c;深入解析MCP&#xff08;模型調用協議&#xff09;與函數調用的核心概念&#xff0c;比較二者的異同&#xff…

Ansys Motor-CAD:概述(EMag、THERM、LAB、MECH)

你好&#xff0c;在這篇博客中&#xff0c;我概述了如何使用 Ansys Motor-CAD 模型、模擬、分析和后處理結果來評估電機性能&#xff0c;并幫助您為您的應用選擇優化的電機&#xff0c;并通過電機設計選擇實現成本效益和效率。我介紹了各種可用的電機類型、可供選擇的物理模塊和…

AI + 金融領域 + 落地典型案例

目錄 一、美國銀行智能客服與風控體系 &#xff1a; 1. 推出了虛擬助手 Erica&#xff0c; 2. 構建了先進的風險評估模型&#xff0c; 二、財躍星辰與國泰海通、上海銀行合作項目&#xff1a; 1. 投教 AI 助手、投顧 AI 助手、托管 AI 助手 2. AI 手機銀行&#xff0c;對…

項目管理進階——研發項目組織管理制度

第一條 目的 為規范企業的新技術研發、技術創新工作,加強企業項目開發和技術創新能力,應用高新技術提高企業的整體市場競爭力和經濟效益,實施公司“科技興企”的重要決策,根據公司具體情況,特制定本辦法。 第二條 范圍 本辦法適用于以增強自主創新能力和促進企業高新技…

深度學習:入門簡介

深度學習&#xff08;Deep Learning, DL&#xff09;是機器學習&#xff08;Machine Learning, ML&#xff09;的一個重要分支&#xff0c;核心是通過模擬人類大腦神經元的連接方式&#xff0c;構建多層神經網絡來自動學習數據中的特征和規律&#xff0c;最終實現預測、分類、生…

switch搖桿JoyCon搖桿研究,碳膜搖桿、霍爾電磁搖桿

https://blog.csdn.net/qq_28145393/article/details/125769568 https://zhuanlan.zhihu.com/p/1925522678263056352 插件DIP 碳膜搖桿 6腳&#xff0c;內部兩個滑動變阻器&#xff0c;1個按鍵。 引腳定義如下&#xff1a;1腳AD1、2腳按鍵GND、3腳按鍵、4腳AD2、5腳變阻器GND、…

保護 PDF 格式:禁止轉換為其他格式文件

在日常辦公中&#xff0c;PDF是很常見的文件格式。有時候為了方便編輯&#xff0c;我們會將PDF轉換成其他格式文件&#xff0c;比如Word、PPT等&#xff1b;但有時候出于安全考慮&#xff0c;我們又不希望PDF可以隨意轉換成其他格式文件。那如何禁止轉換格式呢&#xff1f;其實…

docker 打包

目錄 構建docker容器 使用 Dockerfile 構建自定義鏡像 構建docker容器 docker images docker pull pytorch/torchserve:latest-gpu docker imagesdocker run -d --rm --gpus all --name torchserve-dev-bg -u $(id -u):$(id -g) -v /nas:/nas pytorch/torchserve:latest /bi…

云原生俱樂部-k8s知識點歸納(7)

計劃是再更兩篇就完結k8s系列&#xff0c;其中CRD客戶端資源定義會單獨列一篇&#xff0c;或許會講一講operator。不過當前的k8s并沒有細講operator&#xff0c;因為涉及到很多的go語言內容&#xff0c;以及相關的package的方法。這一部分主要就是講一講k8s如何進行監控和升級&…

c語言之進程函數

1. 進程創建#include <sys/types.h>#include <unistd.h>pid_t fork(void);fork 創建一個新進程fork() creates a new process by duplicating the calling process. The new process is referred to as the child process. The calling process is refe…

學習python第12天

今日任務&#xff1a;DataFrameDataFrame的構造pandas.DataFrame(dataNone, indexNone, columnsNone, dtypeNone, copyFalse)參數說明&#xff1a;data&#xff1a;DataFrame 的數據部分&#xff0c;可以是字典、二維數組、Series、DataFrame 或其他可轉換為 DataFrame 的對象。…

C++顯示類型轉換運算符static_cast使用指南

這是一篇關于 static_cast 用法的文章。本文會從基礎概念到常見應用場景全覆蓋&#xff0c;并附上代碼示例以方便理解。C 中的 static_cast 用法詳解 在 C 中&#xff0c;static_cast 是一種顯式類型轉換運算符&#xff0c;主要用于在編譯期進行類型安全的轉換。相比 C 風格的強…

es6常用方法來解決功能需求

前言&#xff1a;es6常用方法來解決功能需求。1、出現復雜的json字符串如何去解析&#xff1f;比如&#xff1a;下面這個字符串&#xff0c;如果用json.parse解析發現還是個字符串"\"[{\\\"orgId\\\":\\\"1054021138280960\\\",\\\"orgName…

龍虎榜——20250822

上證指數今天繼續創新高收中陽線&#xff0c;量能維持在5天均量線附近&#xff0c;目前均線多頭強勢的走勢&#xff0c;小級別也未出現反轉信號&#xff0c;上漲趨勢不要輕易看空。深證指數今天延續強勢的走勢&#xff0c;大漲收光頭光腳的陽線&#xff0c;目前均線多頭排列&am…

3維模型導入到3Dmax中的修改色彩簡單用法----第二講

目錄回顧1 補充信息*stp導出沒有顏色怎么辦&#xff1f;*2 3Dmax的使用如果顏色丟失了怎么辦呢&#xff1f;怎么實現一零件上多個色彩呢&#xff1f;怎么將零件綁到一起呢&#xff1f;怎么將三角形的面變成光滑曲面呢&#xff1f;回顧 上一講&#xff0c;我們簡單的說了一下&a…

智慧農業新基建:邊緣計算網關在精準農業中的落地實踐案例

智慧農業新基建&#xff1a;邊緣計算網關在精準農業中的落地實踐案例傳統農業生產中&#xff0c;水肥管理依賴經驗判斷&#xff0c;往往造成資源浪費和產量不穩定&#xff1b;同時&#xff0c;惡劣的自然環境也給農業生產帶來諸多挑戰。而藍蜂邊緣計算網關在精準農業中的應用&a…

llm操控solidworks 畫立方體 deepseek

deepseek接入solidowrks畫立方體用eval方法鏈接llm和solidworks pythonwin32接口 離好的效果還差一個有腦子會生成復雜命令序列的ai 參考 基于Python的Solidworks二次開發方法_selectbyray-CSDN博客 Welcome - 2025 - SOLIDWORKS API Help 倉庫 llm_sw: llm鏈接solidworks…

MySQL事務及原理詳解

MySQL 事務 事務是一組不可分割的操作集合&#xff0c;這些操作要么同時成功提交&#xff0c;要么同時失敗回滾。 acid事物的四大特性 原子性 最小工作單元&#xff0c;要么同時成功&#xff0c;要么同時失敗。 例如A轉賬300給B,A賬戶-300與B賬戶300必須滿足操作原子性&#xf…