文件傳輸協(xié)議(File Transfer Protocol,F(xiàn)TP),基于該協(xié)議FTP客戶端與服務(wù)端可以實(shí)現(xiàn)共享文件、上傳文件、下載文件。 FTP 基于TCP協(xié)議生成一個(gè)虛擬的連接,主要用于控制FTP連接信息,同時(shí)再生成一個(gè)單獨(dú)的TCP連接用于FTP數(shù)據(jù)傳輸。用戶可以通過(guò)客戶端向FTP服務(wù)器端上傳、下載、刪除文件,F(xiàn)TP服務(wù)器端可以同時(shí)提供給多人共享使用。
成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括渭源網(wǎng)站建設(shè)、渭源網(wǎng)站制作、渭源網(wǎng)頁(yè)制作以及渭源網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,渭源網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到渭源省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!FTP服務(wù)是Client/Server(簡(jiǎn)稱C/S)模式,基于FTP協(xié)議實(shí)現(xiàn)FTP文件對(duì)外共享及傳輸?shù)能浖Q之為FTP服務(wù)器源端,客戶端程序基于FTP協(xié)議,則稱之為FTP客戶端,F(xiàn)TP客戶端可以向FTP服務(wù)器上傳、下載文件。
FTP基于C/S模式,F(xiàn)TP客戶端與服務(wù)器端有兩種傳輸模式,分別是FTP主動(dòng)模式、FTP被動(dòng)模式,主被動(dòng)模式均是以FTP服務(wù)器端為參照。主被動(dòng)模式如圖1-2(a)、1-2(b)所示,主被動(dòng)模式詳細(xì)區(qū)別如下:
(1)FTP主動(dòng)模式:客戶端從一個(gè)任意的端口N(N>1024)連接到FTP服務(wù)器的port 21命令端口,客戶端開始監(jiān)聽端口N+1,并發(fā)送FTP命令“port N+1”到FTP服務(wù)器,F(xiàn)TP服務(wù)器以數(shù)據(jù)端口(20)連接到客戶端指定的數(shù)據(jù)端口(N+1)。
(2)FTP被動(dòng)模式:客戶端從一個(gè)任意的端口N(N>1024)連接到FTP服務(wù)器的port 21命令端口,客戶端開始監(jiān)聽端口N+1,客戶端提交 PASV命令,服務(wù)器會(huì)開啟一個(gè)任意的端口(P >1024),并發(fā)送PORT P命令給客戶端??蛻舳税l(fā)起從本地端口N+1到服務(wù)器的端口P的連接用來(lái)傳送數(shù)據(jù)。
在企業(yè)實(shí)際環(huán)境中,如果FTP客戶端與FTP服務(wù)端均開放防火墻,F(xiàn)TP需以主動(dòng)模式工作,這樣只需要在FTP服務(wù)器端防火墻規(guī)則中,開放20、21端口即可。關(guān)于防火墻配置后面章節(jié)會(huì)講解。
圖1-2(a) FTP主動(dòng)模式
-------------------------------------------------------------------------------------------------------
圖1-2(b) FTP被動(dòng)模式
目前主流的FTP服務(wù)器端軟件包括:Vsftpd、ProFTPD、PureFTPd、Wuftpd、Server-U FTP、FileZilla Server等軟件,其中Unix/Linux使用較為廣泛的FTP服務(wù)器端軟件為Vsftpd 。
非常安全的FTP服務(wù)進(jìn)程(Very Secure FTP daemon,Vsftpd),Vsftpd在Unix/Linux發(fā)行版中最主流的FTP服務(wù)器程序,優(yōu)點(diǎn)小巧輕快,安全易用、穩(wěn)定高效、滿足企業(yè)跨部門、多用戶的使用等。
Vsftpd服務(wù)器端安裝有兩種方法,一是基于YUM方式安裝,而是基于源碼編譯安裝,最終實(shí)現(xiàn)效果完全一致,本文采用YUM安裝Vsftpd,步驟如下:
(1) 在命令行執(zhí)行如下命令,如圖1-3所示:
yum install vsftpd* -y |
圖1-3 YUM安裝Vsftpd服務(wù)端
(2) 打印vsftpd安裝后的配置文件路徑、啟動(dòng)Vsftpd服務(wù)及查看進(jìn)程是否啟動(dòng),如圖1-4所示:
rpm -ql vsftpd|more systemctl restart vsftpd.service ps -ef |grep vsftpd |
圖1-4 打印Vsftpd軟件安裝后路徑
(3) Vsftpd.conf默認(rèn)配置文件詳解如下:
anonymous_enable=YES 開啟匿名用戶訪問(wèn); local_enable=YES 啟用本地系統(tǒng)用戶訪問(wèn); write_enable=YES 本地系統(tǒng)用戶寫入權(quán)限; local_umask=022 本地用戶創(chuàng)建文件及目錄默認(rèn)權(quán)限掩碼; dirmessage_enable=YES 打印目錄顯示信息,通常用于用戶第一次訪問(wèn)目錄時(shí),信息提示; xferlog_enable=YES 啟用上傳/下載日志記錄; connect_from_port_20=YES FTP使用20端口進(jìn)行數(shù)據(jù)傳輸; xferlog_std_format=YES 日志文件將根據(jù)xferlog的標(biāo)準(zhǔn)格式寫入; listen=NO Vsftpd不以獨(dú)立的服務(wù)啟動(dòng),通過(guò)Xinetd服務(wù)管理,建議改成YES; listen_ipv6=YES 啟用IPV6監(jiān)聽; pam_service_name=vsftpd 登錄FTP服務(wù)器,依據(jù)/etc/pam.d/vsftpd中內(nèi)容進(jìn)行認(rèn)證; userlist_enable=YES Vsftpd.user_list和ftpusers配置文件里用戶禁止訪問(wèn)FTP; tcp_wrappers=YES 設(shè)置vsftpd與tcp wrapper結(jié)合進(jìn)行主機(jī)的訪問(wèn)控制,Vsftpd服務(wù)器檢查/etc/hosts.allow 和/etc/hosts.deny中的設(shè)置,來(lái)決定請(qǐng)求連接的主機(jī),是否允許訪問(wèn)該FTP服務(wù)器。 |
(4) 啟動(dòng)Vsftpd服務(wù)后,通過(guò)Windows客戶端資源管理器訪問(wèn)Vsftp服務(wù)器端,如圖1-5所示:
ftp://192.168.111.131/ |
圖1-5 匿名用戶訪問(wèn)FTP默認(rèn)目錄
FTP主被動(dòng)模式,默認(rèn)為被動(dòng)模式,設(shè)置為被動(dòng)模式使用端口方法如下:
pasv_enable=YES pasv_min_port=60000 pasv_max_port=60100 |
Vsftpd默認(rèn)以匿名用戶訪問(wèn),匿名用戶默認(rèn)訪問(wèn)的FTP服務(wù)器端路徑為:/var/ftp/pub,匿名用戶只有查看權(quán)限,無(wú)法創(chuàng)建、刪除、修改。如需關(guān)閉FTP匿名用戶訪問(wèn),需修改配置文件/etc/vsftpd/vsftpd.conf,將anonymous_enable=YES修改為anonymous_enable=NO,重啟Vsftpd服務(wù)即可。
如果允許匿名用戶能夠上傳、下載、刪除文件,需在/etc/vsftpd/vsftpd.conf配置文件中加入如下代碼:
anon_upload_enable=YES 允許匿名用戶上傳文件; anon_mkdir_write_enable=YES 允許匿名用戶創(chuàng)建目錄; anon_other_write_enable=YES 允許匿名用戶其他寫入權(quán)限。 |
匿名用戶完整vsftpd.conf配置文件代碼如下:
anonymous_enable=YES local_enable=YES write_enable=YES local_umask=022 anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES |
由于默認(rèn)Vsftpd匿名用戶有兩種:anonymous、ftp,所以匿名用戶如果需要上傳文件、刪除及修改等權(quán)限,需要ftp用戶對(duì)/var/ftp/pub目錄有寫入權(quán)限,使用如下chown和chmod任意一種即可,設(shè)置命令如下:
chown -R ftp pub/ chmod o+w pub/ |
如上Vsftpd.conf配置文件配置完畢,同時(shí)權(quán)限設(shè)置完,重啟vsftpd服務(wù)即可,通過(guò)Windows客戶端訪問(wèn),能夠上傳文件、刪除文件、創(chuàng)建目錄等操作,如圖1-6所示:
圖1-6 匿名用戶訪問(wèn)上傳文件
Vsftpd匿名用戶設(shè)置完畢,匿名用戶,任何人都可以查看FTP服務(wù)器端的文件、目錄,甚至可以修改、刪除,此方案如適合存放私密文件在FTP服務(wù)器端,如何保證文件或者目錄專屬擁有者呢,Vsftpd系統(tǒng)用戶可以實(shí)現(xiàn)該需求。
實(shí)現(xiàn)Vsftpd系統(tǒng)用戶方式驗(yàn)證,只需在Linux系統(tǒng)中創(chuàng)建多個(gè)用戶即可,創(chuàng)建用戶使用useradd,同時(shí)給用戶設(shè)置密碼,即可通過(guò)用戶和密碼登錄FTP,進(jìn)行文件上傳、下載、刪除等操作。Vsftpd系統(tǒng)用戶實(shí)現(xiàn)方法步驟如下:
(1) Linux系統(tǒng)中創(chuàng)建系統(tǒng)用戶jfedu1、jfedu2,分別設(shè)置密碼為123456:
useradd jfedu1 useradd jfedu2 echo 123456|passwd --stdin jfedu1 echo 123456|passwd --stdin jfedu2 |
(2) 修改vsftpd.conf配置文件代碼如下:
anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES |
(3) 通過(guò)Windows資源客戶端驗(yàn)證,使用jfedu1、jfedu2用戶登錄FTP服務(wù)器,即可上傳文件、刪除文件、下載文件,jfedu1、jfedu2系統(tǒng)用戶上傳文件的家目錄在/home/jfedu1、/home/jfedu2下,如圖1-7(a)、1-7(b)所示:
圖1-7(a) jfedu1用戶登錄FTP服務(wù)器
圖1-7(b) jfedu1登錄FTP服務(wù)器上傳文件
如果基于Vsftpd系統(tǒng)用戶訪問(wèn)FTP服務(wù)器,系統(tǒng)用戶越多越不利于管理,而且不利于系統(tǒng)安全管理,鑒于此,為了能更加的安全使用VSFTPD,需使用Vsftpd虛擬用戶方式。
Vsftpd虛擬用戶原理:虛擬用戶就是沒(méi)有實(shí)際的真實(shí)系統(tǒng)用戶,而是通過(guò)映射到其中一個(gè)真實(shí)用戶以及設(shè)置相應(yīng)的權(quán)限來(lái)實(shí)現(xiàn)訪問(wèn)驗(yàn)證,虛擬用戶不能登錄Linux系統(tǒng),從而讓系統(tǒng)更加的安全可靠。
Vsftpd虛擬用戶企業(yè)案例配置步驟如下:
(1) 安裝Vsftpd虛擬用戶需用到的軟件及認(rèn)證模塊:
yum install pam* libdb-utils libdb* --skip-broken -y |
(2) 創(chuàng)建虛擬用戶臨時(shí)文件/etc/vsftpd/ftpusers.txt,新建虛擬用戶和密碼,其中jfedu001、jfedu002為虛擬用戶名,123456為密碼,如果有多個(gè)用戶,依次格式填寫即可:
jfedu001 123456 jfedu002 123456 |
(3) 生成Vsftpd虛擬用戶數(shù)據(jù)庫(kù)認(rèn)證文件,設(shè)置權(quán)限700:
db_load -T -t hash -f /etc/vsftpd/ftpusers.txt /etc/vsftpd/vsftpd_login.db chmod 700 /etc/vsftpd/vsftpd_login.db |
(4) 配置PAM認(rèn)證文件,/etc/pam.d/vsftpd行首加入如下兩行:
auth required pam_userdb.so db=/etc/vsftpd/vsftpd_login account required pam_userdb.so db=/etc/vsftpd/vsftpd_login |
(5) 所有Vsftpd虛擬用戶需要映射到一個(gè)系統(tǒng)用戶,該系統(tǒng)用戶不需要密碼,也不需要登錄,主要用于虛擬用戶映射使用,創(chuàng)建命令如下:
useradd -s /sbin/nologin ftpuser |
(6) 完整vsftpd.conf配置文件代碼如下:
#global config Vsftpd 2017 anonymous_enable=YES local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=NO listen_ipv6=YES userlist_enable=YES tcp_wrappers=YES #config virtual user FTP pam_service_name=vsftpd guest_enable=YES guest_username=ftpuser user_config_dir=/etc/vsftpd/vsftpd_user_conf virtual_use_local_privs=YES |
如上Vsftpd虛擬用戶配置文件參數(shù)詳解:
#config virtual user FTP pam_service_name=vsftpd 虛擬用戶啟用pam認(rèn)證; guest_enable=YES 啟用虛擬用戶; guest_username=ftpuser 映射虛擬用戶至系統(tǒng)用戶ftpuser; user_config_dir=/etc/vsftpd/vsftpd_user_conf 設(shè)置虛擬用戶配置文件所在的目錄; virtual_use_local_privs=YES 虛擬用戶使用與本地用戶相同的權(quán)限。 |
(7) 至此,所有虛擬用戶共同基于/home/ftpuser主目錄實(shí)現(xiàn)文件上傳與下載,可以在/etc/vsftpd/vsftpd_user_conf目錄創(chuàng)建虛擬用戶各自的配置文件,創(chuàng)建虛擬用戶配置文件主目錄:
mkdir -p /etc/vsftpd/vsftpd_user_conf/ |
(8) 如下分別為虛擬用戶jfedu001、jfedu002用戶創(chuàng)建配置文件:
/etc/vsftpd/vsftpd_user_conf/jfedu001,同時(shí)創(chuàng)建私有的虛擬目錄,代碼如下:
local_root=/home/ftpuser/jfedu001 write_enable=YES anon_world_readable_only=YES anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES |
/etc/vsftpd/vsftpd_user_conf/jfedu002,同時(shí)創(chuàng)建私有的虛擬目錄,代碼如下:
local_root=/home/ftpuser/jfedu002 write_enable=YES anon_world_readable_only=YES anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES |
虛擬用戶配置文件內(nèi)容詳解:
local_root=/home/ftpuser/jfedu002 jfedu002虛擬用戶配置文件路徑; write_enable=YES 允許登陸用戶有寫權(quán)限; anon_world_readable_only=YES 允許匿名用戶下載,然后讀取文件; anon_upload_enable=YES 允許匿名用戶上傳文件,只有在write_enable=YES時(shí)該參數(shù)才生效; anon_mkdir_write_enable=YES 允許匿名用戶創(chuàng)建目錄,只有在write_enable=YES時(shí)該參數(shù)才生效; anon_other_write_enable=YES 允許匿名用戶其他權(quán)限,例如刪除、重命名等。 |
(9) 創(chuàng)建虛擬用戶各自虛擬目錄:
mkdir -p /home/ftpuser/{jfedu001,jfedu002} chown -R ftpuser:ftpuser /home/ftpuser |
重啟Vsftpd服務(wù),通過(guò)Windows客戶端資源管理器登錄Vsftpd服務(wù)端,測(cè)試結(jié)果如圖1-8(a)、1-8(b)所示:
圖1-8(a) jfedu001虛擬用戶登錄FTP服務(wù)器
圖1-8(b) jfedu001虛擬用戶上傳下載文件
你若覺(jué)得作者的文章寫得不錯(cuò),請(qǐng)獎(jiǎng)勵(lì)作者幾錠銀子,讓作者感受到來(lái)自你滿滿的鼓勵(lì)和繼續(xù)創(chuàng)作的動(dòng)力!我們支持原創(chuàng)!鼓勵(lì)原創(chuàng)!
打賞之后,文章底部顯示參與打賞者的記錄,可以直接通過(guò)微信掃描打賞喲,直接按打賞根據(jù)提示操作。
自定義打賞金額,友情提示打賞金額不要超過(guò)50元哦,土豪可以隨意哦,51CTO謝謝您對(duì)作者的支持!謝謝你的慷慨大方!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。