FTP協議以及vsftpd的使用

內容:

1、ftp協議

2、vsftpd的搭建及配置



一、FTP協議

    1、FTP協議:

FTP 是File Transfer Protocol(文件傳輸協議)的英文簡稱,而中文簡稱爲“文傳協議”。工作在第七層,而且是基於TCP協議傳輸數據。


        FTP工作原理與其它的應用協議有些不同。它是用兩個端口進行通信的。一個端口用於命令交互。這個端口在用戶連接之後一直保持;而另一個端口只是在數據傳時打開(比如:上傳文件,下載文件,獲取服務端文件列表),在數據傳輸時有兩種不同的模式,一是用戶開通這個數據端口,這種模式叫做主動模式;二是服務器提供一個接口,這個模式叫被動模式。


    2、FTP的傳輸數據:

        FTP的傳輸有兩種方式:ASCII傳輸模式和二進制數據傳輸模式。

        (1)、ASCII傳輸方式:假定用戶正在拷貝的文件包含的簡單ASCII碼文本,如果在遠程機器上運行的不是UNIX,當文件傳輸時ftp通常會自動地調整文件的內容以便於把文件解釋成另外那臺計算機存儲文本文件的格式。但是常常有這樣的情況,用戶正在傳輸的文件包含的不是文本文件,它們可能是程序,數據庫,字處理文件或者壓縮文件(儘管字處理文件包含的大部分是文本,其中也包含有指示頁尺寸,字庫等信息的非打印符)。在拷貝任何非文本文件之前,用binary 命令告訴ftp逐字拷貝,不要對這些文件進行處理,這也是下面要講的二進制傳輸。


        (2)、二進制傳輸模式:在二進制傳輸中,保存文件的位序,以便原始和拷貝的是逐位一一對應的。即使目的地機器上包含位序列的文件是沒意義的。例如,macintosh以二進制方式傳送可執行文件到Windows系統,在對方系統上,此文件不能執行。如果你在ASCII方式下傳輸二進制文件,即使不需要也仍會轉譯。這會使傳輸稍微變慢 ,也會損壞數據,使文件變得不能用。(在大多數計算機上,ASCII方式一般假設每一字符的第一有效位無意義,因爲ASCII字符組合不使用它。如果你傳輸二進制文件,所有的位都是重要的。)如果你知道這兩臺機器是同樣的,則二進制方式對文本文件和數據文件都是有效的。


    3、FTP的工作方式

        FTP支持兩種模式,一種方式叫做Standard (也就是 PORT方式,主動方式),一種是 Passive (也就是PASV,被動方式)。 Standard模式 FTP的客戶端發送 PORT 命令到FTP服務器。Passive模式FTP的客戶端發送 PASV命令到 FTP Server。

        這兩種方式的工作原理:

        Port模式FTP 客戶端首先和FTP服務器的TCP 21端口建立連接,通過這個通道發送命令,客戶端需要接收數據的時候在這個通道上發送PORT命令。 PORT命令包含了客戶端用什麼端口接收數據。在傳送數據的時候,服務器端通過自己的TCP 20端口連接至客戶端的指定端口發送數據。 FTP server必須和客戶端建立一個新的連接用來傳送數據。

        Passive模式在建立控制通道的時候和Standard模式類似,但建立連接後發送的不是Port命令,而是Pasv命令。FTP服務器收到Pasv命令後,隨機打開一個高端端口(端口號大於1024)並且通知客戶端在這個端口上傳送數據的請求,客戶端連接FTP服務器此端口,然後FTP服務器將通過這個端口進行數據的傳送,這個時候FTP server不再需要建立一個新的和客戶端之間的連接。


        注意:很多防火牆在設置的時候都是不允許接受外部發起的連接的,所以許多位於防火牆後或內網的FTP服務器不支持PASV模式,因爲客戶端無法穿過防火牆打開FTP服務器的高端端口;而許多內網的客戶端不能用PORT模式登陸FTP服務器,因爲從服務器的TCP 20無法和內部網絡的客戶端建立一個新的連接,造成無法工作。



二、vsftpd的搭建及配置

    1、vsftpd簡介

        vsftpd 是“very secure FTP daemon”的縮寫,安全性是它的一個最大的特點。vsftpd 是一個 UNIX 類操作系統上運行的服務器的名字,它可以運行在諸如 Linux、BSD、Solaris、 HP-UNIX等系統上面,是一個完全免費的、開放源代碼的ftp服務器軟件,支持很多其他的 FTP 服務器所不支持的特徵。比如:非常高的安全性需求、帶寬限制、良好的可伸縮性、可創建虛擬用戶、支持IPv6、速率高等。

