FTP是用于在網絡上進行檔案傳輸的一套标準協定。
FTP伺服器是使用FTP協定在網絡上提供檔案存儲和通路的伺服器。
FTP伺服器的工作模式主要有兩種:
1.主動模式:伺服器主動連接配接使用者端口發送資料。(端口可能被用戶端防火牆堵塞)
2.被動模式:用戶端連接配接伺服器端口發送資料。(端口可能被伺服器端防火牆堵塞)
安裝 vsftpd
vsftpd
vsftdp
是一個用于 類Unix系統的安全且快速的 FTP伺服器,支援IPv6,TLS,FTPS等功能。是一個在GPL許可證下開放源代碼,免費的 FTP伺服器。
網站:
https://security.appspot.com/vsftpd.html
1.檢查伺服器是否安裝FTP服務。
rpm -qa | grep vsftpd
如果沒有顯示任何内容,則需要尚未安裝
vsftpd
。
2.運作以下指令安裝
vsftpd
yum install -y vsftpd

傳回如圖所示界面時,表示安裝成功。
3.運作以下指令設定
vsftpd
服務開機自啟動。
systemctl enable vsftpd.service
4.啟動FTP服務。
systemctl start vsftpd.service
5.檢視FTP服務監聽端口
netstat -antup | grep ftp
出現如下圖所示界面,表示FTP服務已啟動,監聽的端口号為 21。此時,
vsftpd
預設已開啟匿名通路功能,您無需輸入使用者名密碼即可登入FTP伺服器,但沒有修改或上傳檔案的權限。
配置 vsftpd
vsftpd
vsftpd
允許使用者以三種認證模式登入到FTP伺服器上:
匿名開放模式:任何人都可以無需密碼登入到FTP伺服器上。(!不安全)
本地使用者模式:通過Linux系統的本地賬戶密碼星系進行登入認證。
虛拟使用者模式:通過建立僅供
vsftpd
服務使用的使用者資料庫,虛拟出用于登入認證的賬戶資訊。
PS: 隻可同時配置一種認證模式。
匿名開放模式-配置
1.修改配置檔案
vsftpd.conf
vim /etc/vsftpd/vsftpd.conf
3.按
i
鍵進入
INSERT
模式,将匿名上傳權限
anon_upload_enable=YES
的注釋解開(删除
#
号)。
4.按
ECS
退出
insert
模式,輸入
:wq
儲存并退出配置檔案。
5.更改
/var/ftp/pub
目錄的權限,為FTP使用者添加寫權限。
chmod o+w /var/ftp/pub/
7.重新開機FTP服務。
systemctl restart vsftpd.service
本地使用者模式-配置
1.為FTP服務建立一個Linux使用者。
adduser 使用者名
2.修改/指定密碼
passwd 使用者名
3.建立一個供FTP服務使用的檔案目錄。(以
/var/ftp/vsftpd
為例)
mkdir /var/ftp/vsftpd
4.更改
/var/ftp/vsftpd
目錄的擁有者。
chown -R 使用者名 /var/ftp/vsftpd
9.輸入以下指令修改配置檔案
主動模式
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 #設定本地使用者登入後所在的目錄
被動模式
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 #設定本地使用者登入後所在的目錄
以上配置與主動模式相同,以下為被動模式新增配置
echo "pasv_enable=YES" >> /etc/vsftpd/vsftpd.conf #開啟被動模式
echo "pasv_address=<FTP伺服器公網IP位址>" >> /etc/vsftpd/vsftpd.conf #配置FTP伺服器IP位址
echo "pasv_min_port=20" >> /etc/vsftpd/vsftpd.conf #設定被動模式下,建立資料傳輸可使用的端口範圍的最小值
echo "pasv_max_port=21" >> /etc/vsftpd/vsftpd.conf #設定被動模式下,建立資料傳輸可使用的端口範圍的最大值
6.在
/etc/vsftpd
目錄下建立
chroot_list
檔案,并在檔案中寫入例外使用者名單。(此名單中的使用者不會被鎖定在主目錄,可以通路其他目錄)
vim /etc/vsftpd/chroot_list
systemctl restart vsftpd.service
檢驗 vsftp
vsftp
1.打開FTP用戶端/浏覽器,在位址欄輸入
ftp://<FTP伺服器IP位址>:FTP端口
2.(以
firefox
浏覽器為例)在彈出的對話框中輸入使用者名和密碼。
3.如出現如下界面,則登入成功,即可對FTP檔案進行相應權限的操作。
參考/引用
基于ECS搭建FTP服務 - 開發者雲體驗平台 (aliyun.com) linux環境:FTP伺服器搭建 - 清水-殇 - 部落格園 (cnblogs.com)