您的位置:首页 > 编程语言 > PHP开发

vaftpd源码安装及配置教程

2015-06-15 17:06 639 查看
vaftpd源码安装及配置教程
准备工作:卸载系统自带的低版本vsftpd
rpm -e vsftpd yum install tcp_wrappers-devel libcap-devel -y
1.源码安装
wget -p /usr/local/src/ https://security.appspot.com/downloads/vsftpd-3.0.2.tar.gz #需要***
cd /usr/local/src/ && tar xf vsftpd-3.0.2.tar.gz && vsftpd-3.0.2
1)修改 builddefs.h文件
===========================
vim builddefs.h
#ifndef VSF_BUILDDEFS_H
#define VSF_BUILDDEFS_H
#undef VSF_BUILD_TCPWRAPPERS
#define VSF_BUILD_PAM
#undef VSF_BUILD_SSL
#endif /* VSF_BUILDDEFS_H */
将以上undef的都改为define,支持tcp_wrappers,支持PAM认证方式,支持 SSL
即修改为如下:
=======================
#ifndef VSF_BUILDDEFS_H
#define VSF_BUILDDEFS_H
#defineVSF_BUILD_TCPWRAPPERS
#define VSF_BUILD_PAM
#define VSF_BUILD_SSL
#endif /* VSF_BUILDDEFS_H */
========================
2)编译
make
=============================
报错:
tcpwrap.c: 在函数‘vsf_tcp_wrapper_ok’中:
tcpwrap.c:29: 错误:‘req’的存储大小未知
cc1: warnings being treated as errors
tcpwrap.c:31: 错误:隐式声明函数‘request_init’
tcpwrap.c:31: 错误:‘RQ_DAEMON’未声明(在此函数内第一次使用)
tcpwrap.c:31: 错误:(即使在一个函数内多次出现,每个未声明的标识符在其
tcpwrap.c:31: 错误:所在的函数内也只报告一次。)
tcpwrap.c:31: 错误:‘RQ_FILE’未声明(在此函数内第一次使用)
tcpwrap.c:32: 错误:隐式声明函数‘fromhost’
tcpwrap.c:33: 错误:隐式声明函数‘hosts_access’
tcpwrap.c:29: 错误:未使用的变量‘req’
make: *** [tcpwrap.o] 错误 1
原因:缺少tcp_wrappers-devel
解决:yum install tcp_wrappers-devel -y
报错:
/usr/bin/ld: cannot find -lcap
collect2: ld 返回 1
make: *** [vsftpd] 错误 1
原因:缺少libcap-devel中包含的libcap.so文件
解决:yum install libcap-devel -y
=============================
3)创建相应的用户及用户目录
useradd -s /sbin/nologin nobody && mkdir /usr/share/empty #vsftp默认用户目录
mkdir /var/ftp #ftp用户登录家目录
useradd -d /var/ftp -s /sbin/nologin ftp && chown root.root /var/ftp && chmod og-w /var/ftp #ftp家目录权限设置
4)安装vsftp
make install
5)使用独立守护进程管理vsftpd服务的启动
vim /etc/xinetd.d/vsftpd
把 disable=yes改成no
或者做成独立服务的启动形式
vim /etc/init.d/vsftpd chmod +x /etc/init.d/vsftpd
=============================
#!/bin/bash

#chkconfig: 345 60 50
#description:vsftpd
. /etc/rc.d/init.d/functions
if [ -f /etc/init.d/functions ] ; then
. /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ] ; then
. /etc/rc.d/init.d/functions
else
exit 0
fi
vsftpd=/usr/local/sbin/vsftpd #vsftp启动脚本中配置vsftpd安装的路径
conf=/etc/vsftpd.conf
prog=vsftpd
RETVAL=0
start() {
if [ -n "`/sbin/pidof $prog`" ]
then
echo "$prog: already running"
echo
return 1
fi
echo "Starting $prog:"
base=$prog
$vsftpd $conf &
RETVAL=$?
usleep 5000000
if [ -z "`/sbin/pidof $prog`" ]
then
RETVAL=1
fi
if [ $RETVAL -ne 0 ]
then
echo "Startup failure" #vsftp启动脚本启动失败提示
else
echo "Startup success" #vsftp启动脚本启动成功提示
fi
echo
return $RETVAL
}

stop() {
echo "Stopping $prog:"
killall $vsftpd
RETVAL=$?
if [ $RETVAL -ne 0 ]
then
echo "Shutdown failure" #vsftp启动脚本停止失败提示
else
echo "Shutdown success" #vsftp启动脚本停止成功提示
fi
echo
}

case "$1" in
start)
start #vsftp启动脚本服务启动操作
;;
stop)
stop #vsftp启动脚本服务停止操作
;;
status)
status $vsftpd
RETVAL=$? #vsftp启动脚本服务状态
;;
restart)
stop
usleep 5000000 #vsftp启动脚本服务重启操作
start
;;
*)
echo "Usage: $prog {start|stop|restart|status}"
exit 1
esac
exit $RETVAL
=============================================================
2.vsftp服务配置 参考:http://blog.csdn.net/junmuzi/article/details/8446060Linux如何配置ftp服务器、给ftp服务器添加访问用户 http://hbzylm.blog.51cto.com/613851/970162 源码安装vsftp

1)本地用户登录的认证文件
cp RedHat/vsftpd.pam /etc/pam.d/ftp
vsftpd的配置文件
cp vsftpd.conf /etc/vsftpd.conf
修改vsftpd.conf
======================================
#anonymous_enable=YES
#guest_enable=YES
#guest_username=ftp
pasv_min_port=30001
pasv_max_port=31000
# Uncomment this to allow local users to log in.
local_enable=YES
#传输速度限制,0表示不限制
local_max_rate=0
#最大客户端连接数
max_clients=5
#同一IP最大连接数
max_per_ip=5
write_enable=YES
local_umask=022
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
#chown_uploads=YES
#chown_username=whoever
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
#idle_session_timeout=600
#data_connection_timeout=120
#nopriv_user=ftpsecure
#async_abor_enable=YES

ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=*
banner_file=/opt/welcome.txt

#deny_email_enable=YES
#banned_email_file=/etc/vsftpd.banned_emails
#chroot_local_user=YES
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd.chroot_list
ls_recurse_enable=YES
listen=YES
===================================

防火墙设置:参考http://blog.csdn.net/highball/article/details/8521954 为开放ftp配置iptables
vim /etc/sysconfig/iptables
-A INPUT -p tcp --dport 21 -j ACCEPT
-A INPUT -p tcp --dport 20 -j ACCEPT
-A INPUT -p tcp --dport 30001:31000 -m state --state ESTABLISHED,RELATED -j ACCEPT
导入模块http://blog.csdn.net/highball/article/details/8521954
modprobe ip_nat_ftp
modprobe ip_conntrack
modprobe ip_conntrack_ftp

开机自启动
vim /etc/sysconfig/iptables-conf
IPTABLES_MODULES="modprobe ip_conntrack"
IPTABLES_MODULES="ip_conntrack_ftp"
IPTABLES_MODULES="ip_nat_ftp"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ftp Linux