一、基本安裝
1. 運(yùn)行以下命令安裝 vsftpd。

yum install -y vsftpd
2.運(yùn)行以下命令打開(kāi)及查看etc/vsftpd
cd /etc/vsftpd

說(shuō)明:/etc/vsftpd/vsftpd.conf 是核心配置文件。/etc/vsftpd/ftpusers 是黑名單文件,此文件里的用戶(hù)不允許訪問(wèn) FTP 服務(wù)器。/etc/vsftpd/user_list 是白名單文件,是允許訪問(wèn) FTP 服務(wù)器的用戶(hù)列表。/etc/vsftpd/vsftpd_conf_migrate.sh 是vsftpd操作的一些變量和設(shè)置
備注:使用命令 rpm -ql vsftpd 可列出vsftpd中包含的文件
3.運(yùn)行以下命令設(shè)置開(kāi)機(jī)自啟動(dòng)。
systemctl enable vsftpd
4.運(yùn)行以下命令啟動(dòng) FTP 服務(wù)。
systemctl start vsftpd
5.運(yùn)行以下命令查看 FTP 服務(wù)端口。
netstat -antup | grep ftp
6.配置本地用戶(hù)登錄本地用戶(hù)登錄就是指用戶(hù)使用 Linux 操作系統(tǒng)中的用戶(hù)賬號(hào)和密碼登錄 FTP 服務(wù)器。
vsftpd 安裝后默只支持匿名 FTP 登錄,用戶(hù)如果試圖使用 Linux 操作系統(tǒng)中的賬號(hào)登錄服務(wù)器,將會(huì)被 vsftpd 拒絕,但可以在 vsftpd 里配置用戶(hù)賬號(hào)和密碼登錄。具體步驟如下:
a. 運(yùn)行以下命令創(chuàng)建 ftptest 用戶(hù)。
useradd ftptest (刪除用戶(hù)命令:sudo userdel -r newuser)
b.運(yùn)行以下命令修改 ftptest 用戶(hù)密碼。
passwd ftptest

