1.环境要求

系统版本:CentOS-6.4-i386

  源码包:vsftpd-3.0.2.tar.gz

源码包下载地址:http://pan.baidu.com/s/1iWmdA

2.步骤

查看组包。yum具体使用及配置,参见《CentOS下怎样配置本地源》

153736148.jpg

需要两个特别重要的组包.

Additional DevelopmentDevelopment tools

153736371.jpg

本机已经安装,如果未安装,使用以下命令安装。

153736311.jpg

上传需要使用的源码包。如果你的机器中已经安装了vsftp,建议先卸载,再安装源码。

153736712.jpg

解压该源码包,到指定位置。

155337670.jpg

切换到该指定位置。里面有INSTALL文件,其实这个INSTALL文件就是详细的安装步骤,只要按照这个文件中的步骤,就能成功安装ftp服务器。我们就按照INSTALL文档步骤,第一步要编辑builddefs.h的文件。

153736689.jpg

编辑builddefs.h文件

153925110.jpg

将TCPWRAPPERS这一项的undef修改为define就OK了。

153926420.jpg

执行安装。

154019654.jpg

出现错误,根据错误提示,是tcpwrap的问题。

154019538.jpg

利用本地源搜索下关于wrap的软件包。并安装tcp_wrappers-devel的包。

154019705.jpg

安装完成后,清除下刚才安装的缓存,重新安装。

154019877.jpg

完成后根据INSTALL文档的提示,创建nobody用户。创建后提示用户已存在。

154019670.jpg

搜索下nobody用户,确实已经存在。

154019246.jpg

接着按照文档提示,新建一个空目录,也已存在。

154041186.jpg

接着,创建ftp用户的家目录。并且添加到该用户,也已存在。

154041183.jpg

搜索下,ftp用户已存在,且家目录也正确。

154118632.jpg

接着,对该目录改变所有者和所属组都为管理员,并且把写的权限去掉(不让其他人随意向ftp中写东西哦)。

154118602.jpg

执行安装。

154118139.jpg

安装成功后,vsftpd存在了,且man8和man5手册都已创建。

154118743.jpg

再次根据INSTALL文档的提示,将配置文件拷贝到/etc下。

154118962.jpg

开始执行vsftpd服务。(&:在后台运行。)

154118100.jpg

查看21端口,已开启。

154118514.jpg

用本机测试下,但是lftp和ftp都打不开,缺少指令。

154208750.jpg

利用本地源搜索下这两个命令的包。

154208243.jpg

安装这两个命令。

154208112.jpg

再次访问下。可以匿名登录了,密码为空。

154208841.jpg

在/var/ftp下建立一个pub文件夹。

154208898.jpg

再次匿名访问,pub存在。lftp直接可以以匿名身份登录。

154231638.jpg

添加一个本地用户user1,并设置相应口令。

154231235.jpg

再次访问,用本地用户user1登录,提示失败。

154231593.jpg

根据INSTALL文档提示,拷贝接口文件。

154231924.jpg

并且编辑/etc下的配置文件。

154325233.jpg

将第15行的本地账号登录的注释去掉。

154325778.jpg

由于修改了配置文件,杀死ftp进程,重新启动。

154325219.jpg

154118100.jpg

重新测试,user1成功登录进去。

154325179.jpg

如果我们想要用service(以下方式)来执行该服务怎么办,那就编写vsftpd的脚本。

171022166.jpg

进入/etc/init.d下新建vsftpd文件,并赋予执行权限。

170943742.jpg

测试各种状态,OK。

170943707.jpg

脚本具体内容。

#!/bin/bash

[ -e /etc/init.d/functions ]  &&  . /etc/init.d/functions

prog=/usr/local/bin/vsftpd

lockfile=/var/lock/subsys/vsftpd

start () {

    if [ -e $lockfile ];then

      echo "The vsftpd server is started"

    else

        echo "The vsftpd server is starting..."

        sleep 1

        $prog && echo -e "[  \033[32mOK\033[0m  ]" && touch $lockfile || echo "failer"

    fi

}

stop () {

    if [ ! -e $lockfile ];then

      echo "The vsftpd server is stoped..."

    else

      echo -n "The vsftpd server is stoping..."

      sleep 1

      killproc vsftpd && echo "ok" && rm -rf $lockfile || echo "failer"

    fi

}

status () {

        if [ -e $lockfile ];then

           echo "The vsftpd server is running..."

        else

           echo "The vsftpd is stop"

        fi

}

case "$1" in

start)

   start

    ;;

stop)

   stop

    ;;

restart)

   stop

   start

    ;;

status)

   status

    ;;

*)

echo "USE ONLY:start|stop|restart"

esac