1. 程式人生 > >FTP伺服器介紹和配置

FTP伺服器介紹和配置

原文地址:http://www.178linux.com/4450

一、 ftp服務,File Transfer Protocal 檔案傳輸協議 

    1. ftp基於tcp協議,C/S架構 

        Server: wu-ftpd, proftpd ,pureftp,vsftpd:(Very Secure ftpd),IIS,ServU

        Client:

            GUI: flashfxp,cuteftp,filezilla(開源), gftp(Linux)

            CLI:ftp, lftp,wget, lftpget

    2. ftp的傳輸機制

            1) 命令連線和資料傳輸連線

ftp模型.png 

  最開始,只建立命令連線,當執行get命令時,開啟另一埠建立檔案傳輸連線,如果get多個檔案,則建立多個連線。檔案傳輸結束時,拆除相應的檔案連線。 

            2) 資料連線的主動模式和被動模式 

                 主動和被動連線.png

主動連線:通常客戶端會裝有防火牆,不允許別人主動對客戶端發起連線

被動連線:可以通過伺服器端連線追蹤機制來解決防火牆問題,無論訪問哪個埠,埠必須和已經建立的連結產生關係。 

            主動模式下: 伺服器工作在20號埠 

            被動模式下: 伺服器工作在隨機埠  

    3. 傳輸資料: 

            流式話資料: 可以存入硬碟

                                文字檔案, 二進位制檔案 等

    4. 使用者認證機制: 

        1) 系統使用者

        2) 虛擬使用者。通常存放在檔案或者資料庫中

                hash file 

                mysql 

        3) 匿名使用者 

    5. 資料傳輸安全機制: 

        sftp :ssh提供基於ssh協議的ftp服務

        ftps :基於ssl的ftp 

    7. 響應碼 

            1xx:資訊碼 

            2xx:成功狀態嗎 

            3xx:進一步提示補全資訊的狀態 

            4xx:客戶端錯誤

            5xx:伺服器端錯誤

二、 vsftpd 安裝和配置 

     1. 安裝vsftpd 

