vsftpd-3.0.2 x86_64 编译安装

一、环境

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.gz
tar -zxf vsftpd-3.0.2.tar.gz
cd 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 install
mkdir /etc/vsftpd/
cp vsftpd.conf /etc/vsftpd/vsftpd.bak
grep -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 0
RETVAL=0
prog="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 1
esac
exit $RETVAL

保存文件,再给该文件加上执行权限:

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

这样我们就可以通过下面的方法来管理服务了:

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

例如重新启动服务:

# service vsftpd restart
Shutting 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/vuser
account 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.conf
guest_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)):test001
331 Please specify the password.
密码:
230 login successful.

配置文件实例

/etc/vsftpd/vsftpd.conf
listen=yes
ftpd_banner=Welcome to this FTP Server
local_enable=yes
anonymous_enable=no
chroot_local_user=yes
user_config_dir=/etc/vsftpd/userconfig
guest_enable=yes
guest_username=vftp
pam_service_name=vsftpd
write_enable=yes
download_enable=yes
dirlist_enable=yes
hide_ids=yes
use_localtime=yes
check_shell=no

虚拟用户配置实例

/etc/vsftpd/userconfig/test001

test001的根目录为/data,权限为可上传、下载、创建、改名和删除的权限。

local_root=/data
anon_world_readable_only=no
write_enable=yes
anon_upload_enable=yes
anon_other_write_enable=yes
anon_mkdir_write_enable=yes

遇到的问题及解决方法:

/lib/libcap.so.1: could not read symbols: file in wrong format
collect2: ld returned 1 exit status
make: *** [vsftpd] Error 1

解决方法:

修改vsftpd 源码包的vsf_findlibs.sh
vi 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 format
collect2: ld returned 1 exit status
make: *** [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
时间: 2024-10-10 16:43:10

vsftpd-3.0.2 x86_64 编译安装的相关文章

CentOS6.5 编译安装zabbix3.0.5,编译安装zabbix_agent客户端

1.环境准备:CentOS6.5 当前地址为192.168.137.30搭建LAMP环境,YUM安装方式也可以,但是zabbix3.0要求提供PHP5.5以上版本.这里可以查看这篇文章:编译安装LAMP环境还需要重新编译PHP5.5,主要是提供最后三个参数.#编译前先安装如下开发组件 # yum groupinstall "Development tools" "Server Platform Development" # yum install -y curl-d

nginx-1.12.0版本(编译安装)-自定义安装路径

nginx-1.12.0版本(编译安装)-自定义安装路径 安装路径:/application/nginx-1.12.0 1.前期准备 安装编译需要的gcc和gcc-c++ yum install -y gcc gcc-c++ nginx依赖 pcre-devel.openssl-devel.zlib-devel yum install -y pcre pcre-devel openssl openssl-devel zlib zlib-devel 创建用户nginx,以该用户的身份执行nginx

CentOS 6.0最小化编译安装Nginx+MySQL+PHP+Zend

http://www.osyunwei.com/archives/235.html 引言: 操作系统:CentOS 6.0 32位         下载地址:http://mirrors.163.com/centos/6.0/isos/i386/CentOS-6.0-i386-bin-DVD.iso         安装方式:采用最小化安装,在安装系统的时候选择Minimal(CentOS 6.0默认就是Minimal安装模式,不含有任何可选安装包)         最小化安装完成之后,系统占用

ubuntu thrift 0.9.3编译安装

Table of Contents 1. 下载thrift源代码 2. 编译并安装 3. 运行测试程序 4. 安装 1 下载thrift源代码 git clone https://git-wip-us.apache.org/repos/asf/thrift.git thrift git checkout 0.9.3 2 编译并安装 安装依赖 apt-get install automake apt-get install libssl-dev apt-get install byacc apt-

centos 6.6编译安装git-2.7.0 最新git编译安装

系统环境:centos6.6 1,安装准备 yum -y install gcc zlib-devel openssl-devel perl cpio expat-devel gettext-devel openssl zlib curl autoconf tk yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel yum install perl-ExtUtils-MakeMaker package

nginx1.14.0源码编译安装

yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel mkdir /tools && cd /tools wget https://nginx.org/download/nginx-1.14.0.tar.gz useradd www -s /sbin/nologin -M tar xf nginx-1.14.0.tar.gz cd nginx-1.14.0 mkdir -p /application

CentOS6上编译安装ZABBIX 3.0

0x00  实验环境 系统:CentOS-6.8-x86_64 httpd:2.4.20 mysql:5.6.31 php:5.6.22 IP:10.0.0.4 0x01  编译安装zabbix3.0 1.下载zabbix源码包 [[email protected] src]# cd /usr/local/src/ [[email protected] src]# wget http://downloads.sourceforge.net/project/zabbix/ZABBIX%20Late

centos7 编译安装gcc5.4.0

安装依赖 yum groupinstall "Development Tools" yum install -y glibc-static libstdc++-static wget 下载源码 下载源码可以用不同的gcc镜像,我这里用这个美国的下载比较稳定,如果镜像不好用的话可以去 http://www.gnu.org/software/gcc/mirrors.html 找下合适的镜像进行下载 wget http://www.netgull.com/gcc/releases/gcc-5

编译安装LAMP环境:httpd-2.4+mysql5.6+php5.5

本文大纲: 1.安装前准备 2.编译安装Apache 3.安装Mysql数据库 4.编译安装PHP 5.配置httpd服务,使其支持php 6.安装Xcache加速器 7.启用服务器状态页面 8.PHP连接Mysql测试 所有软件包的网站下载地址: apr和apr-util:http://apr.apache.org/ httpd:http://httpd.apache.org/ 三条主线:2.0/2.2/2.4/ mysql:http://dev.mysql.com/downloads/mys