vsftpd是一款在Linux發行版中最受推崇的FTP服務器程序。特點是小巧輕快,安全易用。

    2、vsftp的安裝以及配置使用

    vsftpd:

    程序環境:

    配置文件:/etc/vsftpd/vsftpd.conf

    主程序:/usr/sbin/vsftpd

    文件路徑映射:/var/ftp 

    用戶的家目錄的映射:訪問ftp必須以某個系統用戶的身份,此用戶的家目錄即文檔目錄;

    匿名用戶:anonymous,要映射爲一個系統用戶,默認是ftp;

    用戶種類:

        匿名用戶:

        系統用戶:可以登錄系統的用戶,/etc/passwd裏的用戶

        虛擬用戶:不是系統的登錄用戶

    3、配置vsftpd:

    配置文件:vsftpd.conf

        directive=value

    注意:directive之前不能有任何字符;

    注意:任何配置的權限修改還要結合文件系統的文件權限,比如,就算在配置文件中允許匿名用戶下載文件,但假如文件本身的權限不夠,也一樣不能下載。

    匿名用戶:

    anonymous_enable=YES:允許匿名用戶登錄

    anon_upload_enable=YES :允許匿名用戶上傳文件

    anon_mkdir_write_enable=YES :允許匿名用戶創建目錄

    anon_other_write_enable=YES :允許匿名用戶其他的寫權限如,刪除目錄等

    注意:如果允許匿名用戶上傳,默認上傳的權限是600,因爲匿名上傳文件的umask爲077,要修改則要添加:anon_umask=022;

    系統用戶:

        local_enable=YES :允許本地用戶登錄

        write_enable=YES :允許本地用戶寫權限

    輔助認證配置文件/etc/vsftpd/ftpusers:

        pam認證的配置文件:/etc/pam.d/vsftpd

        chroot_local_users=YES

    禁錮所有的本地用戶於自己的家目錄中;但需要事先移除用戶對家目錄的寫權限;

        chroot_list_enable=YES

        chroot_list_file=/etc/vsftpd/chroot_list 

    禁錮指定的文件列表中的用戶於自己的家目錄中;但需要事先移除用戶對家目錄的寫權限;(這兩個指令一般同時啓用或不啓用)

    數據傳輸日誌:

        xferlog_std_format=YES

        xferlog_enable=YES

        xferlog_file=/var/log/xferlog

    控制可登錄vsftpd服務的用戶列表:

    userlist_enable=YES:是否啓用/etc/vsftpd/user_list文件來可登錄的用戶;

    userlist_deny={YES|NO}

        YES:黑名單

        NO:白名單

    4、FTP數字代碼的意義

        110 重新啓動標記應答。
        120 服務在多久時間內ready。
        125 數據鏈路端口開啓,準備傳送。
        150 文件狀態正常,開啓數據連接端口。
        200 命令執行成功。
        202 命令執行失敗。
        211 系統狀態或是系統求助響應。
        212 目錄的狀態。
        213 文件的狀態。
        214 求助的訊息。
        215 名稱系統類型。
        220 新的聯機服務ready。
        221 服務的控制連接端口關閉,可以註銷。
        225 數據連結開啓,但無傳輸動作。
        226 關閉數據連接端口,請求的文件操作成功。
        227 進入passive mode。
        230 使用者登入。
        250 請求的文件操作完成。
        257 顯示目前的路徑名稱。
        331 用戶名稱正確,需要密碼。
        332 登入時需要賬號信息。
        350 請求的操作需要進一部的命令。
        421 無法提供服務,關閉控制連結。
        425 無法開啓數據鏈路。
        426 關閉聯機,終止傳輸。
        450 請求的操作未執行。
        451 命令終止:有本地的錯誤。
        452 未執行命令:磁盤空間不足。
        500 格式錯誤,無法識別命令。
        501 參數語法錯誤。
        502 命令執行失敗。
        503 命令順序錯誤。
        504 命令所接的參數不正確。
        530 未登入。
        532 儲存文件需要賬戶登入。
        550 未執行請求的操作。
        551 請求的命令終止,類型未知。
        552 請求的文件終止,儲存位溢出。  
        553 未執行請求的的命令,名稱不正確。


        OK,更多文章請關注我的博客

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章