23.Linux : ftp服務及配置詳解

Linux : ftp服務及配置詳解

FTP 基本概念
  • 定義:文件傳輸協議(File Transfer Protocol),采用 C/S 模式工作。
  • 端口
    • 控制端口:21
    • 數據端口:20
FTP 工作原理
模式工作流程連接發起方
主動模式 (Standard)1. 客戶端從隨機高端口 N 發送 PORT 命令到服務端 21 端口 2. PORT 命令包含客戶端數據端口 N+1 3. 服務端用 20 端口連接客戶端的 N+1 端口,如果傳輸數據則需要重新與客戶端建立新的連接傳輸數據服務端 → 客戶端
被動模式 (Passive)1. 客戶端發送 PASV 命令到服務端 21 端口 2. 服務端隨機開啟高端口 P,并通過 PORT 命令告知客戶端 3. 客戶端用 N+1 端口連接服務端的 P 端口,被動模式不需要重新與服務器建立新連接客戶端 → 服務端

不同點:
傳輸數據的連接方式不同:主動模式是服務端向客戶端發起數據連接,
而被動模式是客戶端向服務端發起數據連接。

相同點:
都是使用21號控制端口進行用戶驗證和管理。

FTP服務部署

關閉防火墻和selinux

1.安裝vsftpd軟件包

yum install vsftpd -y
rpm -q vsftpd
vsftpd-3.0.2-25.el7.x86_64 #查看是否安裝

2.vsftpd的主配置文件

vim /etc/vsftpd/vsftpd.confanonymous_enable=YES  #是否允許匿名用戶登錄
local_enable=YES 	#允許本地用戶登錄ftp
write_enable=YES	#ftp用戶是否有寫入權限
local_umask=022		#創建文件的umask值
anon_upload_enable=YES	#是否允許匿名用戶上傳文件
anon_mkdir_write_enable=YES  #是否允許匿名用戶創建目錄
anon_other_write_enable=YES	 #是否允許匿名用戶能夠刪除或者重命名文件,目錄
xferlog_enable=YES      #控制文件在傳輸過程中是否被日志記錄
connect_from_port_20=YES	#使用20端口傳輸
chown_uploads=YES       #匿名用戶上傳文件的所有者為FTP
chown_username=whoever  #whoever修改為ftp用戶,匿名用戶上傳文件的所有者將變成該FTP用戶。
xferlog_file=/var/log/xferlog #設置傳輸文件日志的位置
idle_session_timeout=600   #超過600s空閑自動斷開連接
data_connection_timeout=120   #控制數據連接建立后120秒內無交互時,自動斷開連接。
deny_email_enable=YES   #禁止下載文件到郵箱
chroot_local_user=YES   #ftp用戶是否能夠離開自己的家目錄,yes表示禁止ftp用戶離開自己的家目錄
chroot_list_enable=YES  #列表中的ftp用戶能否離開家目錄,通常與下條命令配合使用
chroot_list_file=/etc/vsftpd/chroot_list #ftp的用戶列表如果想要單個ftp用戶能夠訪問其他目錄,其他所有ftp用戶只能在自己的家目錄,則開啟上面三條命令,并且在ftp用戶列表中寫上能夠訪問其他目錄的ftp用戶,如果chroot_local_user=YES和chroot_list_enable=YES都是yes,則只有用戶列表中的用戶能夠訪問其他目錄;如果chroot_local_user=YES,chroot_list_enable=NO,則所有用戶都不能離開自己的家目錄;
如果chroot_local_user=NO,chroot_list_enable=YES,則只有用戶列表中的用戶不允許訪問其他目錄,其他用戶都能夠訪問其他目錄

方法2:

[root@xieyuhui vsftpd]# ls
chroot_list  ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh

查看/etc/vsftpd/目錄下的文件,ftpusers和user-list是ftp用戶黑名單,默認禁止列表里的這些用戶訪問ftp,如果想要個別用戶能夠訪問ftp,需要在user-list中寫下這個用戶,ftpusers中不寫這個用戶,然后在在vsftpd.conf配置文件中寫入userlist_deny=NO,拒絕訪問的優先級>允許訪問的優先級,所以原來的用戶依舊不能訪問ftp,而新用戶因為不在ftpusers里面,所以能夠訪問ftp服務

練習

在FTP服務器創建3個用戶分別為ftpuser1 ,ftpuser2,ftpuser3,密碼設置為redhat

在客戶端安裝lftp軟件包

在這里插入圖片描述

1.設置允許匿名用戶訪問FTP服務器(本次使用centos7版本,默認允許匿名用戶訪問ftp服務器,因此不做更改)

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

首先需要讓/var/ftp/pub的其他用戶有對此目錄的寫入權限,但如果直接給其他用戶權限就太大了,我們可以直接設置ftp用戶有對此目錄的讀寫權限

setfacl -m u:ftp:rwx /var/ftp/pub/

