vsftpd-3.0.2 x86_64 編譯安裝

來源:互聯網
上載者:User

標籤:

一、環境

CentOS 5.6 x86_64
ip:192.168.10.100

二、編譯相依元件

yum -y install gcc gcc-c++ db4-utils pam-devel

三、編譯安裝配置vsftpd

1、編譯

wget https://security.appspot.com/downloads/vsftpd-3.0.2.tar.gztar -zxf vsftpd-3.0.2.tar.gzcd vsftpd-3.0.2#vi builddefs.h    #define VSF_BUILD_TCPWRAPPERS             //允許使用TCP Wrappers(預設是undef)    #define VSF_BUILD_PAM                     //允許使用PAM認證    #define VSF_BUILD_SSL                     //允許使用SSL(預設是undef)make && make installmkdir /etc/vsftpd/cp vsftpd.conf /etc/vsftpd/vsftpd.bakgrep -v ‘^#‘ /etc/vsftpd/vsftpd.bak > /etc/vsftpd/vsftpd.conf#為了讓vsftpd支援本機使用者登入,講身份認證模組拷貝至系統目錄中cp RedHat/vsftpd.pam /etc/pam.d/vsftpd

2、配置vsftpd獨立啟動

#vi /etc/xinetd.d/vsftpd

將disable中no改成yes

3、服務啟動指令碼的製作

在standalone 模式中,經常用上面的命令啟動服務比較麻煩,我們做一個指令碼來啟動和停止服務。建立一個新檔案/etc/rc.d/init.d/vsftpd,把以下內容複寫到檔案中:

#!/bin/bash## vsftpd      This Shell script takes care of starting and stopping#             standalone vsftpd.## chkconfig: - 60 50# description: Vsftpd is a ftp daemon, which is the program #              that answers incoming ftp service requests.# processname: vsftpd# config: /etc/vsftpd/vsftpd.conf# Source function library.. /etc/rc.d/init.d/functions# Source networking configuration.. /etc/sysconfig/network# Check that networking is up.[ ${NETWORKING} = "no" ] && exit 0[ -x /usr/local/sbin/vsftpd ] || exit 0RETVAL=0prog="vsftpd"start() {        # Start daemons.        if [ -d /etc/vsftpd ] ; then                for i in `ls /etc/vsftpd/*.conf`; do                        site=`basename $i .conf`                        echo -n $"Starting $prog for $site: "                        /usr/local/sbin/vsftpd $i &                        RETVAL=$?                        [ $RETVAL -eq 0 ] && {                           touch /var/lock/subsys/$prog                           success $"$prog $site"                        }                        echo                done        else                RETVAL=1        fi        return $RETVAL}stop() {        # Stop daemons.        echo -n $"Shutting down $prog: "        killproc $prog        RETVAL=$?        echo        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog        return $RETVAL}# See how we were called.case "$1" in  start)        start        ;;  stop)        stop        ;;  restart|reload)        stop        start        RETVAL=$?        ;;  condrestart)        if [ -f /var/lock/subsys/$prog ]; then            stop            start            RETVAL=$?        fi        ;;  status)        status $prog        RETVAL=$?        ;;  *)        echo $"Usage: $0 {start|stop|restart|condrestart|status}"        exit 1esacexit $RETVAL

儲存檔案,再給該檔案加上執行許可權:

# chmod 755 /etc/rc.d/init.d/vsftpd

這樣我們就可以通過下面的方法來管理服務了:

# service vsftpd {start|stop|restart|condrestart|status}

例如重新啟動服務:

# service vsftpd restartShutting down vsftpd: [OK ]Starting vsftpd for vsftpd: [OK ]

四、建立虛擬使用者

1. 添加虛擬使用者口令檔案

[[email protected] /]#vi /etc/vsftpd/vuser.txt

添加虛擬使用者名稱和密碼,一行使用者名稱,一行密碼,以此類推。奇數行為使用者名稱,偶數行為密碼。

test001 #使用者名稱123456 #密碼test002 #使用者名稱123456 #密碼

2. 產生虛擬使用者口令認證檔案

