天天看點

[轉] Linux學習之CentOS(三十六)--FTP服務原理及vsfptd的安裝、配置

本篇随筆将講解FTP服務的原理以及vsfptd這個最常用的FTP服務程式的安裝與配置...

一、FTP服務原理

FTP(File Transfer Protocol)是一個非常古老并且應用十分廣泛的檔案傳輸協定,FTP協定是現今使用最為廣泛的網絡檔案共享協定之一,我們現在也一直有在用着FTP協定來進行各種檔案的傳輸,FTP為我們提供了一種可靠的方式在網絡上進行檔案的共享

FTP是C/S架構的服務,擁有一個伺服器端和一個用戶端,FTP底層通過TCP協定來作為傳輸協定,是以FTP協定是一種可靠的檔案傳輸方式,FTP提供了兩個端口号,20和21号端口,20号是資料接口,提供資料之間的傳輸,21号是指令接口,提供指令之間的傳輸

FTP服務端與用戶端連接配接一般有兩種模式:主動模式(Active Mode)和被動模式(Passive Mode)

①主動模式的原理如下圖所示:

[轉] Linux學習之CentOS(三十六)--FTP服務原理及vsfptd的安裝、配置

主動模式下,用戶端首先會向伺服器端的21号端口發出一個連接配接指令,請求與伺服器端建立連接配接,此時伺服器端響應回去給用戶端,并要求用戶端發送一個用于傳送資料的端口,該端口号要 > 1023 ,此時伺服器端的20号端口就會與該資料端口主動建立連接配接,用戶端與伺服器端進行資料的傳送

②被動模式的原理如下圖所示:

[轉] Linux學習之CentOS(三十六)--FTP服務原理及vsfptd的安裝、配置

與主動模式不同的是,在被動模式下,用戶端也是首先與伺服器端的21端口建立連接配接,此時後伺服器端會開啟一個 > 1023 号的資料傳送端口,并傳回給用戶端,這個時候用戶端也會開啟一個 > 1023 的端口,然後用戶端會主動的去跟伺服器端的資料傳輸端口建立連接配接,兩者之間來進行資料的傳送

是以說,主動模式與被動模式的差別就在于究竟是伺服器端的20端口主動發起于用戶端建立連接配接,還是伺服器端開放一個随機端口,等待用戶端與其主動建立連接配接。在我們的生産環境中,通常還是使用的是被動連接配接的模式,因為我們的伺服器端都有配置防火牆,而防火牆對于内網連接配接外網的端口一般是放行的,而外網來連接配接内網的端口則一般是有限制的,是以我們這時如果使用主動模式連接配接的話,端口可能被防火牆攔截,進而不能提供我們的FTP服務

二、vsfptd的安裝

在Linux下,我們應用最廣泛的FTP服務程式是 vsftpd (Very Secure FTP Daemon),從名字我們也可以看出,其提供了非常安全的FTP服務。vsftpd 是一個 UNIX 類作業系統上運作的伺服器的名字,它可以運作在諸如 Linux, BSD, Solaris, HP-UX 以及 IRIX 上面。它支援很多其他的 FTP 伺服器不支援的特征。例如:

①非常高的安全性需求  ②帶寬限制  ③建立虛拟使用者的可能性  ④高速  ...

可以說 vsftpd 給我們提供了一個快速的、穩定的且相當安全的FTP服務

在CentOS下預設沒有安裝 vsftpd 這個FTP程式,我們通過 yum install vsfptd 來進行安裝

[轉] Linux學習之CentOS(三十六)--FTP服務原理及vsfptd的安裝、配置
[轉] Linux學習之CentOS(三十六)--FTP服務原理及vsfptd的安裝、配置

這樣我們就安裝好了我們的 vsftpd 服務程式了,在安裝好後我們可以來看一下 vsftpd 這個程式的一些配置檔案,其所有的配置檔案都儲存在了 /etc/vsftpd/ 這個目錄下

[轉] Linux學習之CentOS(三十六)--FTP服務原理及vsfptd的安裝、配置
[轉] Linux學習之CentOS(三十六)--FTP服務原理及vsfptd的安裝、配置

裡面一共有四個配置檔案,vsftpd.conf 是我們的主配置檔案,ftpusers是我們的黑名單使用者配置檔案,通常我們的系統使用者還有根使用者都是放在這個配置檔案裡面的,因為這些使用者的權限很大,如果使用ftp服務可能造成一些問題,user_list是我們的使用者清單檔案,我們可以通過在主配置檔案裡設定該使用者是黑名單使用者還是白名單擁有,最後一個是我們的ftp服務遷移腳本

我們的 vsftpd 程式安裝好後,我們可以看到在 /var 目錄下有個 ftp 檔案夾,這個檔案夾就是我們的ftp共享檔案夾

三、FTP使用者以及如何進行檔案共享

vsftpd是通過使用使用者來作為管理機關的,想要通路某個ftp的共享檔案,必須要以某一特定的使用者身份登陸,我們可以配置一下幾種類型的使用者:

①正常使用者(系統使用者)

正常使用者就是我們作業系統的系統使用者,一般我們安裝的各種服務都能通過系統使用者登入來使用其所提供的服務

首先我們啟動我們的 vsftpd 這個服務,這裡我們先通過 CentOS提供的一個圖形界面工具來使用我們現在的系統使用者登陸我們的 ftp

[轉] Linux學習之CentOS(三十六)--FTP服務原理及vsfptd的安裝、配置

                            

[轉] Linux學習之CentOS(三十六)--FTP服務原理及vsfptd的安裝、配置

輸入我們的目前系統使用者名及密碼就能登陸上去了,我們使用系統使用者登陸上去後,其預設打開的檔案夾是我們的使用者的家目錄,隻要是該使用者有通路權限的檔案及檔案夾,該使用者都能進行通路

②匿名使用者 (anonymous)

我們所有的FTP服務都支援的一種使用者登入方式,我們可以不輸入任何資訊就能登陸進來

[轉] Linux學習之CentOS(三十六)--FTP服務原理及vsfptd的安裝、配置
[轉] Linux學習之CentOS(三十六)--FTP服務原理及vsfptd的安裝、配置

我們看到,我們在沒有輸入任何資訊也能夠登陸上我們的ftp,這就是以匿名使用者登入的方式。

在預設情況下,在vsftpd安裝的時候會建立一個 ftp 系統使用者,這個使用者就是用來進行匿名登陸的使用者,ftp匿名使用者預設登陸到的目錄是 /var/ftp/ 目錄,沒有任何通路限制權限的檔案都能提供給匿名使用者進行共享

那麼我們的FTP為什麼可以以匿名使用者來進行登陸呢?其主要就是因為 vsftpd.conf 這個配置檔案所配置的

[轉] Linux學習之CentOS(三十六)--FTP服務原理及vsfptd的安裝、配置

我們看到,配置檔案裡的 anonymous_enable=YES 就是允許我們的匿名使用者登入,如果将其設定成NO,這樣匿名使用者就不能登陸上了

③虛拟使用者(ftp-only)

這些使用者就是專門建立隻為使用ftp的使用者,一般用的較少

我們登陸FTP,不僅可以使用CentOS提供的GUI界面,還可以使用我們的指令行下的工具進行登陸,這裡我們使用的是 lftp,同樣我們也需要先對其進行安裝

[轉] Linux學習之CentOS(三十六)--FTP服務原理及vsfptd的安裝、配置
[轉] Linux學習之CentOS(三十六)--FTP服務原理及vsfptd的安裝、配置

這樣我們就可以使用 lftp 來登陸我們的ftp了

①直接使用 lftp 127.0.0.1 進行登陸

這種登陸是以匿名使用者登入上ftp,我們可以看到登陸進去後的目錄是 /var/pub 這個共享目錄

②使用 lftp -u xiaoluo 127.0.0.1 進行登陸