修改配置文件

vim  /etc/vsftpd/vsftpd.conf
write_enable=YES  	#寫入權限
anon_upload_enable=YES	#匿名用戶上傳文件的權限

重啟服務

systemctl restart vsftpd

在這里插入圖片描述

匿名用戶成功上傳文件

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

編輯vsftpd配置文件

vim /etc/vsftpd/vsftpd.confanon_mkdir_write_enable=YES  #允許匿名用戶創建目錄

重啟服務

在這里插入圖片描述

成功創建目錄(不能創建文件)

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

編輯vsftpd配置文件

vim /etc/vsftpd/vsftpd.confanon_other_write_enable=YES  #允許匿名用戶進行重命名或刪除

重啟服務

在這里插入圖片描述

在這里插入圖片描述

5.設置允許FTP用戶訪問FTP服務器(默認允許訪問,因此不做配置)

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

將ftpuser1和ftpuser2限制,ftpuser3可以訪問其他目錄

方法1:

編輯ftp用戶列表,如果用戶被限定在了其主目錄下,則該用戶的主目錄不能再具有寫權限了
如果檢查發現還有寫權限,就會報該錯誤。

cd /etc/vsftpd/
vim chroot_listftpuser1ftpuser2  #一行一個用戶

編輯vsftpd配置文件

vim vsftpd.confchroot_list_enable=YESchroot_list_file=/etc/vsftpd/chroot_listallow_writeable_chroot=YES #列表中的用戶不允許訪問其他目錄

重啟服務

在這里插入圖片描述

在這里插入圖片描述

方法2:

在ftpusers里面寫上ftpuser1和ftpuser2,在user-list里面寫上ftpuser3,然后在配置文件里面加上userlist_deny=NO

在這里插入圖片描述

在這里插入圖片描述

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

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

相關文章

悲觀鎖樂觀鎖與事務注解在項目實戰中的應用場景及詳細解析

在今天做的項目練習部分中真的學到了很多東西,也補充了許多之前遺漏或是忘記的知識點,但時間精力有限,我就先記錄一下今天用到的一個新東西,悲觀鎖和樂觀鎖。首先給出實際應用背景:在加入鎖和事務注解之前,…

Java構造器與工廠模式(靜態工程方法)詳解

1. 構造器1.1 構造器的核心意義1.1.1 對象初始化構造器在創建對象 (new) 時自動調用, 用于初始化對象的狀態 (如設置字段初始值, 分配資源等)無構造器時: 字段為默認值(0/null/false)有構造器:確保對象創建后即處于有效狀態1.1.2 強制初始化…

解決jdk初始化運行,防火墻通信選錯專業網絡問題

問題描述新項目添加不同版本的jdk,運行時提示防火墻通信策略,選成專用網絡。其他人訪問后端接口時,提示連接失敗。 解決方案:1、在搜索欄中輸入 防火墻關鍵字,選擇到防火墻和網絡保護2、選擇允許應用通過防火墻3、先點…

【Linux】常用命令(三)

【Linux】常用命令(三)1. export1.1 原理1.2 常用語法1.3 示例1.4 書中對命令的解釋1.5 生效范圍2. 測試服務地址與其端口能否訪問2.1 nc(Netcat)命令2.2 telnet2.3 nmap2.4 curl命令 (適用于HTTP/HTTPS 服務)1. export export 是 Linux Shell&#xff…

Pytest項目_day15(yaml)

YAMLYAML是一個對所有編程語言都很友好的數據序列化標準,它是一種直觀的能夠被電腦識別的數據序列化格式,是一種可讀性高且容易被人類閱讀的腳本語言YAML語言的本質是一種通用的數據串行化格式適用場景 可以直接序列化為數組、字典解析成本低專門寫配置文…

審批流程系統設計與實現:狀態驅動、靈活擴展的企業級解決方案

審批流程系統設計與實現:狀態驅動、靈活擴展的企業級解決方案 本文基于實際企業級審批系統源碼,深入解析如何設計高擴展性、強一致性的審批流程引擎,涵蓋狀態機設計、多租戶隔離、文件服務集成等核心實現。 1. 系統設計概覽 審批系統的核心架…

汽車免拆診斷案例 | 2010款奧迪A4L車行駛中發動機偶爾自動熄火

故障現象 一輛2010款奧迪A4L車,搭載CDZ發動機 ,累計行駛里程約為18.2萬km。該車行駛中發動機偶爾自動熄火,有時熄火后能夠立即重新起動著機,有時需要等待一會兒才能重新起動著機,故障頻率較低。因該故障在其他維修廠陸…

Liam ERD:自動生成美觀的交互式實體關系圖

Liam ERD 是一個可以快速生成美觀且具有交互性的數據庫實體關系圖(ERD)的工具,可以幫助用戶實現復雜數據庫結構的可視化。 Liam ERD 是一個免費開源的項目,代碼托管在 GitHub: https://github.com/liam-hq/liam 功能…

