編譯安裝vsftpd-3.0.2


編譯安裝vsftpd

首先下載源碼包(我一般喜歡放在/home/test)

解壓:tar -zxvf vsftpd-3.0.2.tar.gz

進入目錄進行編譯

cd vsftpd-3.0.2

編譯之前記得gcc c++已經安裝(低級錯誤)還有幾個依賴yum一下唄

yum install libcap  tcp_wrappers  tcp_wrappers_devel

編譯安裝

make && make install

編譯安裝成功,啟動文件在/usr/local/sbin

然后就到配置文件

新建目錄

mkdir -p /etc/vsftpd

新建配置文件vsftpd.conf或者把源碼的配置文件cp過來

touch /etc/vsftpd/vsftpd.conf
cp /home/test/vsftpd-3.0.2/vsftpd.conf /etc/vsftpd/

新建啟動腳本(沒有也可以,可以目錄啟動)把腳本扔進/etc/init.d/下

#!/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.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 0
RETVAL=0
prog="vsftpd"
start() {
        # Start daemons.
        if [ -d /etc ] ; then
                for i in `ls /etc/vsftpd/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 1
esac
exit $RETVAL

授予執行權

chmod +x vsftpd

加入服務

chkconfig --add vsftpd

開機啟動

chkconfig vsftpd on

或者

chkconfig vsftpd 2345 on

下面是/etc/vsftpd/下的文件

chroot_list  vsftpd.conf  vsftpd.conf_bck  vuser_conf  vuser_passwd.db  vuser_passwd.txt  welcome.txt

首先配置vsftpd.conf

anonymous_enable=NO

local_enable=YES

local_root=/home/test

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

ascii_upload_enable=YES
ascii_download_enable=YES

pam_service_name=vsftpd

guest_enable=YES
guest_username=ftpadmin

user_config_dir=/etc/vsftpd/vuser_conf
allow_writeable_chroot=YES

banner_file=/etc/vsftpd/welcome.txt

接着chroot_list 

test1
ftpadmin
vsftpd

然后welcome.txt

Hello, Welcome to vsftpd !!

跟着vuser_passwd.txt

test
test
test1
test1
test2
test2

這里還有一步, 生成db密碼文件

db_load –T –t hash –f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db

最后新建vuser_conf文件夾

mkdir vuser_conf

里面放的是用戶限制

舉個例子: test用戶的

local_root=/opt/var/ftp1    #test用戶能進入的目錄
write_enable=YES
anon_umask=022
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

已經完成的差不多了, 最后就是開放21端口

iptables -I INPUT -p tcp --dport 21 -j ACCEPT

保存這個規則

service iptables save

重啟這個防火牆

service iptables restart

最后嘗試連接:賬號test密碼test

驗證一下test指定的目錄下/opt/var/ftp1是否是這幾個文件

 

接下來是外網連接

我使用的是ftp小黃

第一次連接的時候我的情況是這樣的

然后我取消PASV驗證

最后是這樣的, 連接成功!

嘗試下載文件

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM