FTP連接配接方式
一控制連接配接:标準端口為21,用于發送FTP指令資訊
–資料連接配接:标準端口為20,用于上傳、下載下傳資料
一資料連接配接的建立類型:
·主動模式:服務端從20端口主動向用戶端發起連接配接
FTP傳輸模式
-文本模式: ASCII模式,以文本序列傳輸資料
-二進制模式: Binary模式,以二進制序列傳輸資料
·被動模式:服務端在指定範圍内的某個端口被動等待用戶端發起連接配接
主動模式:
用戶端從一個随機的大于1024以上的端口N連接配接到伺服器的21端口,用戶端開始監聽端口N+1同時發送指令“port N+1”,告訴伺服器開放了N+1端口。伺服器使用20端口回連到用戶端指定的N+1端口開始傳輸資料
• 被動模式:
– 用戶端從一個随機的大于1024以上的端口N連接配接到伺服器的21端口,開始監聽端口N+1,并且 同時發送指令PASV。結果伺服器會開啟一個随機的大于1024以上的端口P,并發送”PORT P”指令給用戶端,然後用戶端發起從本地端口N+1到伺服器的端口P的連接配接來傳送資料
安裝vsftpd
實驗環境:centos7
這裡隻顯示匿名使用者和本地使用者的主動模式
運作以下指令安裝vsftpd。
yum -y install vsftpd
systemctl enable vsftpd.service設定FTP服務開機自啟動。
systemctl start vsftpd.service啟動FTP服務。
netstat -antup | grep ftp檢視FTP服務監聽的端口。
出現如下圖所示界面,表示FTP服務已啟動,監聽的端口号為 21。此時,vsftpd預設已開啟匿名通路功能,您無需輸入使用者名密碼即可登入FTP伺服器,但沒有修改或上傳檔案的權限。

配置vsftpd
vsftpd(very secure FTP daemon)是一款在Linux發行版中最受推崇的FTP伺服器。vsftpd支援匿名通路和本地使用者模式兩種通路方式。匿名通路方式任何使用者都可以通路搭建的FTP服務;本地使用者模式隻支援添加的本地使用者通路搭建的FTP服務。
說明: 匿名使用者模式和本地使用者模式隻可同時配置一種。
匿名使用者模式
vim /etc/vsftpd/vsftpd.conf
修改配置檔案vsftpd.conf。
按 i 鍵進入編輯模式,将匿名上傳權限 anon_upload_enable=YES 的注釋解開。
按ESC鍵退出編輯模式,輸入:wq 儲存并退出vim。
更改/var/ftp/pub目錄的權限,為FTP使用者添加寫權限。
chmod o+w /var/ftp/pub/
systemctl restart vsftpd.service重新開機FTP服務。
驗證:切換路徑 建立1.txt在本地進行驗證
cd /var/ftp/pub/
touch 1.txt
本地使用者模式
為FTP服務建立一個Linux使用者。
adduser ftptest
為使用者設定密碼。
passwd ftptest
建立一個供FTP服務使用的檔案目錄。
mkdir /var/ftp/test
更改/var/ftp/test目錄的擁有者為ftptest。
chown -R ftptest:ftptest /var/ftp/test
修改vsftpd.conf配置檔案。
配置FTP為主動模式請執行如下指令:
sed -i ‘s/anonymous_enable=YES/anonymous_enable=NO/’ /etc/vsftpd/vsftpd.conf #禁止匿名登入FTP伺服器
sed -i ‘s/listen=NO/listen=YES/’ /etc/vsftpd/vsftpd.conf #監聽IPv4 sockets
sed -i ‘s/listen_ipv6=YES/#listen_ipv6=YES/’ /etc/vsftpd/vsftpd.conf #關閉監聽IPv6 sockets
sed -i ‘s/#chroot_local_user=YES/chroot_local_user=YES/’ /etc/vsftpd/vsftpd.conf #全部使用者被限制在主目錄
sed -i ‘s/#chroot_list_enable=YES/chroot_list_enable=YES/’ /etc/vsftpd/vsftpd.conf #啟用例外使用者名單
sed -i ‘s/#chroot_list_file=/chroot_list_file=/’ /etc/vsftpd/vsftpd.conf #指定例外使用者清單檔案,清單中的使用者不被鎖定在主目錄
echo “allow_writeable_chroot=YES” >> /etc/vsftpd/vsftpd.conf
echo “local_root=/var/ftp/test” >> /etc/vsftpd/vsftpd.conf #設定本地使用者登入後所在的目錄
這裡使用使用者登入ftptest 無法登入解決方法:修改配置檔案vim /etc/vsftpd/vsftpd.conf
cd /var/ftp/test/ 切換到本地檔案目錄
touch 3.text 建立檔案
systemctl restart vsftpd重新開機服務
主控端通路 輸入ftptest 密碼12345678