網絡協議序列化工具Protobuf

目錄前言一、下載注意二、解壓安裝三、Protobuf的使用1、創建.proto文件2、利用protoc編譯.proto文件前言 Protocol Buffers是Google的?種語??關、平臺?關、可擴展的序列化結構數據的?法,它可?于(數據)通信協議、數據存儲等。 Protoco…

從表單校驗到API網關:全鏈路輸入安全防護指南

從表單校驗到 API 網關:全鏈路輸入安全防護指南 在軟件系統的安全防御體系中,輸入安全是第一道防線,而這道防線的堅固程度直接決定了系統抵御外部攻擊的能力。從用戶在瀏覽器中填寫表單的那一刻起,到數據經過 API 網關流轉至后端服務,每一個環節都可能成為輸入攻擊的突破…

Flask vs Django:微框架與一站式對決

Flask 簡介 1、簡介 Flask誕生于2010年,是Armin ronacher用Python語言基于Werkzeug工具箱編寫的輕量級Web開發框架,又稱之為微框架。 "微"的含義:Flask旨在保持核心簡潔,本身相當于內核,其他功能需通過擴展…

真實業務場景:mysql慢查詢優化(從17秒的查詢優化到700毫秒)

慢查詢業務場景:原先在我們系統中要統計一些人員的單位 部門信息的數據情況,比如總的男女人數,每個單位下的男女人數等等,然后原來的sql是這樣寫的 根據一個單位的id 然后對一張表做出多個子查詢進行查詢,這時候統計記錄 由于加載…

遠程影音訪問:通過 cpolar 內網穿透服務使用 LibreTV

文章目錄前言【視頻教程】1.關于LibreTV2.docker部署LibreTV3.簡單使用LibreTV4.安裝cpolar內網穿透5.配置ward公網地址6.配置固定公網地址總結LibreTV 與 cpolar 的協同應用,為用戶打造了一條通往高清觀影自由的便捷之路。通過這一方案,用戶不僅擺脫了商…

Apache ECharts 6 核心技術解密 – Vue3企業級可視化實戰指南

簡介 ECharts 是百度開源的一個使用 JavaScript 實現的開源可視化庫,它能夠生動、可交互地展示數據。在 Vue3 項目中集成 ECharts 可以讓你的項目更加直觀和動態地呈現數據信息。 核心優勢 特性SVG渲染器Canvas渲染器縮放保真度★★★★★★★☆☆☆動態交互性能…

考公VS考研,拼哪個性價比高?

即將到來下半年,將迎來考公和考研是兩個非常重要的考試,也是許多年輕人為之奮斗的目標。無論是獲得一份穩定的“鐵飯碗”,還是提升學歷學位獲得更高的競爭力,都是值得努力的方向。那么,考公vs考研,到底哪個…

python2操作neo4j

環境依賴 jdk、neo4j圖數據庫 操作一條數據完整demo import os,json,sys,io from py2neo import Graph,Nodetry:sys.stdout io.TextIOWrapper(sys.stdout.buffer, encodingutf-8)sys.stderr io.TextIOWrapper(sys.stderr.buffer, encodingutf-8) except Exception:passcla…

AI 編程實踐:用 Trae 快速開發 HTML 貪吃蛇游戲

1. 背景與目標 貪吃蛇是最適合入門的 2D 網頁小游戲之一:規則簡單、反饋清晰、可擴展空間大(穿墻模式、道具、多食物、排行榜……)。 demo地址:https://game.haiyong.site/snake-game.html 本項目的目標是: 純前端、…

FreeRTOS-C語言指針筆記

文章目錄一級指針指針基本概念指針使用示例代碼說明二、二級指針二級指針重點解析一級指針 C語言中的指針是一個非常重要的概念,它存儲了變量的內存地址。指針的使用可以使程序更加高效,尤其在處理數組、字符串和動態內存分配時。 指針基本概念 指針變…

界面布局智能建議生成:從功能需求到專業UI的AI加速之路

內容簡介: 傳統界面設計讓產品經理陷入"不懂設計、等設計師"的困境,效率低下還容易被挑刺。本文深度解析DeepSeek驅動的界面布局智能生成技術,通過DESIGN框架提示詞模板,讓產品經理在30分鐘內生成3種專業級界面方案,實現…

【BLE系列-第三篇】數據鏈路層(LL):廣播/連接/掃描流程詳解

目錄 引言 一、廣播及連接建立 1.1 廣播類型 1.2 掃描/連接請求與響應 1.2.1 廣播流程說明 1.2.1.1 廣播流程示例圖 1.2.1.2 廣播信息設置 1.2.1.3 信道廣播 1.2.1.4 信道切換 1.2.1.5 廣播間隔 1.2.1.6 接收窗口與理論最小傳輸時間 1.2.2 掃描/連接流程說明 1.2.…