系統(tǒng)環(huán)境:CentOS Linux release 7.6.1810 (Core)
一逐虚、簡(jiǎn)介
FTP(文件傳輸協(xié)議)全稱是:Very Secure FTP Server克伊。 Vsftpd是linux類操作系統(tǒng)上運(yùn)行的ftp服務(wù)器軟件。 vsftp提供三種登陸方式:1.匿名登錄 2.本地用戶登錄 3.虛擬用戶登錄
vsftpd的特點(diǎn):
1)較高的安全性需求
2)帶寬的限制
3)創(chuàng)建支持虛擬用戶
4)支持IPV6
5)中等偏上的性能
6)可分配虛擬IP
7)高速
Ftp會(huì)話時(shí)采用了兩種通道(連接方式):
1)控制通道:與Ftp服務(wù)器進(jìn)行溝通的通道懂衩,鏈接Ftp發(fā)送ftp指令都是通過(guò)控制通道來(lái)完成的撞叨。端口為21,用于發(fā)送FTP命令信息浊洞。
2)數(shù)據(jù)通道:數(shù)據(jù)通道和Ftp服務(wù)器進(jìn)行文件傳輸或則列表的通道 牵敷,端口為20,用于上傳下載數(shù)據(jù)法希。
二枷餐、工作原理
Ftp協(xié)議中控制連接均是由客戶端發(fā)起,而數(shù)據(jù)連接有兩種工作方式:Port和Pasv方式
Port模式(主動(dòng)模式)--> 默認(rèn)
Ftp客戶端首先和Ftp server的tcp 21端口建立連接苫亦,通過(guò)這個(gè)通道發(fā)送命令毛肋,客戶端要接受數(shù)據(jù)的時(shí)候在這個(gè)通道上發(fā)送Port命令,Port命令包含了客戶端用什么端口(一個(gè)大于1024的端口)接受數(shù)據(jù)屋剑,在傳送數(shù)據(jù)的時(shí)候润匙,服務(wù)器端通過(guò)自己的TCP 20端口發(fā)送數(shù)據(jù)。這個(gè)時(shí)候數(shù)據(jù)連接由server向client建立一個(gè)連接饼丘。
Port交互流程:
client端:client鏈接server的21端口趁桃,并發(fā)送用戶名密碼和一個(gè)隨機(jī)在1024上的端口及port命令給server,表明采用主動(dòng)模式肄鸽,并開放那個(gè)隨機(jī)的端口卫病。
server端:server收到client發(fā)來(lái)的Port主動(dòng)模式命令與端口后,會(huì)通過(guò)自己的20端口與client那個(gè)隨機(jī)的端口連接后典徘,進(jìn)行數(shù)據(jù)傳輸蟀苛。
簡(jiǎn)而言之:就是服務(wù)端從20端口主動(dòng)向客戶端發(fā)起連接
Pasv模式(被動(dòng)方式)
建立控制通道和Port模式類似,當(dāng)客戶端通過(guò)這個(gè)通道發(fā)送Pasv命令的時(shí)候逮诲,F(xiàn)tp server打開了一個(gè)位于1024和5000之間的隨機(jī)端口并且通知客戶端在這個(gè)端口上進(jìn)行傳輸數(shù)據(jù)請(qǐng)求帜平,然后Ftp server將通過(guò)這個(gè)端口進(jìn)行數(shù)據(jù)傳輸幽告。這個(gè)時(shí)候數(shù)據(jù)連接由client向server建立連接。
Pasv交互流程
Clietn:client連接server的21號(hào)端口裆甩,發(fā)送用戶名密碼及pasv命令給server冗锁,表明采用被動(dòng)模式。
server:server收到client發(fā)來(lái)的pasv被動(dòng)模式命令之后嗤栓,把隨機(jī)開放在1024上的端口告訴client冻河,client再用自己的20 端口與server的那個(gè)隨機(jī)端口進(jìn)行連接后進(jìn)行數(shù)據(jù)傳輸。
簡(jiǎn)而言之:就是服務(wù)端在指定范圍內(nèi)的某個(gè)端口被動(dòng)等待客戶端發(fā)起連接
如果從C/S模型這個(gè)角度來(lái)說(shuō)茉帅,PORT對(duì)于服務(wù)器來(lái)說(shuō)是OUTBOUND叨叙,而PASV模式對(duì)于服務(wù)器是INBOUND,這一點(diǎn)請(qǐng)?zhí)貏e注意堪澎,尤其是在使用防火墻的企業(yè)里擂错,這一點(diǎn)非常關(guān)鍵,如果設(shè)置錯(cuò)了樱蛤,那么客戶將無(wú)法連接钮呀。
三、安裝vsfpd
1.安裝vsftpd相關(guān)組件
rpm -qa | grep vsftpd
yum -y install vsftpd*
2.安裝PAM服務(wù)相關(guān)組件
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">[root@VM_0_10_centos shellScript]# yum -y install pam*</pre>
安裝pam報(bào)錯(cuò):
[](javascript:void(0); "復(fù)制代碼")
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">--> Finished Dependency Resolution
Error: Package: 2:postfix-2.10.1-7.el7.x86_64 (@anaconda)
Requires: libmysqlclient.so.18(libmysqlclient_18)(64bit)
Error: Package: libmapi-7.1.14-3.el7.x86_64 (epel)
Requires: libmysqlclient.so.18(libmysqlclient_18)(64bit)
Error: Package: libmapi-7.1.14-3.el7.x86_64 (epel)
Requires: libmysqlclient.so.18()(64bit)
Error: Package: 2:postfix-2.10.1-7.el7.x86_64 (@anaconda)
Requires: libmysqlclient.so.18()(64bit)
You could try using --skip-broken to work around the problem ** Found 2 pre-existing rpmdb problem(s), 'yum check' output follows: 2:postfix-2.10.1-7.el7.x86_64 has missing requires of libmysqlclient.so.18()(64bit) 2:postfix-2.10.1-7.el7.x86_64 has missing requires of libmysqlclient.so.18(libmysqlclient_18)(64bit)</pre>
[](javascript:void(0); "復(fù)制代碼")
解決:
缺少Percona-XtraDB-Cluster-shared-55-5.5.37-25.10.756.el6.x86_64.rpm這個(gè)包
[](javascript:void(0); "復(fù)制代碼")
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">[root@VM_0_10_centos tmp]# wget http://www.percona.com/redir/downloads/Percona-XtraDB-Cluster/5.5.37-25.10/RPM/rhel6/x86_64
/Percona-XtraDB-Cluster-shared-55-5.5.37-25.10.756.el6.x86_64.rpm
[root@VM_0_10_centos tmp]# rpm -ivh Percona-XtraDB-Cluster-shared-55-5.5.37-25.10.756.el6.x86_64.rpm
warning: Percona-XtraDB-Cluster-shared-55-5.5.37-25.10.756.el6.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID cd2efd2a: N
OKEYPreparing... ################################# [100%]
Updating / installing... 1:Percona-XtraDB-Cluster-shared-55-################################# [100%]</pre>
](javascript:void(0); "復(fù)制代碼")
參考網(wǎng)址:https://blog.csdn.net/debimeng/article/details/78143071
最后再運(yùn)行安裝pam即可
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"># yum -y install pam*</pre>
3.安裝DB4部件包
用來(lái)支持文件數(shù)據(jù)庫(kù)
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">[root@VM_0_10_centos tmp]# yum -y install db4*</pre>
四刹悴、系統(tǒng)賬戶
1.建立Vsftpd服務(wù)的宿主用戶
默認(rèn)的Vsftpd的服務(wù)宿主用戶是root行楞,但不符合安全性的需要。這里建立名字為vsftpd的用戶土匀,用他來(lái)作為支持Vsftpd的服務(wù)宿主用戶子房。由于該用戶僅用來(lái)支持Vsftpd服務(wù)用,因此沒(méi)有許可他登陸系統(tǒng)的必要就轧,并設(shè)定他為不能登陸系統(tǒng)的用戶证杭。
nologin參考網(wǎng)址:https://blog.csdn.net/danson_yang/article/details/65629948
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">[root@VM_0_10_centos tmp]# useradd vsftpd -s /sbin/nologin</pre>
/sbin/nologin更改用戶是否可以使用ssh登錄
2.建立Vsftpd虛擬宿主用戶
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">[root@VM_0_10_centos tmp]# useradd vrvsftpd -s /sbin/nologin</pre>
虛擬用戶并不是系統(tǒng)用戶,也就是說(shuō)這些FTP的用戶在系統(tǒng)中是不存在的妒御。他們的總體權(quán)限其實(shí)是集中寄托在一個(gè)在系統(tǒng)中的某一個(gè)用戶身上的解愤,所謂Vsftpd的虛擬宿主用戶,就是這樣一個(gè)支持著所有虛擬用戶的宿主用戶乎莉。由于他支撐了FTP的所有虛擬的用戶送讲,那么他本身的權(quán)限將會(huì)影響著這些虛擬的用戶,因此惋啃,處于安全性的考慮哼鬓,也要非分注意對(duì)該用戶的權(quán)限的控制,該用戶也絕對(duì)沒(méi)有登陸系統(tǒng)的必要边灭,這里也設(shè)定他為不能登陸系統(tǒng)的用戶异希。
五、修改vsftpd配置文件
[](javascript:void(0); "復(fù)制代碼")
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">#
1. 匿名用戶的有關(guān)設(shè)置
anonymous_enable =YES/NO # 是否允許匿名用戶登錄FTP服務(wù)器绒瘦,默認(rèn)值為YES称簿。
no_anon_password =YES/NO # 控制匿名用戶登入時(shí)是否需要密碼扣癣,YES不需要,NO需要憨降。默認(rèn)值為NO父虑。
anon_world_readable_only =YES/NO # 匿名用戶是否允許下載可閱讀的文檔。默認(rèn)值為YES券册。
anon_upload_enable =YES/NO # 是否允許匿名用戶上傳文件频轿,默認(rèn)為NO。
anon_mkdir_write_enable =YES/NO # 是否允許匿名用戶有創(chuàng)建目錄的寫入權(quán)限烁焙,默認(rèn)值為NO
anon_other_write_enable=YES/NO # 是否允許匿名用戶有其他的寫入權(quán)限,如對(duì)文件改名耕赘、覆蓋及刪除文件骄蝇。默認(rèn)值為NO。
ftp_username= (自添)# 匿名用戶所使用的系統(tǒng)用戶名操骡。默認(rèn)下九火,此參數(shù)在配置文件中不出現(xiàn),默認(rèn)值為ftp册招。
anon_root=/var/ftp (自添)# 設(shè)置匿名用戶登錄后所在的目錄(默認(rèn)為/var/ftp)
anon_umask=022 (自添)# 匿名用戶所上傳文件的默認(rèn)權(quán)限掩碼值
anon_max_rate=200000 # 設(shè)置匿名用戶的最大傳輸速度岔激,單位為bytes/sec,值為0表示不限制 </pre>
[](javascript:void(0); "復(fù)制代碼")
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"># 2.本地用戶的設(shè)置
local_enable=YES|NO # 是否允許本地用戶登錄FTP服務(wù)器是掰,默認(rèn)值為YES虑鼎。
local_umask=022 # 本地用戶上傳文件的默認(rèn)權(quán)限掩碼值
local_max_rate=500000 # 設(shè)置本地用戶的最大傳輸速度,單位為bytes/sec键痛,值為0時(shí)表示不限制
local_root=/var/ftp (自添)# 設(shè)置本地用戶登錄后所在目錄(缺省為為用戶主目錄)炫彩。如:user1用戶為:/home/user1</pre>
](javascript:void(0); "復(fù)制代碼")
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"># 3. 全局設(shè)置
write_enable=YES|NO # 允許用戶訪問(wèn)時(shí),是否允許他們有寫入的權(quán)限,默認(rèn)值為YES絮短。
listen=YES|NO # 設(shè)置vsftpd服務(wù)器是否以獨(dú)立(standalone)模式運(yùn)行 江兢,默認(rèn)值為YES,建議不要更改丁频。很多與服務(wù)器運(yùn)行相關(guān)的配置命令杉允,需要此運(yùn)行模式才有效。若設(shè)置為NO席里,則vsftpd不是以獨(dú)立的服務(wù)運(yùn)行叔磷,要受xinetd服務(wù)的管理控制,功能上會(huì)受限制胁勺。
listen_port=21 # 設(shè)置FTP服務(wù)器建立連接所偵聽(tīng)的端口世澜,默認(rèn)值為21。
max_clients=0 # 設(shè)置FTP服務(wù)器所允許的最大客戶端連接數(shù)署穗,默認(rèn)值為0寥裂,表示不限制嵌洼。若設(shè)置為150時(shí),則同時(shí)允許有150個(gè)連接封恰,超出的將拒絕建立連接麻养。只有在以standalone模式運(yùn)行時(shí)才有效。
max_per_ip=5 # 設(shè)置每個(gè)IP地址允許與FTP服務(wù)器同時(shí)建立連接的數(shù)目诺舔。默認(rèn)為0鳖昌,不受限制。通车挽可對(duì)此配置進(jìn)行設(shè)置许昨,防止同一個(gè)用戶建立太多的連接。只有在以standalone模式運(yùn)行時(shí)才有效褥赊。
xferlog_enable=YES # 是否啟用日志
xferlog_file=var/log/vsftpd.log # 設(shè)置日志文件名及路徑糕档。需啟用xferlog_enable選項(xiàng)
xferlog_std_format=YES # 是否用標(biāo)準(zhǔn)格式存儲(chǔ)日志
pam_service_name=vsftpd # 設(shè)置PAM認(rèn)證服務(wù)的配置文件名,該文件位于/etc/pam.d目錄下
3. 全局設(shè)置——?dú)g迎信息
ftpd_banner=Welcome blah FTP service # 這邊可定義歡迎話語(yǔ)的字符串,相較于banner_file 是檔案的形式拌喉,而ftpd_banner 是字串的格式速那。預(yù)設(shè)為無(wú)。
banner_file =/etc/vsftpd/banner # 當(dāng)使用者登入時(shí)尿背,會(huì)顯示此設(shè)定所在的文件的內(nèi)容端仰,通常為歡迎話語(yǔ)或是說(shuō)明。默認(rèn)值為無(wú)田藐。
dirmessage_enable =YES # 如果啟動(dòng)這個(gè)選項(xiàng)荔烧,使用者第一次進(jìn)入一個(gè)目錄時(shí),會(huì)檢查該目錄下是否有.message這個(gè)檔案坞淮,若是有茴晋,則會(huì)出現(xiàn)此檔案的內(nèi)容,通常這個(gè)檔案會(huì)放置歡迎話語(yǔ)回窘,或是對(duì)該目錄的說(shuō)明诺擅。默認(rèn)值為開啟。
message_file=.message # 設(shè)置目錄消息文件啡直。當(dāng)使用者第一次進(jìn)入一個(gè)目錄時(shí)烁涌,是否顯示該目錄中的.message文件(需用編輯器手工創(chuàng)建)的內(nèi)容,該文件通常放置歡迎話語(yǔ)酒觅,或是對(duì)該目錄的說(shuō)明信息 </pre>
](javascript:void(0); "復(fù)制代碼")
](javascript:void(0); "復(fù)制代碼")
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"># 4. 控制用戶是否允許切換到上級(jí)目錄
1)配置所有登錄不能改變自己的FTP根目錄(本地用戶是否鎖定在宿主目錄中椭迎,要對(duì)本地用戶查看效果皿曲,需先設(shè)置 local_root=/var/ftp )
chroot_local_user=YES|NO # 2)配置部分賬戶不允許改變自己的FTP根目錄 #chroot_list_enable=YES|NO # 是否啟用chroot_list_file配置項(xiàng)指定的用戶列表文件 #chroot_list_file=/etc/vsftpd/chroot_list # 此文件需自己建立,被列入此文件的用戶,在登錄后將不能切換到自己目錄以外的其他目錄
chroot_list中的用戶未鎖定建炫, chroot_list外的用戶鎖定
chroot_list_enable=YES
chroot_local_user=NO # chroot_list中的用戶鎖定, chroot_list外的用戶未鎖定
chroot_list_enable=NO
chroot_local_user=YES # 所有用戶鎖定
chroot_list_enable=NO
chroot_local_user=NO # 所有用戶未鎖定
chroot_list_enable=YES
chroot_local_user=YES</pre>
](javascript:void(0); "復(fù)制代碼")
[](javascript:void(0); "復(fù)制代碼")
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"># 5. 設(shè)置訪問(wèn)控制 # 1)設(shè)置允許或不允許訪問(wèn)的主機(jī)
tcp_wrappers=YES # 設(shè)置vsftpd服務(wù)器是否與tcp wrapper相結(jié)合,進(jìn)行主機(jī)的訪問(wèn)控制。默認(rèn)為YES仗扬,vsftpd服務(wù)器會(huì)檢查/etc/hosts.allow和/etc/hosts.deny中的設(shè)置,以決定請(qǐng)求連接的主機(jī)是否允許訪問(wèn)該FTP服務(wù)器蕾额。這兩個(gè)文件可以起到簡(jiǎn)易的防火墻功能早芭。 # 如:若僅允許192.168.168.1~192.168.168.254的用戶,可以訪問(wèn)連接vsftpd服務(wù)器诅蝶,則可在/etc/hosts.allow文件中添加以下內(nèi)容:
vsftpd:192.168.168.0/255.255.255.0 :allow
all:all:deny # 2)設(shè)置允許或不允許訪問(wèn)的用戶 # 對(duì)用戶的訪問(wèn)控制由/etc/vsftpd/user_list和/etc/vsftpd/ftpusers文件來(lái)控制實(shí)現(xiàn)退个。 # 相關(guān)配置命令如下:
userlist_enable=YES | NO # 設(shè)置/etc/vsftpd/user_list文件是否啟用生效。YES則生效调炬,NO不生效语盈。
userlist_deny=YES | NO #設(shè)置/etc/vsftpd/user_list文件中的用戶是允許訪問(wèn)還是不允許訪問(wèn)。 # 若設(shè)置為YES缰泡,則/etc/vsftpd/user_list文件中的用戶將不允許訪問(wèn)FTP服務(wù)器黎烈;若設(shè)置為NO,則只有vsftpd.user_list文件中的用戶匀谣,才能訪問(wèn)FTP服務(wù)器。</pre>
](javascript:void(0); "復(fù)制代碼")
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"># 用戶文件列表
/etc/vsftpd/ftpusers # 指定了不允許訪問(wèn)FTP服務(wù)器的本地用戶賬號(hào)(黑名單) 资溃,例如root等武翎。這些賬號(hào)不是普通用戶賬號(hào),而是在系統(tǒng)中具有較高權(quán)限的賬號(hào)溶锭,禁止這些賬號(hào)進(jìn)行FTP登錄可提高系統(tǒng)的安全性宝恶。
/etc/vsftpd/user_list # 指定允許或不允許登陸的用戶列表,使用起來(lái)比f(wàn)tpusers更加靈活趴捅。需要在主配置文件中進(jìn)行設(shè)置垫毙,如下圖</pre>
<colgroup style="margin: 0px; padding: 0px;"><col width="241" style="margin: 0px; padding: 0px;"><col width="654" style="margin: 0px; padding: 0px;"></colgroup>
|
userlist_enable=YES
userlist_deny=YES
|
●ftpusers中用戶禁止訪問(wèn)
● user_list中用戶禁止訪問(wèn)(登錄時(shí)不會(huì)出現(xiàn)密碼提示,直接被服務(wù)器拒絕 )
●其他的ftp用戶都可以登錄
|
|
userlist_enable=YES
userlist_deny=NO
|
●只允許 user_list中的用戶訪問(wèn)
●其他的ftp用戶都不可以登錄
|
](javascript:void(0); "復(fù)制代碼")
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"># 6.設(shè)置用戶配置文件所在的目錄 # 在vsftpd服務(wù)器中拱绑,不同用戶還可使用不同的配置综芥,這要通過(guò)用戶配置文件來(lái)實(shí)現(xiàn)。
user_config_dir=/etc/vsftpd/userconf # 用于設(shè)置用戶配置文件所在的目錄猎拨。
設(shè)置了該配置項(xiàng)后膀藐,當(dāng)用戶登錄FTP服務(wù)器時(shí),系統(tǒng)就會(huì)到/etc/vsftpd/userconf目錄下讀取與當(dāng)前用戶名相同的文件红省,并根據(jù)文件中的配置命令额各,對(duì)當(dāng)前用戶進(jìn)行更進(jìn)一步的配置。比如吧恃,利用用戶配置文件虾啦,可實(shí)現(xiàn)對(duì)不同用戶進(jìn)行訪問(wèn)的速度進(jìn)行控制,在各用戶配置文件中,定義local_max_rate配置傲醉,以決定該用戶允許的訪問(wèn)速度蝇闭。</pre>
[](javascript:void(0); "復(fù)制代碼")
[](javascript:void(0); "復(fù)制代碼")
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"># 7.FTP工作方式與服務(wù)端口
connect_from_port_20=Y(jié)ES|NO # 指定FTP數(shù)據(jù)傳輸連接是否使用20端口,默認(rèn)值為YES 需频。若設(shè)置為NO丁眼,則進(jìn)行數(shù)據(jù)連接時(shí),所使用的端口由ftp_data_port指定
ftp_data_port=20 # 設(shè)置PORT方式下FTP數(shù)據(jù)連接所使用的端口昭殉,默認(rèn)值為20苞七。
pasv_enable=YES|NO # 若設(shè)置為YES,則使用PASV工作模式挪丢;若設(shè)置為NO蹂风,使用PORT模式。默認(rèn)為YES乾蓬,即使用PASV模式惠啄。
pasv_max_port=0 # 設(shè)置在PASV工作方式下,數(shù)據(jù)連接可以使用的端口范圍的上界任内。默認(rèn)值為0撵渡,表示任意端口。
pasv_mim_port=0 # 設(shè)置在PASV工作方式下死嗦,數(shù)據(jù)連接可以使用的端口范圍的下界趋距。默認(rèn)值為0,表示任意端口越除。 </pre>
](javascript:void(0); "復(fù)制代碼")
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"># 8.設(shè)置傳輸模式 # FTP在傳輸數(shù)據(jù)時(shí)节腐,可使用二進(jìn)制(Binary)方式,也可使用ASCII模式來(lái)上傳或下載數(shù)據(jù)摘盆。
ascii_download_enable=YES # 設(shè)置是否啟用ASCII模式下載數(shù)據(jù)翼雀。默認(rèn)為NO
ascii_upload_enable=YES # 設(shè)置是否啟用ASCII模式上傳數(shù)據(jù)。默認(rèn)為NO</pre>
1.編輯配置文件前先備份
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">[root@VM_0_10_centos tmp]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.backup</pre>
內(nèi)容如下:
[](javascript:void(0); "復(fù)制代碼")
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">[root@VM_0_10_centos tmp]# cat /etc/vsftpd/vsftpd.conf
Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=YES
# 是否允許匿名用戶訪問(wèn)孩擂,默認(rèn)為YES狼渊,這里設(shè)置不允許匿名訪問(wèn)
anonymous_enable=NO
Uncomment this to allow local users to log in.
When SELinux is enforcing check for SE bool ftp_home_dir
# 設(shè)置本地用戶可以訪問(wèn)。PS:主要為虛擬宿主用戶肋殴,如該項(xiàng)目設(shè)定為No囤锉,那么所有虛擬用戶將無(wú)法訪問(wèn)
local_enable=YES
Uncomment this to enable any form of FTP write command.
# 設(shè)置可進(jìn)行寫操作
write_enable=YES
Default umask for local users is 077. You may wish to change this to 022,
if your users expect that (022 is used by most other ftpd's)
# 設(shè)置上傳后文件的權(quán)限掩碼
local_umask=022
Uncomment this to allow the anonymous FTP user to upload files. This only
has an effect if the above global write enable is activated. Also, you will
obviously need to create a directory writable by the FTP user.
When SELinux is enforcing check for SE bool allow_ftpd_anon_write, allow_ftpd_full_access
anon_upload_enable=YES
# 禁止匿名用戶上傳文件
anonymous_enable=NO
Uncomment this if you want the anonymous FTP user to be able to create
new directories.
anon_mkdir_write_enable=YES
# 禁止匿名用戶建立目錄
anon_mkdir_write_enable=NO
Activate directory messages - messages given to remote users when they
go into a certain directory.
# 設(shè)置開啟目錄標(biāo)語(yǔ)功能
dirmessage_enable=YES
Activate logging of uploads/downloads.
# 開啟日志記錄功能
xferlog_enable=YES
Make sure PORT transfer connections originate from port 20 (ftp-data).
# 設(shè)置端口20進(jìn)行數(shù)據(jù)庫(kù)連接
connect_from_port_20=YES
If you want, you can arrange for uploaded anonymous files to be owned by
a different user. Note! Using "root" for uploaded files is not
recommended!
chown_uploads=YES
chown_username=whoever
# 設(shè)置禁止上傳文件更改宿主
chown_uploads=NO
You may override where the log file goes if you like. The default is shown
below.
xferlog_file=/var/log/xferlog
**# 設(shè)置vsftpd服務(wù)日志保存路徑。PS:該文件默認(rèn)不存在护锤,須手動(dòng)創(chuàng)建官地。
由于這里手動(dòng)更改了vsftpd宿主用戶為vsftpd,須注意給與改用戶對(duì)日志的寫入權(quán)限**
xferlog_file=/var/log/vsftpd.log
If you want, you can have your log file in standard ftpd xferlog format.
Note that the default log file location is /var/log/xferlog in this case.
# 設(shè)置日志使用標(biāo)準(zhǔn)的記錄格式
xferlog_std_format=YES
You may change the default value for timing out an idle session.
**# 設(shè)置空閑連接超時(shí)時(shí)間烙懦,這里使用默認(rèn)驱入。
將具體數(shù)值留給每個(gè)具體用戶具體指定,當(dāng)然如果不指定的話,還是使用這里的默認(rèn)值600亏较,單位秒**
idle_session_timeout=600
You may change the default value for timing out a data connection.
**# 設(shè)定單次最大連續(xù)傳輸時(shí)間莺褒,這里使用默認(rèn)。
將具體數(shù)值留給每個(gè)具體用戶具體指定雪情,當(dāng)然如果不指定的話遵岩,還是使用這里的默認(rèn)值120,單位秒巡通。**
data_connection_timeout=120
It is recommended that you define on your system a unique user which the
ftp server can use as a totally isolated and unprivileged user.
nopriv_user=ftpsecure
**# 設(shè)定支撐Vsftpd服務(wù)的宿主用戶為手動(dòng)建立的Vsftpd用戶尘执。
PS:一旦做出更改宿主用戶后,必須注意一起與該服務(wù)相關(guān)的讀寫文件的讀寫賦權(quán)問(wèn)題宴凉。比如日志文件就必須給與該用戶寫入權(quán)限等誊锭。**
nopriv_user=vsftpd
Enable this and the server will recognise asynchronous ABOR requests. Not
recommended for security (the code is non-trivial). Not enabling it,
however, may confuse older FTP clients.
# 設(shè)置支持異步傳輸功能
async_abor_enable=YES
ASCII mangling is a horrible feature of the protocol.
# 設(shè)置支持ASCII模式上傳和下載功能
ascii_upload_enable=YES
ascii_download_enable=YES
You may fully customise the login banner string:
ftpd_banner=Welcome to blah FTP service.
# 設(shè)置vsftpd的登錄標(biāo)語(yǔ)
ftpd_banner=This Vsftp server supports virtual users _
You may specify a file of disallowed anonymous e-mail addresses. Apparently
useful for combatting certain DoS attacks.
deny_email_enable=YES
(default follows)
banned_email_file=/etc/vsftpd/banned_emails
You may specify an explicit list of local users to chroot() to their home
directory. If chroot_local_user is YES, then this list becomes a list of
users to NOT chroot().
(Warning! chroot'ing can be very dangerous. If using chroot, make sure that
the user does not have write access to the top level directory within the
chroot)
chroot_local_user=YES
chroot_list_enable=YES
# 禁止用戶登出自己的ftp主目錄
chroot_list_enable=NO
(default follows)
chroot_list_file=/etc/vsftpd/chroot_list
You may activate the "-R" option to the builtin ls. This is disabled by
default to avoid remote users being able to cause excessive I/O on large
sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
the presence of the "-R" option, so there is a strong case for enabling it.
ls_recurse_enable=YES
# 禁止用戶登錄ftp后使用"ls -R"命令。該命令會(huì)對(duì)服務(wù)器性能造成巨大開銷弥锄。如果該項(xiàng)被允許丧靡,那么擋多用戶同時(shí)使用該命令時(shí)將會(huì)對(duì)該服務(wù)器造成威脅。
ls_recurse_enable=NO
When "listen" directive is enabled, vsftpd runs in standalone mode and
listens on IPv4 sockets. This directive cannot be used in conjunction
with the listen_ipv6 directive.
listen=NO
**# 設(shè)定該Vsftpd服務(wù)工作在StandAlone模式下籽暇。
順便展開說(shuō)明一下温治,所謂StandAlone模式就是該服務(wù)擁有自己的守護(hù)進(jìn)程支持,
在ps -A命令下我們將可用看到vsftpd的守護(hù)進(jìn)程名戒悠。如果不想工作在StandAlone模式下罐盔,則可以選擇SuperDaemon模式,
在該模式下 vsftpd將沒(méi)有自己的守護(hù)進(jìn)程救崔,而是由超級(jí)守護(hù)進(jìn)程Xinetd全權(quán)代理,與此同時(shí)捏顺,Vsftp服務(wù)的許多功能將得不到實(shí)現(xiàn)**
listen=YES
This directive enables listening on IPv6 sockets. By default, listening
on the IPv6 "any" address (::) will accept connections from both IPv6
and IPv4 clients. It is not necessary to listen on both IPv4 and IPv6
sockets. If you want that (perhaps because you want to listen on specific
addresses) then you must run two copies of vsftpd with two configuration
files.
Make sure, that one of the listen options is commented !!</pre>
# listen_ipv6=YES
# 設(shè)置pam服務(wù)下vsftpd的驗(yàn)證配置文件名六孵。因此,PAM驗(yàn)證將參考/etc/pam.d/下的vsftpd文件配置
pam_service_name=vsftpd
# 設(shè)定userlist_file中的用戶將不得使用FTP幅骄。
userlist_enable=YES
# 設(shè)定支持TCP Wrappers劫窒。
tcp_wrappers=YES
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">**# 以下這些是關(guān)于Vsftpd虛擬用戶支持的重要配置項(xiàng)目。默認(rèn)Vsftpd.conf中不包含這些設(shè)定項(xiàng)目拆座,需要自己手動(dòng)添加配置主巍。
設(shè)置啟用虛擬用戶功能**
guest_enable=YES
# 指定虛擬用戶宿主用戶
guest_username=vrvsftpd
# 設(shè)定虛擬用戶的權(quán)限符合他們的宿主用戶。
virtual_use_local_privs=YES
**# 設(shè)定虛擬用戶個(gè)人Vsftp的配置文件存放路徑挪凑。
也就是說(shuō)孕索,這個(gè)被指定的目錄里,將存放每個(gè)Vsftp虛擬用戶個(gè)性的配置文件躏碳,一個(gè)需要注意的地方就是這些配置文件名必須和虛擬用戶名相同搞旭。**
user_config_dir=/etc/vsftpd/vconf</pre>
[](javascript:void(0); "復(fù)制代碼")
3.建立Vsftpd的日志文件,并更該屬主為Vsftpd的服務(wù)宿主用戶
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">[root@VM_0_10_centos tmp]# touch /var/log/vsftpd.log
[root@VM_0_10_centos tmp]# chown vsftpd.vsftpd /var/log/vsftpd.log</pre>
4.建立虛擬用戶配置文件存放路徑
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">[root@VM_0_10_centos tmp]# mkdir /etc/vsftpd/vconf</pre>
六、制作虛擬用戶數(shù)據(jù)庫(kù)文件
1.先建立虛擬用戶名單文件
建立了一個(gè)虛擬用戶名單文件肄渗,這個(gè)文件就是來(lái)記錄vsftpd虛擬用戶的用戶名和口令的數(shù)據(jù)文件镇眷,我這里給它命名為virtusers。為了避免文件的混亂翎嫡,我把這個(gè)名單文件就放置在/etc/vsftpd/下欠动。
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">[root@VM_0_10_centos tmp]# touch /etc/vsftpd/virtusers</pre>
2.編輯虛擬用戶名單文件
格式為:“一行用戶名,一行口令”惑申。
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">[root@VM_0_10_centos tmp]# cat /etc/vsftpd/virtusers
zs
設(shè)置的密碼
thy
設(shè)置的密碼</pre>
3.生成虛擬用戶數(shù)據(jù)文件
db_load主要用來(lái)生成db數(shù)據(jù)庫(kù)使用具伍。在Vsftpd的虛擬用戶設(shè)置中先新建一個(gè)文件users.txt 把用戶名密碼放入其中
接著 db_load -T -t hash -f */users.txt */users.db
PS: * 表示目錄
這樣就生成了一個(gè)users.db文件(hash碼型的數(shù)據(jù)庫(kù)文件)
參考網(wǎng)址:http://blog.itpub.net/20943428/viewspace-661714/
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">[root@VM_0_10_centos tmp]# db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db</pre>
參數(shù):
選項(xiàng)-T允許應(yīng)用程序能夠?qū)⑽谋疚募D(zhuǎn)譯載入進(jìn)數(shù)據(jù)庫(kù)。由于我們之后是將虛擬用戶的信息以文件方式存儲(chǔ)在文件里的硝桩,為了讓Vsftpd這個(gè)應(yīng)用程序能夠通過(guò)文本來(lái)載入用戶數(shù)據(jù)沿猜,必須要使用這個(gè)選項(xiàng)。
子選項(xiàng)-t碗脊,追加在在-T選項(xiàng)后啼肩,用來(lái)指定轉(zhuǎn)譯載入的數(shù)據(jù)庫(kù)類型。擴(kuò)展介紹下衙伶,-t可以指定的數(shù)據(jù)類型有Btree祈坠、Hash、Queue和Recon數(shù)據(jù)庫(kù)
** PS:如果指定了選項(xiàng)-T矢劲,那么一定要追跟子選項(xiàng) -t**
4.察看生成的虛擬用戶數(shù)據(jù)文件
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">[root@VM_0_10_centos tmp]# ll /etc/vsftpd/virtusers.db
-rw-r--r-- 1 root root 12288 Oct 9 11:02 /etc/vsftpd/virtusers.db</pre>
PS:以后再添加虛擬用戶的時(shí)候赦拘,只需要按照“一行用戶名,一行口令”的格式將新用戶名和口令添加進(jìn)虛擬用戶名單文件芬沉。但是光這樣做還不夠躺同,不會(huì)生效的哦!還要再執(zhí)行一遍“ db_load -T -t hash -f 虛擬用戶名單文件 虛擬用戶數(shù)據(jù)庫(kù)文件.db ”的命令使其生效才可以丸逸!
七蹋艺、設(shè)定PAM驗(yàn)證文件,并指定虛擬用戶數(shù)據(jù)庫(kù)文件進(jìn)行讀取
1.察看原來(lái)的Vsftp的PAM驗(yàn)證配置文件
[](javascript:void(0); "復(fù)制代碼")
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">[root@VM_0_10_centos tmp]# cat /etc/pam.d/vsftpd
%PAM-1.0
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth required pam_shells.so
auth include password-auth
account include password-auth
session required pam_loginuid.so
session include password-auth</pre>
](javascript:void(0); "復(fù)制代碼")
2.在編輯前做好備份
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">[root@VM_0_10_centos tmp]# cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.backup
[root@VM_0_10_centos tmp]# vi /etc/pam.d/vsftpd </pre>
內(nèi)容如下
[](javascript:void(0); "復(fù)制代碼")
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">[root@VM_0_10_centos tmp]# vi /etc/pam.d/vsftpd
%PAM-1.0
session optional pam_keyinit.so force revoke
以下兩條是手動(dòng)添加的黄刚,內(nèi)容是對(duì)虛擬用戶的安全和帳戶權(quán)限進(jìn)行驗(yàn)證捎谨。
這里的auth是指對(duì)用戶的用戶名口令進(jìn)行驗(yàn)證
auth sufficient /usr/lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
這里的accout是指對(duì)用戶的帳戶有哪些權(quán)限哪些限制進(jìn)行驗(yàn)證。
其后的sufficient表示充分條件憔维,也就是說(shuō)涛救,一旦在這里通過(guò)了驗(yàn)證,那么也就不用經(jīng)過(guò)下面剩下的驗(yàn)證步驟了业扒。
相反检吆,如果沒(méi)有通過(guò)的話,也不會(huì)被系統(tǒng)立即擋之門外程储,因?yàn)閟ufficient的失敗不決定整個(gè)驗(yàn)證的失敗咧栗,意味著用戶還必須將經(jīng)歷剩下來(lái)>的驗(yàn)證審核逆甜。
account sufficient /usr/lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
后面的/lib/security/pam_userdb.so表示該條審核將調(diào)用pam_userdb.so這個(gè)庫(kù)函數(shù)進(jìn)行。
最后的db=/etc/vsftpd/virtusers則指定了驗(yàn)證庫(kù)函數(shù)將到這個(gè)指定的數(shù)據(jù)庫(kù)中調(diào)用數(shù)據(jù)進(jìn)行驗(yàn)證致板。
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth required pam_shells.so
auth include password-auth
account include password-auth
session required pam_loginuid.so
session include password-auth</pre>
](javascript:void(0); "復(fù)制代碼")
八交煞、虛擬用戶的配置
1.規(guī)劃好虛擬用戶的主路徑
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">[root@VM_0_10_centos tmp]# mkdir /opt/vsftpd</pre>
2.建立測(cè)試用戶的FTP用戶目錄
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">[root@VM_0_10_centos tmp]# mkdir /opt/vsftpd/{zs,thy}
[root@VM_0_10_centos tmp]# ls /opt/vsftpd/
thy zs</pre>
3.建立虛擬用戶配置文件模版
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">[root@VM_0_10_centos tmp]# cp /etc/vsftpd/vsftpd.conf.backup /etc/vsftpd/vconf/vconf.tmp</pre>
4.定制虛擬用戶模版配置文件
[](javascript:void(0); "復(fù)制代碼")
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">[root@VM_0_10_centos tmp]# vi /etc/vsftpd/vconf/vconf.tmp
指定虛擬用戶的具體主路徑。
local_root=/opt/vsftpd/virtuser
設(shè)定不允許匿名用戶訪問(wèn)斟或。
anonymous_enable=NO
設(shè)定允許寫操作素征。
write_enable=YES
設(shè)定上傳文件權(quán)限掩碼。
local_umask=022
設(shè)定不允許匿名用戶上傳萝挤。
anon_upload_enable=NO
設(shè)定不允許匿名用戶建立目錄御毅。
anon_mkdir_write_enable=NO
設(shè)定空閑連接超時(shí)時(shí)間。
idle_session_timeout=600
設(shè)定單次連續(xù)傳輸最大時(shí)間怜珍。
data_connection_timeout=120
設(shè)定并發(fā)客戶端訪問(wèn)個(gè)數(shù)端蛆。
max_clients=10
設(shè)定單個(gè)客戶端的最大線程數(shù),這個(gè)配置主要來(lái)照顧Flashget酥泛、迅雷等多線程下載軟件今豆。
max_per_ip=5
設(shè)定該用戶的最大傳輸速率,單位b/s柔袁。
local_max_rate=50000</pre>
[](javascript:void(0); "復(fù)制代碼")
這里將原vsftpd.conf配置文件經(jīng)過(guò)簡(jiǎn)化后保存作為虛擬用戶配置文件的模版呆躲。將并不需要指定太多的配置內(nèi)容,主要的框架和限制交由 Vsftpd的主配置文件vsftpd.conf來(lái)定義捶索,即虛擬用戶配置文件當(dāng)中沒(méi)有提到的配置項(xiàng)目將參考主配置文件中的設(shè)定插掂。而在這里作為虛擬用戶的配置文件模版只需要留一些和用戶流量控制,訪問(wèn)方式控制的配置項(xiàng)目就可以了腥例。這里的關(guān)鍵項(xiàng)是local_root這個(gè)配置辅甥,用來(lái)指定這個(gè)虛擬用戶的FTP主路徑。
5.更改虛擬用戶的主目錄的屬主為虛擬宿主用戶:
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">[root@VM_0_10_centos tmp]# chown -R vrvsftpd.vrvsftpd /opt/vsftpd/
[root@VM_0_10_centos tmp]# ll /opt/vsftpd/
total 8
drwxr-xr-x 2 vrvsftpd vrvsftpd 4096 Oct 9 11:24 thy
drwxr-xr-x 2 vrvsftpd vrvsftpd 4096 Oct 9 11:24 zs</pre>
九燎竖、給測(cè)試用戶定制
1.從虛擬用戶模版配置文件復(fù)制
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">[root@VM_0_10_centos tmp]# cp /etc/vsftpd/vconf/vconf.tmp /etc/vsftpd/vconf/thy</pre>
2.針對(duì)具體用戶進(jìn)行定制
[](javascript:void(0); "復(fù)制代碼")
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">[root@VM_0_10_centos tmp]# vi /etc/vsftpd/vconf/thy
指定虛擬用戶的具體主路徑肆氓。
local_root=/opt/vsftpd/thy
設(shè)定不允許匿名用戶訪問(wèn)。
anonymous_enable=NO
設(shè)定允許寫操作底瓣。
write_enable=YES
設(shè)定上傳文件權(quán)限掩碼。
local_umask=022
設(shè)定不允許匿名用戶上傳蕉陋。
anon_upload_enable=NO
設(shè)定不允許匿名用戶建立目錄捐凭。
anon_mkdir_write_enable=NO
設(shè)定空閑連接超時(shí)時(shí)間。
idle_session_timeout=300
設(shè)定單次連續(xù)傳輸最大時(shí)間凳鬓。
data_connection_timeout=90
設(shè)定并發(fā)客戶端訪問(wèn)個(gè)數(shù)茁肠。
max_clients=1
設(shè)定單個(gè)客戶端的最大線程數(shù),這個(gè)配置主要來(lái)照顧Flashget缩举、迅雷等多線程下載軟件垦梆。
max_per_ip=1
設(shè)定該用戶的最大傳輸速率,單位b/s。
local_max_rate=25000</pre>
[](javascript:void(0); "復(fù)制代碼")
十廉赔、啟動(dòng)服務(wù)
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">[root@VM_0_10_centos tmp]# systemctl restart vsftpd
[root@VM_0_10_centos tmp]# systemctl status vsftpd</pre>
十一碘箍、測(cè)試
1.在虛擬用戶目錄中預(yù)先放入文件
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">[root@VM_0_10_centos tmp]# touch /opt/vsftpd/thy/thy.test</pre>
2.從其他機(jī)器作為客戶端登陸FTP
前提這臺(tái)機(jī)器安裝了ftp服務(wù),能使用ftp命令
解決:
可能是pam問(wèn)題京腥,上面配置vsftpd.conf配置文件時(shí)赦肃,沒(méi)有開啟pam的驗(yàn)證,將pam驗(yàn)證開啟即可
參考網(wǎng)址:https://blog.csdn.net/junjunjiao/article/details/50738009
測(cè)試登錄:
3.測(cè)試列單操作
解決:
將主動(dòng)改為被動(dòng)公浪,然后重新登錄ftp
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">ftp> passive
Passive mode on.</pre>
參考網(wǎng)址:https://blog.csdn.net/indexman/article/details/42649329
4.測(cè)試上傳操作
參數(shù)使用格式參考網(wǎng)址:https://www.jb51.net/article/124033.htm
首先現(xiàn)在客戶端服務(wù)器上當(dāng)前目錄創(chuàng)建hello.txt文件他宛,登錄ftp,測(cè)試上傳
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">[root@VM_0_16_centos ~]# touch hello.txt</pre>
[](javascript:void(0); "復(fù)制代碼")
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">[root@VM_0_16_centos ~]# ftp
ftp> ls
227 Entering Passive Mode (106,53,73,200,241,96).
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 0 Oct 09 03:51 thy.test
226 Directory send OK.
ftp> put
(local-file) hello.txt
(remote-file) ftp_hello.txt
local: hello.txt remote: ftp_hello.txt
227 Entering Passive Mode (106,53,73,200,91,237).
150 Ok to send data.
226 Transfer complete.
30 bytes sent in 3e-05 secs (1000.00 Kbytes/sec)</pre>
](javascript:void(0); "復(fù)制代碼")
在vsftpd服務(wù)端就能看到剛剛上傳的文件了
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">[root@VM_0_10_centos tmp]# ls /opt/vsftpd/thy/
ftp_hello.txt thy.test</pre>
5.測(cè)試建立目錄操作
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">ftp> mkdir ftp_test
257 "/opt/vsftpd/thy/ftp_test" created</pre>
6.測(cè)試下載操作
需要下載的文件欠气,vsftpd服務(wù)端必須要有這個(gè)文件才行
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">ftp> get thy.test
local: thy.test remote: thy.test
227 Entering Passive Mode (106,53,73,200,245,241).
150 Opening BINARY mode data connection for thy.test (0 bytes).
226 Transfer complete.</pre>
在/etc/vsftpd/vsftpd.conf中厅各,local_enable的選項(xiàng)必須打開為Yes,使得虛擬用戶的訪問(wèn)成為可能预柒,否則會(huì)出現(xiàn)以下現(xiàn)象:
<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">[root@KcentOS5 ~]# ftp
ftp> open ip地址
Connected to ip地址.
500 OOPS: vsftpd: both local and anonymous access disabled!</pre>
原因:虛擬用戶再豐富队塘,其實(shí)也是基于它們的宿主用戶overlord的,如果overlord這個(gè)虛擬用戶的宿主被限制住了卫旱,那么虛擬用戶也將受到限制人灼。
補(bǔ)充:
500 OOPS:錯(cuò)誤
有可能是你的vsftpd.con配置文件中有不能被識(shí)別的命令,還有一種可能是命令的YES 或 NO 后面有空格顾翼。
550 權(quán)限錯(cuò)誤,不能創(chuàng)建目錄和文件
解決方法: 關(guān)閉selinux
vi /etc/selinux/config
將 SELINUX=XXX -->XXX 代表級(jí)別
改為
SELINUX=disabled
修改配置文件需要重啟
7投放、通過(guò)瀏覽器訪問(wèn)
輸入配置的用戶名和密碼即可
[圖片上傳中...(image-df89e1-1598613491561-34)]