[轉] Linux學習之CentOS(三十六)--FTP服務原理及vsfptd的安裝、配置
[轉] Linux學習之CentOS(三十六)--FTP服務原理及vsfptd的安裝、配置

我們也可以通過 -u 指定我們以系統使用者的方式登陸ftp,系統使用者登入上以後,預設登陸的檔案夾就是我們使用者的根目錄

四、使用者通過ftp進行檔案上傳、下載下傳操作

①正常使用者的上傳、下載下傳操作

我們通過lftp指令還可以進行檔案的上傳、下載下傳操作,分别使用 put 和 get 指令

例如我現在在 xiaoluo 這個使用者的家目錄下建立一個 xiaoluo.txt 檔案,然後我們通過 get 指令将其從ftp上下載下傳下來

[轉] Linux學習之CentOS(三十六)--FTP服務原理及vsfptd的安裝、配置
[轉] Linux學習之CentOS(三十六)--FTP服務原理及vsfptd的安裝、配置

我們看到,剛才我們通過登陸xiaoluo這個使用者,然後在其家目錄下建立了一個 xiaoluo.txt 的檔案,然後我們切換到了 root 目錄下,首先登陸我們的 lftp ,然後通過 get 指令将該檔案下載下傳下來,這時我們就可以發現root使用者的家目錄下就有了剛才下載下傳下來的 xiaoluo.txt 檔案的

【注意:】我目前root使用者是在哪個目錄下通過 lftp 登陸的,在下載下傳檔案時就會下載下傳到該目錄下

同時我們也可以使用 put 指令來上傳檔案到ftp上

[轉] Linux學習之CentOS(三十六)--FTP服務原理及vsfptd的安裝、配置
[轉] Linux學習之CentOS(三十六)--FTP服務原理及vsfptd的安裝、配置

我在root家目錄下建立了 root.txt 這個檔案,然後通過 xiaoluo 這個使用者上傳到了 ftp 上,這時我們切換到xiaoluo的家目錄下,發現該檔案已經上傳上去了

【注意:】我們在使用ftp進行檔案上傳、下載下傳操作時,要確定該使用者對目錄具有讀寫的權限!!!

②匿名使用者上傳、下載下傳操作

我們匿名使用者登陸ftp以後預設對共享檔案夾隻有讀的權限,即隻能從共享目錄裡進行檔案的下載下傳操作

[轉] Linux學習之CentOS(三十六)--FTP服務原理及vsfptd的安裝、配置
[轉] Linux學習之CentOS(三十六)--FTP服務原理及vsfptd的安裝、配置

那麼我們要如何通過設定來實作檔案的上傳操作呢?

(1) 修改vsftpd主配置檔案開啟匿名使用者上傳的功能:

anonymous_enable=YES  --開啟匿名使用者通路(預設)

anon_upload_enable=YES  --打開匿名使用者檔案上傳功能

anon_mkdir_write_enable=YES  --打開匿名使用者建立檔案夾功能

[轉] Linux學習之CentOS(三十六)--FTP服務原理及vsfptd的安裝、配置
[轉] Linux學習之CentOS(三十六)--FTP服務原理及vsfptd的安裝、配置

(2) 賦予匿名使用者上傳使用的檔案夾以寫的權限

此時我們重新啟動我們 vsftpd 服務,就可以使用匿名使用者來進行檔案上傳的操作了

[轉] Linux學習之CentOS(三十六)--FTP服務原理及vsfptd的安裝、配置
[轉] Linux學習之CentOS(三十六)--FTP服務原理及vsfptd的安裝、配置

我們看到,我們在 root 家目錄下建立的 xiaoluo.txt 檔案已經通過 匿名使用者登入上傳上去了

【注意:】我們不能将匿名使用者的家目錄的權限設定為777權限,也就是 /var/ftp 這個目錄,而隻能設定其子目錄的權限為 777,因為vsftp認為這樣是很不安全的,如果這樣設定了,vsftpd将禁止通路匿名使用者的家目錄