Linux中FTP配置與vsftpd服務部署指南

Linux中FTP配置與vsftpd服務部署指南

一、FTP 核心概念

1、基本定義
  • 文件傳輸協議(FTP),基于 C/S模式 工作。
  • 控制端口21(身份驗證與指令傳輸)
    數據端口20(主動模式數據傳輸)
2、工作模式對比
  1. 主動模式(standard)
    • 客戶端從一個隨機非特權端口N(>1024)連接到服務器的控制端口(21)
      • 其中Prot命令包含了客戶端的IP地址和數據端口(N+1)
    • 服務器收到這條PORT命令,從它的數據端口(20)主動發起連接到客戶端指定的IP地址和端口(N+1)
    • 需要服務端與客戶端重新建立一個新的連接來傳輸數據
  2. 被動模式(passive)
    • 客戶端從一個隨機非特權端口N(>1024)連接到服務器的控制端口(21)
      • 其中Pasv命令包含了客戶端的數據端口(N+1)
    • 此時服務端會隨機生成一個高端端口P(P>1024),并發送PORT命令給客戶端(使用控制端口)
      • 其中Prot命令包含了服務端的IP地址和數據端口P
    • 客戶端從數據端口N+1發起一個請求連接服務端數據端口P,這時產生了數據連接
    • 不需要服務端與客戶端重新建立一個新的連接來傳輸數據
模式連接發起方端口使用相同點
主動模式服務端 → 客戶端服務端數據端口20 → 客戶端高端口N+1服務端控制端口為21
被動模式客戶端 → 服務端客戶端高端口N+1 → 服務端隨機高端口p服務端控制端口為21

二、FTP服務器主配置文件參數

