一、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
//末尾加上zhansgan用戶
zhansgan
vim /etc/vsftpd/vsftpd.conf
userlist_enable=YES #啟用user_list用戶列表文件
userlist_deny=NO #設置白名單,僅允許user_list用戶列表文件的用戶訪問。默認為YES,為黑名單,禁用
三、模擬實驗一(FTP服務的上傳和下載)
1、安裝FTP並進行配置文件的備份
2、修改配置文件
3、開啟服務,並關閉防火牆和增強型安全功能
4、win10上進行FTP連通測試
5、給予最大權限
6、WIN10上進行文件的上傳(關閉防火牆)