7.修改/etc/vsftpd/vsftpd.conf
a. 運(yùn)行vim /etc/vsftpd/vsftpd.conf。
b. b.按鍵 “i” 進(jìn)入編輯模式。
c. c.將是否允許匿名登錄 FTP 的參數(shù)修改為anonymous enable=NO。
d. d.將是否允許本地用戶(hù)登錄 FTP 的參數(shù)修改為local_enable=YES。
e. e.按鍵 “Esc” 退出編輯模式,然后按鍵“:wq” 保存并退出文件。
f. f.運(yùn)行命令 cat /etc/vsftpd/vsftpd.conf 查看配置文件內(nèi)容。
如果啟動(dòng)不了,關(guān)閉ipvp6監(jiān)聽(tīng)vim /etc/vsftpd/vsftpd.conf
二、基本配置
完成vsftpd安裝后發(fā)現(xiàn)無(wú)法遠(yuǎn)程連接,仍需要完成以下配置。
原因分析:
FTP連接方式分為:主動(dòng)模式和被動(dòng)模式。默認(rèn)為被動(dòng)模式。
如果為被動(dòng)模式,服務(wù)器端必須監(jiān)聽(tīng)至少一個(gè)額外的被動(dòng)模式端口。
所以,若只開(kāi)通20和21端口是不夠的,需要另外配置入站端口。
備注參考信息:
FTP的連接一般是有兩個(gè)連接的,一個(gè)是客戶(hù)程和服務(wù)器傳輸命令的,另一個(gè)是數(shù)據(jù)傳送的連接。FTP服務(wù)程序一般會(huì)支持兩種不同的模式,一種是Port模式,一種是Passive模式(Pasv Mode),我先說(shuō)說(shuō)這兩種不同模式連接方式的分別。先假設(shè)客戶(hù)端為C,服務(wù)端為S.Port模式:當(dāng)客戶(hù)端C向服務(wù)端S連接后,使用的是Port模式,那么客戶(hù)端C會(huì)發(fā)送一條命令告訴服務(wù)端S(客戶(hù)端C在本地打開(kāi)了一個(gè)端口N在等著你進(jìn)行數(shù)據(jù)連接),當(dāng)服務(wù)端S收到這個(gè)Port命令后 就會(huì)向客戶(hù)端打開(kāi)的那個(gè)端口N進(jìn)行連接,這種數(shù)據(jù)連接就生成了。Pasv模式:
當(dāng)客戶(hù)端C向服務(wù)端S連接后,服務(wù)端S會(huì)發(fā)信息給客戶(hù)端C,這個(gè)信息是(服務(wù)端S在本地打開(kāi)了一個(gè)端口M,你現(xiàn)在去連接我吧),當(dāng)客戶(hù)端C收到這個(gè)信息后,就可以向服務(wù)端S的M端口進(jìn)行連接,連接成功后,數(shù)據(jù)連接也建立了。
添加配置信息 修改配置文件 vim /etc/vsftpd/vsftpd.conf
解釋?zhuān)?800/8899 為上面安全組添加的端口號(hào)pasv_enable=YES|NOYES,允許數(shù)據(jù)傳輸時(shí)使用PASV模式。NO,不允許使用PASV模式。默認(rèn)值為YES。pasv_min_port=port number pasv_max_port=port number
設(shè)定在PASV模式下,建立數(shù)據(jù)傳輸所可以使用port范圍的下界和上界,0 表示任意。默認(rèn)值為0。把端口范圍設(shè)在比較高的一段范圍內(nèi),比如50000-60000,將有助于安全性的提高。
完成以上配置,基本可以實(shí)現(xiàn)遠(yuǎn)程連接FTP。
注意防火墻開(kāi)放端口
配置完成記得重啟服務(wù)器systemctl restart vsftpd
三、配置 vsftpd 限制 FTP 賬戶(hù)訪問(wèn)其它目錄
使用 vsftpd 搭建 FTP 服務(wù),可以配置用戶(hù)登錄后,限制訪問(wèn)其它的目錄,只能進(jìn)它的主目錄。 配置方法如下:
1、打開(kāi) vsftp 的配置文件 vim /etc/vsftpd/vsftpd.conf 找到 chroot Chroot_local_user
設(shè)置所有的本地用戶(hù)都執(zhí)行 chroot chroot_local_user=yes (本地所有帳戶(hù)都只能在自家目錄)
2、設(shè)置指定用戶(hù)執(zhí)行 chroot
找到并修改 chroot_list_enable=yes
3、chroot_list_file=/ 任意指定的路徑 /chroot_list (文件中的名單可以調(diào)用)注意:vsftpd.chroot_list 是沒(méi)有創(chuàng)建的需要自己創(chuàng)建。若不想限制個(gè)別用戶(hù),將用戶(hù)名添加到vsftpd.chroot_list文件中,每個(gè)用戶(hù)名一行。
四、創(chuàng)建用戶(hù)
useradd -s /sbin/nologin -d /home/test test
"-s /sbin/nologin":指定該用戶(hù)無(wú)法使用bash或其他shell來(lái)登陸系統(tǒng),僅用于ftp連接
"-d /home/test":指定該用戶(hù)的ftp目錄
如服務(wù)無(wú)法啟動(dòng)systemctl restart vsftpd.service
設(shè)置selinux
需要設(shè)置selinux后才能訪問(wèn)FTP服務(wù)器:
setsebool -P ftp_home_dir 1 setsebool -P allow_ftpd_full_access 1
-P表示設(shè)定該項(xiàng)目永久套用
查看selinux的ftp配置是否成功:
getsebool -a |grep ftp
"ftp_home_dir","ftpd_full_access"參數(shù)都為"on"表示配置成功