FTP文件傳輸


一、FTP簡介

1、 FTP服務——用來傳輸文件的協議

  FTP 是File Transfer Protocol(文件傳輸協議)的英文簡稱,是 TCP/IP 協議組中的協議之一。用於Internet上的控制文件的雙向傳輸。同時,它也是一個應用程序(Application)。基於不同的操作系統有不同的FTP應用程序,而所有這些應用程序都遵守同一種協議以傳輸文件。
FTP協議包括兩個組成部分,其一為FTP服務器,其二為FTP客戶端。其中FTP服務器用來存儲文件,用戶可以使用FTP客戶端通過FTP協議訪問位於FTP服務器上的資源。

2、端口

  •   FTP默認使用TCP協議的20、21端口用於客戶端進行通信
  • 20端口用於建立數據連接,並傳輸文件數據
  • 21端口用於建立控制連接,並傳輸FTP控制命令

3、數據連接模式

  •   Standard (PORT方式、主動模式):服務器主動發起數據連接
    •     FTP 客戶端首先和服務器的TCP 21端口建立連接,用來發送命令,客戶端需要接收數據的時候在這個通道上發送PORT命令。PORT命令包含了客戶端用什么端口接收數據。在傳送數據的時候,服務器端通過自己的TCP 20端口連接至客戶端的指定端口發送數據。FTP server必須和客戶端建立一個新的連接用來傳送數據。
  •   Passive (PASV,被動方式):服務器被動等待數據連接
    •   建立控制通道和Standard模式類似,但建立連接后發送Pasv命令。服務器收到Pasv命令后,打開一個臨時端口(端口號大於1023小於65535)並且通知客戶端在這個端口上傳送數據的請求,客戶端連接FTP服務器此端口,然后FTP服務器將通過這個端口傳送數據。

二、相關配置

1.安裝FTP服務

yum install -y vsftpd            #yum一鍵安裝
cd /etc/vsftpd/                  #切換到ftp配置目錄下
cp vsftpd.conf  vsftpd.conf.bak
或  cp vsftpd.conf{,.bak}        #進行原配置文件的備份

  

2、設置匿名用戶訪問的FTP服務(最大權限)

 

  • 修改配置文件

vim /etc/vsftpd/vsftpd.conf     
anonymous_enable=YES            #開啟匿名用戶訪問,默認已開啟
write_enable=YES                #開放服務器的寫權限(若要上傳,必須開啟),默認已開啟
anon_umask=022                  #設置匿名用戶所上傳數據的權限掩碼(反掩碼)
anon_upload_enable=YES          #允許匿名用戶上傳文件,默認已注釋,需取消注釋
anon_mkdir_write_enable=YES     #允許匿名用戶創建(上傳)目錄。默認已注釋,需取消注釋
anon_other_write_enable =YES    #允許刪除、重命名、覆蓋等操作,需添加

  

  • 為匿名訪問FTP的根目錄下的pub子目錄設置最大權限,以便匿名用戶上傳數據

chmod 777 /var/ftp/pub

  

  • 開啟服務,關閉防火牆和增強型安全功能

systemctl start vsftpd          #開啟服務
systemctl stop firewalld        #關閉防火牆
setenforce 0                    #關閉系統安全機制

  

  • 匿名訪問測試

win10中打開cmd命令提示符

ftp 192.168.184.50     #建立ftp連接
ftp> pwd			   #匿名訪問ftp的根目錄為Linux系統的/var/ftp/目錄
ftp> ls				   #查看當前目錄
ftp> cd pub		       #切換到pub 目錄
ftp> get 文件名		   #下載文件到當前Windows本地目錄
ftp> put 文件名		   #上傳文件到ftp目錄
ftp> quit			   #退出

  

  • 設置本地用戶驗證訪問ftp,並禁止切換到ftp以外的目錄(默認登錄的根目錄為本地用戶的家目錄)

vim /etc/vsftpd/vsftpd.conf     
local_enable=Yes        		#啟用本地用戶
anonymous_enable=NO    	    	#關閉匿名用戶訪問
write_enable=YES        	    #開放服務器的寫權限(若要上傳,必須開啟)
anon_umask=077          		#可設置僅宿主用戶擁有被上傳的文件的權限(反掩碼)
chroot_local_user=YES   	    #將訪問禁錮在用戶的宿主目錄中
allow_writeable_chroot=YES		#允許被限制的用戶主目錄具有寫權限

systemctl restart vsftpd        #重啟服務

  

  • 修改匿名用戶、本地用戶登錄的默認根目錄

anon_root=/var/www/html			#anon_root 針對匿名用戶
local_root=/var/www/html		#local_root 針對系統用戶

  

  • 使用user_list用戶列表文件和設置白名單和黑名單

vim /etc/vsftp/user_list
//末尾加上zhangsan用戶
zhansgan

vim /etc/vsftpd/vsftpd.conf
userlist_enable=YES       #啟用user_list用戶列表文件
userlist_deny=NO          #設置白名單,僅允許user_list用戶列表文件的用戶訪問。默認為YES,為黑名單,禁用

  

三、模擬實驗一(FTP服務的上傳和下載)

 

  • 安裝FTP並進行配置文件的備份

 

 

 

 

 

 

 

 

 

 

 

  •  開啟服務,關閉防火牆和增強型安全功能

 

 

  • 匿名訪問測試

 

 

  • WIN10上進行文件的上傳

 

文件內容

 

 

 

 

 

 退出重新登陸

 

 

  • 查看上傳是否成功

 

 

  • pub目錄下創建包含內容的新文件

 

 

  • WIN10里進行FTP服務下載,並查看文件是否下載成功

 

 

 

 

四、模擬實驗二(本地用戶登錄FTP,限制切換到宿主目錄以外目錄,並賦予寫的權限)

1、進入配置文件進行修改成本地用戶登錄

 

 

 

 

2、創建本地用戶

 

 

 

 

 

 

 

3、測試本地用戶FTP登錄情況

 

 

 

4、更改配置文件

 

 

 

 

 

5、重啟服務

 

 

 

6、連接FTP,並進行切換目錄測試

 

 

7、進行可寫權限的測試

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM