11.1 文件傳輸協(xié)議

2023-05-12 11:06 更新

一般來(lái)講,人們將計(jì)算機(jī)聯(lián)網(wǎng)的首要目的就是獲取資料,而文件傳輸是一種非常重要的獲取資料的方式。今天的互聯(lián)網(wǎng)是由幾千萬(wàn)臺(tái)個(gè)人計(jì)算機(jī)、工作站、服務(wù)器、小型機(jī)、大型機(jī)、巨型機(jī)等具有不同型號(hào)、不同架構(gòu)的物理設(shè)備共同組成的,而且即便是個(gè)人計(jì)算機(jī),也可能會(huì)裝有Windows、Linux、UNIX、Mac等不同的操作系統(tǒng)。為了能夠在如此復(fù)雜多樣的設(shè)備之間解決問(wèn)題解決文件傳輸問(wèn)題,文件傳輸協(xié)議(FTP)應(yīng)運(yùn)而生。

FTP是一種在互聯(lián)網(wǎng)中進(jìn)行文件傳輸?shù)膮f(xié)議,基于客戶(hù)端/服務(wù)器模式,默認(rèn)使用20、21號(hào)端口,其中端口20(數(shù)據(jù)端口)用于進(jìn)行數(shù)據(jù)傳輸,端口21(命令端口)用于接受客戶(hù)端發(fā)出的相關(guān)FTP命令與參數(shù)。FTP服務(wù)器普遍部署于內(nèi)網(wǎng)中,具有容易搭建、方便管理的特點(diǎn)。而且有些FTP客戶(hù)端工具還可以支持文件的多點(diǎn)下載以及斷點(diǎn)續(xù)傳技術(shù),因此FTP服務(wù)得到了廣大用戶(hù)的青睞。FTP協(xié)議的傳輸拓?fù)淙鐖D11-1所示。

圖11-1 FTP協(xié)議的傳輸拓?fù)?/p>

FTP服務(wù)器是按照FTP協(xié)議在互聯(lián)網(wǎng)上提供文件存儲(chǔ)和訪問(wèn)服務(wù)的主機(jī),F(xiàn)TP客戶(hù)端則是向服務(wù)器發(fā)送連接請(qǐng)求,以建立數(shù)據(jù)傳輸鏈路的主機(jī)。FTP協(xié)議有下面兩種工作模式。

主動(dòng)模式:FTP服務(wù)器主動(dòng)向客戶(hù)端發(fā)起連接請(qǐng)求。

被動(dòng)模式:FTP服務(wù)器等待客戶(hù)端發(fā)起連接請(qǐng)求(FTP的默認(rèn)工作模式)。

第8章在學(xué)習(xí)防火墻服務(wù)配置時(shí)曾經(jīng)講過(guò),防火墻一般是用于過(guò)濾從外網(wǎng)進(jìn)入內(nèi)網(wǎng)的流量,因此有些時(shí)候需要將FTP的工作模式設(shè)置為主動(dòng)模式,才可以傳輸數(shù)據(jù)。

vsftpd(very secure ftp daemon,非常安全的FTP守護(hù)進(jìn)程)是一款運(yùn)行在Linux操作系統(tǒng)上的FTP服務(wù)程序,不僅完全開(kāi)源而且免費(fèi),此外,還具有很高的安全性、傳輸速度,以及支持虛擬用戶(hù)驗(yàn)證等其他FTP服務(wù)程序不具備的特點(diǎn)。

在配置妥當(dāng)Yum軟件倉(cāng)庫(kù)之后,就可以安裝vsftpd服務(wù)程序了。

    [root@linuxprobe ~]# yum install vsftpd
    Loaded plugins: langpacks, product-id, subscription-manager
    ………………省略部分輸出信息………………
    ================================================================================
     Package Arch Version Repository Size
    ================================================================================
    Installing:
     vsftpd x86_64 3.0.2-9.el7 rhel 166 k
    Transaction Summary
    ================================================================================
    Install 1 Package
    Total download size: 166 k
    Installed size: 343 k
    Is this ok [y/d/N]: y
    Downloading packages:
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
     Installing : vsftpd-3.0.2-9.el7.x86_64 1/1 
     Verifying : vsftpd-3.0.2-9.el7.x86_64 1/1 
    Installed:
     vsftpd.x86_64 0:3.0.2-9.el7 
    Complete!

iptables防火墻管理工具默認(rèn)禁止了FTP傳輸協(xié)議的端口號(hào),因此在正式配置vsftpd服務(wù)程序之前,為了避免這些默認(rèn)的防火墻策略“搗亂”,還需要清空iptables防火墻的默認(rèn)策略,并把當(dāng)前已經(jīng)被清理的防火墻策略狀態(tài)保存下來(lái):

    [root@linuxprobe ~]# iptables -F
    [root@linuxprobe ~]# service iptables save
    iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]

vsftpd服務(wù)程序的主配置文件(/etc/vsftpd/vsftpd.conf)內(nèi)容總長(zhǎng)度達(dá)到123行,但其中大多數(shù)參數(shù)在開(kāi)頭都添加了井號(hào)(#),從而成為注釋信息,大家沒(méi)有必要在注釋信息上花費(fèi)太多的時(shí)間。我們可以在grep命令后面添加-v參數(shù),過(guò)濾并反選出沒(méi)有包含井號(hào)(#)的參數(shù)行(即過(guò)濾掉所有的注釋信息),然后將過(guò)濾后的參數(shù)行通過(guò)輸出重定向符寫(xiě)回原始的主配置文件中:

    [root@linuxprobe ~]# mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak
    [root@linuxprobe ~]# grep -v "#" /etc/vsftpd/vsftpd.conf_bak > /etc/vsftpd/vsftpd.conf
    [root@linuxprobe ~]# cat /etc/vsftpd/vsftpd.conf
    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
    pam_service_name=vsftpd
    userlist_enable=YES
    tcp_wrappers=YES

表11-1中羅列了vsftpd服務(wù)程序主配置文件中常用的參數(shù)以及作用。當(dāng)前大家只需要簡(jiǎn)單了解即可,在后續(xù)的實(shí)驗(yàn)中將演示這些參數(shù)的用法,以幫助大家熟悉并掌握。

表11-1 vsftpd服務(wù)程序常用的參數(shù)以及作用

參數(shù) 作用
listen=[YES|NO] 是否以獨(dú)立運(yùn)行的方式監(jiān)聽(tīng)服務(wù)
listen_address=IP地址 設(shè)置要監(jiān)聽(tīng)的IP地址
listen_port=21 設(shè)置FTP服務(wù)的監(jiān)聽(tīng)端口
download_enable=[YES|NO] 是否允許下載文件
userlist_enable=[YES|NO] userlist_deny=[YES|NO] 設(shè)置用戶(hù)列表為“允許”還是“禁止”操作
max_clients=0 最大客戶(hù)端連接數(shù),0為不限制
max_per_ip=0 同一IP地址的最大連接數(shù),0為不限制
anonymous_enable=[YES|NO] 是否允許匿名用戶(hù)訪問(wèn)
anon_upload_enable=[YES|NO] 是否允許匿名用戶(hù)上傳文件
anon_umask=022 匿名用戶(hù)上傳文件的umask值
anon_root=/var/ftp 匿名用戶(hù)的FTP根目錄
anon_mkdir_write_enable=[YES|NO] 是否允許匿名用戶(hù)創(chuàng)建目錄
anon_other_write_enable=[YES|NO] 是否開(kāi)放匿名用戶(hù)的其他寫(xiě)入權(quán)限(包括重命名、刪除等操作權(quán)限)
anon_max_rate=0 匿名用戶(hù)的最大傳輸速率(字節(jié)/秒),0為不限制
local_enable=[YES|NO] 是否允許本地用戶(hù)登錄FTP
local_umask=022 本地用戶(hù)上傳文件的umask值
local_root=/var/ftp 本地用戶(hù)的FTP根目錄
chroot_local_user=[YES|NO] 是否將用戶(hù)權(quán)限禁錮在FTP目錄,以確保安全
local_max_rate=0 本地用戶(hù)最大傳輸速率(字節(jié)/秒),0為不限制
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)