vsftp安裝實戰(成功)

我使用的是vsftpd-2.0.5.tar.gz
首先解壓縮:tar -zxfv vsftpd-2.0.5.tar.gz
編譯前請打開:builddefs.h
            #ifndef VSF_BUILDDEFS_H
            #define VSF_BUILDDEFS_H

           #undef VSF_BUILD_TCPWRAPPERS
           #define VSF_BUILD_PAM
           #undef VSF_BUILD_SSL

這裏#define VSF_BUILD_PAM指定了要vsftpd支持pam,所以不要改成#undef VSF_BUILD_PAM
並將所有undef 改爲define

檢查完builddefs.h後,make編譯,用ldd命令檢查生成的vsftpd文件有沒有加載/lib/libpam.so.0

# ldd vsftpd

       引用:

 libwrap.so.0 => /usr/lib/libwrap.so.0 (0x003f4000)

        libnsl.so.1 => /lib/libnsl.so.1 (0x003a4000)

        libpam.so.0 => /lib/libpam.so.0 (0x00c38000)

        libdl.so.2 => /lib/libdl.so.2 (0x00ac6000)

        libresolv.so.2 => /lib/libresolv.so.2 (0x00c14000)

        libutil.so.1 => /lib/libutil.so.1 (0x00479000)

        libcap.so.1 => /lib/libcap.so.1 (0x00af1000)

        libssl.so.4 => /lib/libssl.so.4 (0x0036e000)

        libcrypto.so.4 => /lib/libcrypto.so.4 (0x0022f000)

        libc.so.6 => /lib/tls/libc.so.6 (0x0099a000)

        libaudit.so.0 => /lib/libaudit.so.0 (0x00c29000)

        /lib/ld-linux.so.2 (0x00981000)

        libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x0031a000)

        libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0x00123000)

        libcom_err.so.2 => /lib/libcom_err.so.2 (0x0011e000)

        libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0x00207000)

        libz.so.1 => /usr/lib/libz.so.1 (0x00bce000)
   
如果沒有libpam.so.0  那麼需要安裝pam-devel包:

      如果沒有libssl.so.4  那麼需要安裝openssl 包
     
  然後重新編譯vsftpd :
                                            make clean
                                            make

1. 編譯成功後將以下文件複製到指定位置:
                                       cp vsftpd /usr/local/sbin/vsftpd    #這個是vsftpd執行文件,放在哪裏無所謂,複製不復制都可以
                                       cp vsftpd.conf.5    /usr/local/share/man/man5
                                       cp vsftpd.8    /usr/local/share/man/man8
                                       cp vsftpd.conf   /etc/vsftpd/           #vsftpd主配置文件
                                       cp RedHat/vsftpd.pam /etc/pam.d/ftp           #PAM驗證文件,以允許本地用戶登錄VSFTPD

2. 添加一個系統用戶作爲FTP虛擬用戶,在MYSQL中設置虛擬用戶賬號和密碼
   # useradd vsftpdguest
   # chown /var/FTP vsftpdguest.vsftpdguest
   # chmod 700 /var/FTP
   爲確保安全 修改 /etc/passwd文件,將其中vsftpdguest對應的條目改爲:
         vsftpdguest:x:511:511::/var/FTP:/sbin/nologin

   使vsftpdguest賬號只能作爲FTP用戶,而不能作爲一個系統用戶登陸。
   下面創建用於登陸驗證的mysql數據庫:
         mysql>create database vsftpdvu;
  mysql>use vsftpdvu;
  mysql>create table users(name char(16) binary,passwd char(16) binary);
  mysql>insert into users (name,passwd) values ('xiaotong',password('qqmywife'));
  mysql>insert into users (name,passwd) values ('xiaowang',password('ttmywife'));
  
       mysql>
grant select on vsftpdvu.users to vsftpdguest@localhost
       mysql>set password for sftpdguest@localhost =password('123456')
       mysql>quit
                   
3. 配置pam_mysql

 
編輯/etc/pam.d/ftp文件:
     內容修改如下:
  auth required /lib/security/pam_mysql.so user=vsftpdguest passwd=123456 host=localhost db=vsftpdvu table=users usercolumn=name passwdcolumn=passwd crypt=2
  account required
/lib/security/pam_mysql.so user=vsftpdguest passwd=123456 host=localhost db=vsftpdvu table=users usercolumn=name passwdcolumn=passwd crypt=2

以上粗體部分意義依次如下:pam_mysql安全嚴整模塊包的位置,mysql數據庫用戶名,密碼,數據庫服務器地址,數據庫名,虛擬用戶表,虛擬用戶名稱列,虛擬用戶密碼列,加密方式:0爲明碼,1爲操作系統RAS加密,2爲MYSQL password方法加密

4. 配置vsftpd.conf
                  
anonymous_enable=NO            #禁止匿名
                   local_enable=YES                      
#允許本地登錄
                   write_enable=YES                       #允許寫,如需上傳,則必須
                   local_umask=027                        #將上傳文件的權限設置爲:777-local_umask
                   anon_upload_enable=YES          #允許虛擬用戶和匿名用戶上傳
                   anon_other_write_enable=YES
  #允許虛擬用戶和匿名用戶修改文件名和刪除文件
                   dirmessage_enable=YES          
                   xferlog_enable=YES                      #打開日誌記錄
                   connect_from_port_20=YES
                   xferlog_file=/var/log/vsftpd.log    
#日誌存放位置
                   xferlog_std_format=YES              #標準日誌格式
                   idle_session_timeout=600        #空閒連接超時
                   data_connection_timeout=120
                   ftpd_banner=Welcome to ChinaRise FTP service       #歡迎信息
                   guest_enable=yes                       #允許虛擬用戶
                   guest_username=vsftpdguest 
#虛擬用戶使用的系統賬號
                   virtual_use_local_privs=YES     #虛擬用戶擁有本地系統權限

                   chroot_local_user=NO             
                   chroot_list_enable=YES
                    
#以下兩行將虛擬用戶限制在其目錄下,不能訪問其他目錄,或者直接用                           
                   chroot_local_user=YES
                              

                   listen=yes               
#監聽/被動模式
                   listen_port=21        #監聽端口

                  
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list       #虛擬用戶名單保存在文件/etc/vsftpd/vsftpd.chroot_list 中
                  
user_config_dir=/etc/vsftpd/vsftpd_user_conf   #每個虛擬用戶名的更加詳細的培植保存在/etc/vsftpd/vsftpd_user_conf 中

5. 虛擬用戶其他設置

      在
/etc/vsftpd/vsftpd.chroot_list 文件中寫入允許登陸的虛擬用戶名稱,每行一個
     
在/etc/vsftpd/vsftpd_user_conf 文件夾中創建一個以虛擬用戶用戶名命名的文件,
      寫入:
local_root = /var/FTP/子目錄名
      然後在/var/FTP下創建一個對應的目錄即可
                  
6. 安裝完成後出現兩個問題:

1: 500 OOPS: vsftpd: both local and anonymous access disabled!
    通過在vsftpd.conf中將local_enable=YES解決

2 : [右] 500 OOPS: cannot locate user entry:ftpsecure
     [右] 500 OOPS: child died
3.  可以上傳空文件夾,可以下載,但是不能上傳文件
    
這是因爲公司硬件防火牆設置導致的,ftp上傳的流攔截掉了,所以導致傳輸錯誤.


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