編譯安裝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驗證

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

嘗試下載文件