將剛添加的vuser.txt虛擬使用者口令檔案轉換成系統識別的口令認證檔案。

[[email protected] /]#db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db

3. 編輯vsftpd的PAM認證檔案

[[email protected] /]#vi /etc/pam.d/vsftpd

將裡面其他的都注釋掉,添加下面這兩行:

auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vuseraccount required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser

4. 建立本機對應使用者並設定宿主目錄許可權

所有的FTP虛擬使用者需要使用一個系統使用者,這個系統使用者不要求輸入密碼。

[[email protected] /]#useradd vftp -d /data -s /bin/false

5. 配置vsftpd.conf(設定虛擬使用者配置項)

[[email protected] /]#vi /etc/vsftpd/vsftpd.confguest_enable=YES #開啟虛擬使用者guest_username=vftp #FTP虛擬使用者對應的系統使用者pam_service_name=vsftpd #PAM認證檔案

6. 重啟vsftpd服務

[[email protected] /]#service vsftpd restart

7. 測試虛擬使用者登入FTP

Z:>ftp 192.168.10.100串連到192.168.10.100。220 Welcome to this FTP server使用者(17192.168.10.100(none)):test001331 Please specify the password.密碼:230 login successful.

 設定檔執行個體

/etc/vsftpd/vsftpd.conflisten=yesftpd_banner=Welcome to this FTP Serverlocal_enable=yesanonymous_enable=nochroot_local_user=yesuser_config_dir=/etc/vsftpd/userconfigguest_enable=yesguest_username=vftppam_service_name=vsftpdwrite_enable=yesdownload_enable=yesdirlist_enable=yeshide_ids=yesuse_localtime=yescheck_shell=no

 虛擬使用者配置執行個體

/etc/vsftpd/userconfig/test001

test001的根目錄為/data,許可權為可上傳、下載、建立、改名和刪除的許可權。

local_root=/dataanon_world_readable_only=nowrite_enable=yesanon_upload_enable=yesanon_other_write_enable=yesanon_mkdir_write_enable=yes

遇到的問題及解決方案:

/lib/libcap.so.1: could not read symbols: file in wrong formatcollect2: ld returned 1 exit statusmake: *** [vsftpd] Error 1

解決方案:

修改vsftpd 源碼包的vsf_findlibs.shvi vsf_findlibs.sh將locate_library /lib/libpam.so.0 && echo "/lib/libpam.so.0";改為locate_library /lib64/libpam.so.0 && echo "/lib64/libpam.so.0";/lib/libcap.so.1: could not read symbols: File in wrong formatcollect2: ld returned 1 exit statusmake: *** [vsftpd] Error 1

解決方案:

同樣修改vsf_findlibs.sh將# look for libcap (capabilities)if locate_library /lib/libcap.so.1; then  echo "/lib/libcap.so.1";else  locate_library /usr/lib/libcap.so && echo "-lcap";  locate_library /lib/libcap.so && echo "-lcap";fi修改為# Look for libcap (capabilities)if locate_library /lib64/libcap.so.1; then  echo "/lib64/libcap.so.1";else  locate_library /usr/lib64/libcap.so && echo "-lcap";  locate_library /lib64/libcap.so && echo "-lcap";fi

 3、500 OOPS: vsftpd: refusing to run with writable root inside chroot()

解決方案:

這個錯誤是在v2.3.5以後才有的,見官方changlog如下(意思是不能使用chroot限制可寫的根目錄):

Add stronger checks for the configuration error of running with a writeable root directory inside a chroot(). This may bite people who carelessly turned on chroot_local_user but such is life.

好吧,我們如果啟用chroot,必須保證ftp根目錄不可寫,這樣對於ftp根直接為網站根目錄的使用者不方便,所以建議假如ftp根目錄是/data,那麼網站結構可以這樣分,/data/log為日誌目錄,/data/web為網站根目錄,這樣我們就可以去掉/data目錄的寫入許可權而不影響網站的正常運行。

chmod a-w /data

vsftpd-3.0.2 x86_64 編譯安裝

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.