面向初学者的vsftpd安装指南


    在最新的各大发行版中的安装盘中都有vsFTPd的软件包,您用相应发行版提供的软件包管理工具就能安装上;当然您可以到各大发行版的FTP镜像中找到vsftpd的软件包;当然也能用软件包的管理工具在线安装;vsftpd的软件包本来不大,花不了多长时间,两分钟就够了吧。因为本文是初学者教程,我严重推荐您用发行版提供的软件来安装,不推荐您自己来编译源码包的安装方式;
    如果您用的是Fedora 或Redhat 系统,可以用下面的命令在线安装;
    [root@localhost ~]# yum install vsftpd
    如果是debian 类系统,可以用apt 来在线安装;
    [root@localhost ~]# apt-get install vsftpd
    如果您是RPM的系统,也可以找到vsftpd-xxxx.rpm 的包来通过rpm命令来安装;
    [root@localhost ~]# rpm -ivh vsftpd*.rpm
    您可以下载源码包来安装
    比如我们下载的是 vsftpd-2.0.3.tar.gz ;
    
[root@localhost ~]# tar zxvf vsftpd-2.0.3.tar.gz
[root@localhost ~]# cd vsftpd-2.0.3
[root@localhost ~]# make ;make install
[root@localhost ~]# cp vsftpd.conf /etc

    然后修改/etc/vsftpd.conf ,在配置文件的最后一行加入下面一行;
    listen=yes
    源码包安装的方法,如果您的系统是RPM包管理的系统,可以删除/etc/xinetd.d/vsftpd 这个文件;然后启动xinetd 服务器;
    [root@localhost ~]# /etc/init.d/xinetd restart
    停止 xinetd:                                              [  确定  ]
    启动 xinetd:                                              [  确定  ]
    vsFTPd运行有两种模式,在RPM包管理的系重审统,大多是由Fedora/Redhat 开发而来,对于这样的系统有xinted服务器一说;对于非RPM包管理的系统,一般没有xinted这一说。为了保证本文档的统一,我们都不要用xinetd模式,而用initd运行模式来启动和管理服务器,也就是独立运行模式。
    什么是xinetd模式和initd模式
    像其它守护程序一样,vsftpd提供了standalone和inetd(inetd或xinetd)两种运行模式。简单解释一下, standalone一次性启动,运行期间一直驻留在内存中,优点是对接入信号反应快,缺点是损耗了一定的系统资源,因此经常应用于对实时反应要求较高的专业FTP服务器。inetd恰恰相反,由于只在外部连接发送请求时才调用FTP进程,因此不适合应用在同时连接数量较多的系统。此外,inetd模式不占用系统资源。除了反应速度和占用资源两方面的影响外,vsftpd还提供了一些额外的高级功能,如inetd模式支持per_IP(单一IP)限制,而 standalone模式则更有利于PAM验证功能的应用。
    1.xinetd运行模式
    大多数较新的系统采用的是xinetd超级服务守护进程。使用“vi /etc/xinetd.d/vsftpd” 看一下它的内容,如下:
    disable = no
    socket_type = stream
    wait = no
    # 这表示设备是激活的,它正在使用标准的TCP Sockets。
    如果“/etc/vsftpd.conf”中的有选项为“listen=YES”,注销它
    最后,重启xinetd,命令如下:
    $ /etc/rc.d/init.d/xinetd restart
    需要注意的是,“/etc/xinetd.d”目录中仅能开启一个FTP服务。
    2.standalone模式
    standalone模式便于实现PAM验证功能。进入这种模式首先要关闭xinetd下的vsftpd,设置
    “disable = yes”,或者注销掉“/etc/inetd.conf”中相应的行。然后修改“/etc/vsftpd.con
    f”中的选项为“listen=YES”。
    如果是standlone模式,那么它是作为单独的一个服务启动的,不需要系统协作,不作为系统服务, 
    如果要是成为xinetd模式,那么它的服务就要受系统服务的限制,比如创建一个新的服务进程,但是也有缺点,如果xinetd服务本身出了问题,那么相关的服务也是会受到影响的。
    xinetd模式和standalone模式的区别
    以xinetd模式运行的服务表示该服务进程并不以守护进程执行,以FTPD进程为例吧,以xinetd模式运行这个服务,情况是这样的,本身FTP服务是会监听21号端口的,但是以这种模式运行这个服务的话,21号端口则由xinetd进程来监听(此时FTPD服务并没有运行),如果你的网卡接收到有21号端口请求,则有xinetd进程会去调用FTPD程序,将在21号端口接收到的请求数据移交给FTPD进程去处理,处理完后FTPD进程退出,而xinetd进程继续监听21号端口,这有点类似windows的svhost进程;而以 standalone模式运行的服务则是服务进程,如ftpd以守护进程在内存中运行,接收到21号端口的请求后由FTPD进程fork出一个子进程进行处理,而原进程继续监听21号端口。