# yum -y install vsftpd

      2. 重要的目錄
    /etc/pam.d/vsftpd              認證檔案存放目錄    
    /etc/rc.d/init.d/vsftpd        服務指令碼
    /usr/sbin/vsftpd               主程式檔案 
    /etc/vsftpd/vsftpd.conf        主配置檔案 
    /etc/vsftpd/ftpusers           使用者黑名單
    /etc/vsftpd/user_list         使用者限制名單 userlist_deny=NO 僅允許此名單使用者登入,userlist_deny=YES 
   不允許使用者名稱單的使用者登入
    /var/ftp/pub                   共享檔案所在位置


      3.  關於pam的認證檔案

 ## 檔案所在位置/etc/pam.d/vsftpd 關於認證檔案 
        pam: Plugable Authentication Module: 外掛式認證模組 
            1) nsswitch: 名稱解析框架 
                模組: /lib64/libnss* , /usr/lib64/libnss* 
                配置檔案: /etc/nsswitch.conf 
            2) 使用者認證框架 
                模組化:/lib64/security/pam*.so 
                配置檔案:/etc/pam.conf 和 /etc/pam.d/*

       4. chroot選項 

    ## 對於ftp使用者訪問ftp服務時使用chroot禁錮使用者 
    ## 在主配置檔案/etc/vsftpd/vsftpd.conf中配置啟動
        chroot_local_user=YES                       對於本地使用者使用chroot, 將會把其家目錄作為其root目錄 
        chroot_list_enable=YES                      chroot_list裡面的使用者不受chroot影響 
        chroot_list_file=/etc/vsftpd/chroot_list    不受chroot指令的例外使用者列表,需要手動新增,每行一個使用者名稱。如果沒有這個檔案連結會失敗

 chroot開啟前效果 

                                        before_chroot.png

ftp登入使用者可以進入系統根目錄

chroot開啟後效果 

                                       after_chroot.png

開啟後,使用者的家目錄被當做root了

        5. 關於匿名使用者的配置 

    anonymous_enable=YES                    允許匿名使用者登入     
    anon_upload_enable=YES                  允許匿名使用者上傳檔案
    anon_other_write_enable=YES             允許匿名使用者執行其他寫許可權 
    anon_mkdir_write_enable=YES             允許匿名使用者建立資料夾 
 
    ## 此時的許可權為ftp使用者配置的許可權疊加檔案本身許可權總和的效果 
    ## 如果檔案本身許可權不允許其他使用者修改,基本vsftpd.conf配置了匿名使用者可修改,結果依然不能修改 
    ## 資料夾也一樣,如果想要允許匿名用於在pub上傳檔案,需要將其other許可權新增+w

 

          6. vsftp 控制登入使用者的機制 

    ## /etc/vsftpd/ftpusers中的使用者都不允許使用ftp服務, 這是在/etc/pam.d/vsftpd中定義;/etc/pam.d/vsftpd 中應該有如下一行        
        auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
    ## /etc/vsftpd/user_list檔案兩種配置方法        
        ## 黑名單:
        userlist_enable=YES
        userlist_deny=YES
        ## 白名單
        userlist_enable=YES
        userlist_deny=NO

          7. 連結限制

        max_clients: 最大併發連線數        
        max_per_ip: 每IP可同時發起併發請求

          8. 傳輸速率 

        anon_max_rate: 匿名使用者的最大傳輸速率,單位是“位元組/秒”        
        local_max_rate: 本地使用者最大傳輸速率, 單位是“位元組/秒”

          9. 匿名使用者上傳的檔案自動轉換屬主和屬組 

        chown_uploads=YES
        chown_username=someuser  ## 使用特定使用者作為上傳的檔案的屬主,並使用其所在的組當做屬組

       10. 上傳檔案的umask 

        anno_umask: 匿名使用者上傳檔案的umask; 
        local_umask:

      11. 歡迎資訊  

        banner_file=/path/to/some_banner_file        
        ftp_banner=some string
        dirmessage_enable=yes ## 需要在某ftp可訪問的目錄下建立.messages檔案

      12. 虛擬使用者: 所有虛擬使用者都會被對映為一個系統使用者, 訪問時檔案目錄為此係統使用者的家目錄 

                  虛擬使用者認證機制: hash編碼的檔案,奇數行為使用者名稱,偶數行尾祕密

                  關係型資料庫: pam-mysql第三方模組認證 

三、 詳解配置虛擬使用者 

    1. 安裝mysql和pam_mysql(epel源提供) 

# yum -y install vsftpd mysql-server mysql-devel pam_mysql

  2. 建立虛擬使用者賬號所對映的系統使用者 

    # useradd -s /sbin/nologin -d /var/ftproot vuser     
    # chmod go+rx /var/ftproot

    3. 在資料庫中新增虛擬使用者

    mysql> create database vsftpd;    
    mysql> grant select on vsftpd.* to [email protected] identified by 'vsftpd';
    mysql> flush privileges;
    mysql> insert into users(name,password) values('tom',password('tom'));
    mysql> insert into users(name,password) values('jerry',password('jerry'));

     4. 配置pam認的配置檔案
    auth required /lib/security/pam_mysql.so user=vsftpd passwd=vsftpd host=192.168.98.128 db=vsftpd 
    table=users usercolumn=name passwdcolumn=password crypt=2    

    account required /lib/security/pam_mysql.so user=vsftpd passwd=vsftpd host=192.168.98.128 
    db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
 
    ## 這裡說明一下,host是vsftpd所在主機的主機地址,同時也是在mysql中被授權訪問的主機地址。vsftpd會通過藉助pam訪問資料庫獲取資料。
    ## 而vsftpd所在的主機為192.168.98.128,這裡的host也是這個。 如果把vsftpd放在其他主機上與資料庫分開管理也是可以的。 
    ## crypt 加密方式
    ##  0 明文
    ##  1 Y 
    ##  2 為mysql中的password()函式加密 
    ##  3 md5
    ##  4 sha1

     5. 配置vsftpd配置檔案

    ## 主要新增下面三行    
        # vim /etc/vsftpd/vsfptd.conf 
        guest_enable=YES                    ## 允許使用虛擬使用者
        guest_username=vuser                ## 虛擬使用者對映為vuser系統使用者
        pam_service_name=vsftpd.mysql       ## pam配置檔案位置為/etc/pam.d/vsftpd.mysql 
 
    ## 下面是一些vsftpd的基本選項 
        anonymous_enable=YES
        local_enable=YES
        write_enable=YES
        anon_upload_enable=NO
        anon_mkdir_write_enable=NO
        chroot_local_user=YES
 
    ## 另外每個虛擬使用者的單獨許可權可以在 /etc/vsftpd/vuser/ 配置
        例如:
        # vim /etc/vsftpd/vuser/tom  寫下一下幾行
        anon_upload_enable=YES
        anon_mkdir_write_enable=YES

  

      6. 重啟vsftpd服務,測試效果 

    # service vsftpd restart     
    在另一個臺主機上 
    # ftp 192.168.98.128 
        Connected to 192.168.98.128 (192.168.98.128).
        220 (vsFTPd 2.2.2)
        Name (192.168.98.128:root): tom
        331 Please specify the password.
        Password:
        230 Login successful.
        Remote system type is UNIX.
        Using binary mode to transfer files.
        ftp> 
    測試成功。


        7. 常見的不能正常認證的錯誤 

            1) iptables 忘記關,selinux沒有disable :此時通常的錯誤是資料庫無法訪問 

            2) 虛擬使用者無法認證: 有可能是加密方式沒有設定統一 

            3) 資料庫沒法連線, 資料庫訪問的使用者和主機要和pam檔案的使用者主機統一,一定要明確,是vsftpd藉助pam訪問資料庫,而不是ftp客戶端訪問資料庫。我在這裡被坑了好幾天。


相關推薦

FTP伺服器介紹配置

原文地址:http://www.178linux.com/4450 一、 ftp服務,File Transfer Protocal 檔案傳輸協議      1. ftp基於tcp協議,C/S架構          Server: wu-ftpd, proftpd ,

squid快取記憶體伺服器的的介紹配置

1:squid 是什麼? Squid cache(簡稱為Squid)是一個流行的自由軟體(GNU通用公共許可證)的代理伺服器和Web快取伺服器。Squid有廣泛的用途,從作為網頁伺服器的前置cache伺服器快取相關請求來提高Web伺服器的速度,到為一組人共享網

HTTP 之 httpd-2.4介紹配置

httpd2.4 常見配置 1 概述HTTPD 2.4默認是用於centOS7上,該軟件相比於HTTPD2.2 有了功能的改進。本文將對httpd2.4的新功能進行介紹,並介紹相關的常見配置2 HTTPD 新特性.(1) MPM支持運行為DSO機制;以模塊形式按需加載,DSO:動態的共享模塊.(2) e

ftp服務安裝配置

sting anything AS copies class 登陸用戶 rap enabled chan #========================== # Suse zypper install vsftpd service vsftpd start servi

LVS負載均衡介紹配置

start 外部 響應 數據接收 網通 eal 方便 ive ucc 負載均衡群集介紹? ?? 開源的負載均衡軟件LVS、keepalived、haproxy和nginx等keepalived除了可以實現高可用外,也可以拿來做負載均衡功能LVS是基於4層負載均衡,網絡OSI

springboot2.x簡單詳細教程--高階篇幅之雲伺服器介紹部署生產環境實戰(第十七章)

一、阿里雲伺服器介紹和使用講解     簡介:阿里雲伺服器介紹和使用講解 1) 2)第一次需要註冊 3)控制檯 二、阿里雲Linux伺服器部署JDK8實戰     簡介:在阿里雲伺

使用私有git倉庫備份伺服器指令碼配置檔案

1. 建立私有git倉庫 伺服器端配置: # 安裝 git yum -y install git # 建立 git 使用者 useradd git # 建立私有倉庫資料儲存目錄 mkdir /git_back/

influxdb基礎---介紹配置

#概述 InfluxDB是一個用Go語言編寫的時間序列資料庫,旨在處理高寫入和查詢負載。它是TICK堆疊的組成部分 。InfluxDB旨在用作涉及大量帶時間戳資料的任何用例的後備儲存,包括DevOps監控,應用程式指標,物聯網感測器資料和實時分析。同時influ

【轉】通過HTTP服務訪問FTP伺服器檔案(配置nginx+ftp伺服器

1.前提     已安裝配置好nginx+ftp服務 2.配置Nginx 伺服器     2.1進入nginx 配置檔案目錄: cd  /usr/local/nginx/conf vim  nginx.conf         2.2 修改配置檔案:有兩種

樹莓派-FTP伺服器搭建與配置

1.安裝vsftpd sudo apt-get install vsftpd 2.啟用FTP服務 sudo service vsftpd start 3.編輯vsftpd的配置檔案,並自定義FTP位置 sudo nano /etc/vsftpd.conf 依照個人所需對以下選項進行定義,如需使用則

Ubuntu14.04下FTP伺服器的搭建配置

1.安裝ftp sudo apt-get install vsftpd 2.配置vsftpd.conf檔案 sudo gedit /etc/vsftpd.conf 完整配置檔案: # Example config file /etc/vsftpd.conf # #

Linux下FTP伺服器搭建與配置

環境檢查 [[email protected] ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [[email protected] ~]# uname -r 2.6.32-696.el6.x86_64

JNDI的介紹配置

1 Tomcat配置JNDI資源 JNDI(Java Naming and Directory Interface),Java命名和目錄介面。JNDI的作用就是:在伺服器上配置資源,然後通過統一的方式來獲取配置的資源。 我們這裡要配置的資源當然是連線池了,這樣專案中就可以通過統一的方式來獲取

Node.js使用ftp連線遠端ftp伺服器列舉下載檔案示例

示例程式碼: var Ftp = require('ftp'); var fs = require('fs'); var path = require('path'); // 首先判斷引數中是否包含{dateString} var args = process.argv.splice(2); if (ar

Ansible之playbook(劇本)介紹配置詳解

前言 在上篇博文中講解了ansible的多個常用的模組,這些模組讓ansible具有了管理,部署後端主機的能力,但是一個一個命令的執行明顯很浪費時間,那麼能不能有一個檔案類似於shell指令碼那樣可以把複雜的、重複的命令,簡單化、程式流程化起來呢?答案是肯定的,playbook劇本就

Hadoop叢集虛擬機器網絡卡的介紹配置

很多人安裝虛擬機器的時候,經常遇到不能上網的問題,而vmware有三種網路模式,對初學者來說也比較眼花聊亂,今天我就來基於虛擬機器3種網路模式,幫大家普及下虛擬機器上網的背景知識 虛擬機器網路模式 無論是vmware,virtual box,virtual pc等

Linux-mysql伺服器安裝配置

Linux 安裝mysql服務一 、yum安裝       1、檢視yum倉庫中可以安裝的mysql-server:       yum list | grep mysql       2、安裝mysq

第十二章 FTP伺服器安裝與配置

習題 1.簡述FTP的連線模式。 FTP的連線模式有PORT和PASV兩種,其中PORT模式是主動模式,PASV是被動模式, 這裡所說的主動和被動都是相對於伺服器而言的。如果是主動模式,資料埠為20,如 果是被動模式,則由伺服器端和客戶端協商而定。 2.簡述FTP的傳輸模式。 FTP可用多種格式傳

nginx介紹配置

一、 概念        Nginx——Ngine X,是一款自由的、開源的、高效能HTTP伺服器和反向代理伺服器;也是一個IMAP、POP3、SMTP代理伺服器;也就是說Nginx本身就可以託管網站(類似於Tomcat一樣),進行Http服務處理,也可以作為反向代理伺

基於ubuntu平臺 介紹配置OpenCL

Reference Resources:https://blog.csdn.net/wd1603926823/article/details/79139172#commentBox  (Intel核顯--OpenCL環境--Linux) https://blog.csdn.net/