參數默認值功能說明注意事項
anonymous_enableNO控制匿名用戶訪問權限YES表示允許匿名訪問FTP服務器
local_enableYES控制FTP用戶是否可以訪問FTP服務器SELinux啟用時需注意調整ftp_home_dir的bool值(RHEL7+ 無需配置)
write_enableYES控制FTP用戶對FTP服務器的可寫權限必須啟用后,其他寫操作參數才生效
local_umask022FTP用戶創建目錄或文件時的umask值創建目錄權限 755,文件權限 644
anon_upload_enable注釋控制匿名用戶上傳文件的權限SELinux啟用時需注意調整 ftpd_anon_writeftpd_full_access 的bool值
anon_mkdir_write_enable注釋控制匿名用戶創建目錄的權限需同時啟用 write_enable=YES
anon_other_write_enable允許匿名用戶重命名/刪除文件高風險操作,謹慎啟用
dirmessage_enableYES顯示說明性文件用戶進入目錄時自動顯示
xferlog_enableYES控制文件在傳輸過程中是否被日志記錄日志默認位置:/var/log/xferlog
connect_from_port_20YES強制使用20端口進行數據傳輸僅主動模式生效
chown_uploads注釋默認匿名用戶上傳文件的所有者為FTP需配合 chown_username 使用
chown_username注釋匿名用戶上傳文件的所有者將變成該FTP用戶例:chown_username=whoever
xferlog_file注釋設置FTP服務日志文件位置例:xferlog_file=/var/log/xferlog
xferlog_std_formatYES設置標準的FTP Xferlog模式兼容 wu-ftpd 日志格式
idle_session_timeout600控制連接空閑超時(秒)超時自動斷開連接
data_connection_timeout120數據傳輸連接空閑超時(秒)超時自動斷開數據連接
nopriv_user注釋指定非特權運行用戶例:nopriv_user=ftpsecure
ftpd_banner注釋成功連接FTP服務器時的提示語例:ftpd_banner=Welcome to My FTP service
deny_email_enable注釋禁止下載文件到指定的郵箱地址中需配合 banned_email_file 使用
banned_email_file注釋設置電子郵箱地址例:banned_email_file=/etc/vsftpd/banned_emails
chroot_local_user注釋控制FTP用戶能否離開自己的FTP主目錄YES表示禁止FTP用戶離開自己的FTP主目錄
chroot_list_enable注釋控制列表中的FTP用戶能否離開自己的FTP主目錄需配合 chroot_list_file 使用
chroot_list_file注釋FTP用戶列表文件,每一行一個用戶名默認:/etc/vsftpd/chroot_list
ls_recurse_enable注釋控制FTP用戶是否能使用類似 ls -R命令默認是禁止的,YES表示允許使用
listenNO控制是否偵聽ipv4套接字listen_ipv6 互斥
listen_ipv6YES控制是否偵聽ipv6套接字啟用時兼容 IPv4 連接
pam_service_namevsftpd設置PAM認證文件的名稱默認:/etc/pam.d/vsftpd
userlist_enableYES啟用用戶列表控制需配合 /etc/vsftpd/user_list 文件
tcp_wrappersYES啟用 TCP Wrappers 主機訪問控制通過 /etc/hosts.{allow,deny} 管理
pasv_min_port被動模式最小端口號建議設置高端口范圍(例:10000)
pasv_max_port被動模式最大端口號需在防火墻放行該端口范圍(例:11000)
allow_writeable_chroot允許 chroot 環境下的可寫主目錄避免 500 錯誤(替代 chmod u-w /home/user

三、配置場景示例

服務端下載

yum -y install vsftpd

客戶端下載

yum -y install lftp
1、匿名用戶
  1. 設置允許匿名用戶訪問FTP服務器

    vim /etc/vsftpd/vsftpd.confpasv_enable=YES				# 啟用passive被動模式pasv_min_port=10000			# 開啟最低的pasv端口,建議采用大于1024的高端口pasv_max_port=11000			# 開啟最高的pasv端口systemctl restart vsftpd
    

    centos7默認允許,不用做修改;centos8修改如上

    在這里插入圖片描述

  2. 設置允許匿名用戶訪問FTP服務器時能夠在/var/ftp/pub目錄下進行文件上傳

    vim /etc/vsftpd/vsftpd.confwrite_enable=YESanon_upload_enable=YESsystemctl restart vsftpdsetfacl -m u:ftp:rwx /var/ftp/pub
    

    在這里插入圖片描述

  3. 設置允許匿名用戶訪問FTP服務器時能夠在/var/ftp/pub目錄下創建目錄

    vim /etc/vsftpd/vsftpd.confwrite_enable=YESanon_mkdir_write_enable=YESsystemctl restart vsftpdsetfacl -m u:ftp:rwx /var/ftp/pub
    

    在這里插入圖片描述

  4. 設置允許匿名用戶訪問FTP服務器時能夠對/var/ftp/pub目錄中的文件或目錄進行重命名或刪除操作

    vim /etc/vsftpd/vsftpd.confwrite_enable=YESanon_other_write_enable=YESsystemctl restart vsftpdsetfacl -m u:ftp:rwx /var/ftp/pub
    

    在這里插入圖片描述

2、FTP目錄

創建用戶

useradd ftpuser1
useradd ftpuser2
useradd ftpuser3for i in ftpuser{1..3}>do echo 123321 | passwd --stdin $i>done

在這里插入圖片描述

  1. 設置允許FTP用戶訪問FTP服務器:

    1. local_enable=YES write_enable=YES 這兩個值為默認設置

    2. 通過FTP用戶訪問FTP服務器時,默認訪問的主目錄為FTP用戶家目錄

    3. 此時FTP用戶可以在自己的家目錄下上傳文件、下載文件、創建目錄、重命名文件或者目錄、刪除文件或目錄,同時FTP用戶可以切換至其他目錄中訪問

    vim /etc/vsftpd/vsftpd.conflocal_enable=YESwrite_enable=YESsystemctl restart vsftpd
    

    在這里插入圖片描述

  2. 設置FTP用戶訪問FTP服務器時,將所有FTP用戶訪問的目錄限制在自己的主目錄中,不允許FTP用戶訪問其他目錄

    vim /etc/vsftpd/vsftpd.confchroot_local_user=YESsystemctl restart vsftpd
    

    在這里插入圖片描述

    發現提示登錄失敗

    這是因為如果用戶被限定在了其主目錄下,則該用戶的主目錄不能再具有寫權限了!

    但是用戶主目錄此時任然具有寫權限,所以提示該錯誤

    解決方法一

    chmod u-w /home/ftpuser1
    

    使用命令 chmod u-w /home/ftpuser1 去除用戶主目錄的寫權限

    可以解決問題,但不合理,不推薦使用

    在這里插入圖片描述

    解決方法二

    vim /etc/vsftpd/vsftpd.confallow_writeable_chroot=YESsystemctl restart vsftpd
    

    在這里插入圖片描述

  3. 設置FTP用戶訪問FTP服務器時,將部分FTP用戶訪問的目錄限制在自己的主目錄中,其他FTP用戶仍然可以訪問其他目錄

    vim /etc/vsftpd/vsftpd.confchroot_list_enable=YESchroot_list_file=/etc/vsftpd/chroot_listvim /home/ftpuser1chroot_listftpuser1systemctl restart vsftpd
    

    在這里插入圖片描述

    • chroot_local_enable=NO
      • chroot_list_enable=YES 代表只限制 /etc/vsftpd/chroot_list 文件中定義的FTP用戶,其他的ftp用戶不受限
      • chroot_list_enable=NO 所有的FTP用戶均不受限
  4. 設置FTP用戶訪問FTP服務器時,部分FTP用戶可以訪問其他目錄,其他FTP用戶訪問的目錄仍然限制在自己的家目錄中

    vim /etc/vsftpd/vsftpd.confchroot_local_user=YESchroot_list_enable=YESchroot_list_file=/etc/vsftpd/chroot_listvim /home/ftpuser1chroot_listftpuser1systemctl restart vsftpd
    

    在這里插入圖片描述

    • chroot_local_enable=YES
      • chroot_list_enable=YES 代表 /etc/vsftpd/chroot_list 文件中定義的FTP用戶不受限,其他的ftp用戶受限
      • chroot_list_enable=NO 代表所有的FTP用戶受限
  5. 僅允許

    vim /etc/vsftpd/vsftpd.confuserlist_deny=NOvim /etc/vsftpd/user_listftpuser1systemctl restart vsftpd
    

    在這里插入圖片描述

    /etc/vsftpd/ftpusers/etc/vsftpd/user_list 文件默認禁用這些用戶訪問ftp服務器

    userlist_deny=NO 寫入 /etc/vsftpd/vsftpd.conf

    • /etc/vsftpd/ftpusers 為黑名單
    • /etc/vsftpd/user_list 為白名單
    • 兩者名單列表沖突時,拒絕優先

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

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

相關文章

Web UI自動化測試的早期介入?

在傳統研發流程中,Web UI自動化測試常被視為“后期活動”——必須等待前端界面完全穩定才能啟動。這種滯后導致自動化測試難以覆蓋早期迭代,形成“開發等測試、測試等穩定”的惡性循環。本文將系統破解這一困局,提供一套從需求階段介入、持續…

基于學科競賽的高職計算機網絡教學解決方案

一、引言《關于深化產教融合的若干意見》明確提出 “推行面向企業真實生產環境的任務培養模式”,為我國職業教育發展指明了產教深度融合的方向。在數字經濟時代,計算機網絡技術正以前所未有的速度迭代更新,產業界對具備前沿技術應用能力和實踐…

猿大師中間件:Chrome網頁內嵌PhotoShop微信桌面應用程序

隨著桌面應用程序集成到網頁的需求不斷增長,尤其在Chrome瀏覽器缺乏原生調用EXE功能的情況下,傳統網頁內嵌解決方案面臨失效挑戰,猿大師中間件因此發展成為當前主流方案。 2025年猿大師發布了EXE、OCX、COM三個通用組件,自此猿大…

EF (Entity Framework) vs LINQ to SQL vs SqlSugar 全方位對比分析

文章目錄1. 概述與背景介紹1.1 Entity Framework (EF)1.2 LINQ to SQL1.3 SqlSugar2. 架構設計對比2.1 EF架構設計2.2 LINQ to SQL架構2.3 SqlSugar架構3. 性能對比3.1 基準測試數據3.2 性能分析3.3 內存使用4. 功能特性對比4.1 數據庫支持4.2 主要功能對比4.3 高級特性5. 開發…

MySQL 多表聯查與內外連接詳解

多表聯查是關系型數據庫的核心操作,用于從多個表中關聯數據。MySQL 支持多種連接方式,最常用的是內連接和外連接(左/右/全外連接)。一、多表聯查基礎語法 SELECT 列列表 FROM 表1 [連接類型] JOIN 表2 ON 連接條件 [連接類型] JOI…

《網絡爬蟲》

網絡爬蟲,是一種自動化程序,用于抓取互聯網上的數據。它們通過模擬瀏覽器行為,抓取網頁內容并提取有用信息。爬蟲廣泛應用于數據采集、搜索引擎索引、競爭對手分析等領域。爬蟲的工作流程:請求目標網頁:爬蟲首先發送 H…

openpnp - 頂部相機環形燈光DIY

文章目錄openpnp - 頂部相機環形燈光DIY概述筆記ENDopenpnp - 頂部相機環形燈光DIY 概述 底部相機燈光用環形燈(用鈑金折彎成一個10mm高的矩形盒子)是可以的。因為吸嘴落到Z方向和PCB平齊時,用COB燈帶裝在一個矩形盒子中正好能照射到吸嘴尖端高度附近。 頂部相機…

[AI React Web] E2B沙箱 | WebGPU | 組件樹 | 智能重構 | 架構異味檢測

第三章:E2B沙箱交互 在前兩章中,我們掌握了對話狀態管理和AI代碼生成管道的運作原理。 但生成代碼如何真正運行?這正是E2B沙箱交互的核心價值。 架構定位 E2B沙箱是專為open-lovable打造的虛擬計算環境,具備以下核心能力&…

Redis寶典

Redis是什么 Redis是開源的,使用C語言編寫的,支持網絡交互,可基于內存也可持久化到本地磁盤的Key-Value數據庫。 優點: 因為Redis是基于內存的,所以數據的讀取速度很快Redis支持多種數據結構,包括字符串Str…

MyBatis-Plus 分頁失效問題解析:@Param 注解的影響與解決方案

引言在 Spring Boot MyBatis-Plus 的開發中,分頁查詢是常見的需求。然而,有時我們會遇到分頁失效的問題,尤其是在方法參數上添加 Param 注解后。本文將通過一個實際案例,分析 Param 注解如何影響 MyBatis-Plus 的分頁機制&#x…

機器學習——模型的簡單優化

在訓練模型時我們可能會遇到模型不滿足于預期需要進行改善的環節,這些情況通常包括以下幾種常見問題和對應的解決方案:數據質量不足數據量過少:當訓練樣本不足時,模型難以學習到有效的特征表示。建議通過數據增強(如圖…

17.MariaDB 數據庫管理

17.MariaDB 數據庫管理 數據庫介紹 數據庫(Database)簡單來說,就是按照一定規則存數據的 “倉庫”。它能高效存大量數據,還能方便地查、增、改、刪數據,是各種信息系統的核心。 核心特點: 結構化存儲:數…

AI搶飯碗,軟件測試該何去何從?

AI 浪潮下,軟件測試路在何方 當某大廠宣布 “AI 測試機器人上崗首日就覆蓋 80% 的功能測試” 時,測試圈炸開了鍋 —— 有人連夜更新簡歷,有人在技術論壇發問:“十年測試經驗,難道真的不如一行 AI 代碼?”AI…

09 ABP Framework 中的 MVC 和 Razor Pages

ABP Framework 中的 MVC 和 Razor Pages 該頁面詳細介紹了 ABP Framework 與 ASP.NET Core MVC 和 Razor Pages 的集成,涵蓋框架組件、項目模板、主題系統和模塊集成模式等內容,提供了 ABP 應用程序中傳統的服務器端 Web UI 選項。 框架集成組件 ABP 提供…

docker 容器內編譯onnxruntime

docker run -itd -p 49142:49142 --gpus "device0" --name cpp_env_20250812 --shm-size"5g" -v /本地路徑/onnxruntime:/onnxruntime nvidia/cuda:11.8.0-cudnn8-devel-ubuntu20.04進入容器內安裝必要的依賴git clone --branch v1.13.1 --recursive https…

-bash: ll: 未找到命令

“ll” 并不是 Linux 系統的原生命令,而是 “ls -l” 命令的一個常用別名(快捷方式)。提示 “-bash: ll: 未找到命令” 說明你的系統中沒有配置這個別名,只需手動添加即可:步驟:添加 ll 別名編輯當前用戶的…

docker network 與host的區別

所以docker run的時候只需要加入指定的network,就會從該network自動分配對應的ip是嗎 是的,你的理解完全正確! Docker 網絡自動分配 IP 機制 當你使用 docker run 命令并指定網絡時,Docker 會自動從該網絡的子網中分配一個 IP 地址…

GPT-5 現已上線 DigitalOcean Gradient? AI 平臺!

OpenAI 于 8 月 7 日發布其最新人工智能模型 GPT-5。根據 OpenAI 介紹,GPT-5 在編程、數學、寫作、視覺等方面的性能全面領先,幻覺更低,指令更準。新架構整合高速模型與深度推理,可實時切換速答或深思。近日,DigitalOc…

#C語言——學習攻略:自定義類型路線--結構體--結構體類型,結構體變量的創建和初始化,結構體內存對齊,結構體傳參,結構體實現位段

🌟菜鳥主頁:晨非辰的主頁 👀學習專欄:《C語言學習》 💪學習階段:C語言方向初學者 ?名言欣賞:“人理解迭代,神理解遞歸。” 目錄 1. 結構體類型 1.1 舊知識回顧 1.1.1 結構體聲…

機器學習——TF-IDF算法

TF-IDF(Term Frequency-Inverse Document Frequency)是一種廣泛應用于文本挖掘和信息檢索領域的經典加權算法,主要用于評估一個詞語在文檔集合中的重要程度。其核心思想是:一個詞語在文檔中出現的頻率越高,同時在所有文…