zoukankan      html  css  js  c++  java
  • 安装vsftp

    本文讲述了在Ubuntu 12.04环境下以源码编译方式安装vsftp 2.3.2的整个过程。更多关于vsftp的文章请参阅《Ubuntu 12.04 中 vsftp 的应用》。

    下载vsftp

    vsftp的官方网站是http://vsftpd.beasts.org/,现在国内好像访问不了。可以另外通过代理的方式,或者搜索国内的下载地址,例如站长下载

    下载vsftp到/usr/local/src目录:

    cd /usr/local/src
    sudo wget http://zj.down.chinaz.com/201101/vsftpd-2.3.2.tar.gz
    sudo tar zxvf
    vsftpd-2.3.2.tar.gz

    将下载的文件解压缩,解压缩后的目录为/usr/local/src/vsftpd-2.3.2。

    sudo tar zxvf vsftpd-2.3.2.tar.gz
    cd  vsftpd-2.3.2

    配置builddefs.h

    vsftp使用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 */

    默认的builddefs.h只开启了pamtcp_wrappersssh是关闭的。我们可以根据自己的需要进行调整这些配置。

    编译vsftp

    vsftp使用vsf_findlibs.sh脚本来查找相关的库文件。但是,由于我的Ubuntu是64位版本,库文件的位置与vsf_findlibs.sh脚本定义的位置不同,需要修改vsf_findlibs.sh脚本。

    查看自己电脑的硬件架构:

    $ uname -m
    x86-64

    如果输出x86_64,说明是64位平台。

    vsftp使用了libpam.so库,我们可以使用locate命令快速地定位到Ubuntu当前的库文件存放位置:

    $ locate libpam
    /lib/x86_64-linux-gnu/libpam.so.0
    /lib/x86_64-linux-gnu/libpam.so.0.83.0
    /lib/x86_64-linux-gnu/libpam_misc.so.0
    /lib/x86_64-linux-gnu/libpam_misc.so.0.82.0
    /lib/x86_64-linux-gnu/libpamc.so.0
    /lib/x86_64-linux-gnu/libpamc.so.0.82.1
    ... ...

    由此可知,Ubuntu将库文件位置移到了/lib/x86_64-linux-gnu目录。

    先备份vsf_findlibs.sh,然后用vi编辑器将其打开,简单的用下面的命令将原来的/lib目录替换为新的/lib/x86_64-linux-gnu目录:

    :%s?/lib/?/lib/x86_64-linux-gnu/?

    现在我们可以执行make命令编译vsftp了:

    make

    编译完成后检查是否成功:

    $ ls -l vsftpd
    -rwxrwxr-x 1 amonest amonest 124088  6月 21 09:31 vsftpd

    vsftp的先决条件

    vsftp默认配置需要"nobody"帐户,用下面的命令确认该帐户是否存在:

    $ useradd nobody
    useradd: user 'nobody' already exists

    vsftp默认配置需要空目录"/usr/share/empty",用下面的命令确认该目录是否存在:

    sudo mkdir /usr/share/empty

    对于匿名FTP,vsftp需要一个"ftp"的帐户和一个有效的home目录。

    sudo mkdir /var/ftp
    sudo useradd -d /var/ftp ftp

    注意:创建的/var/ftp目录默认所有者为root,不要将所有者修改为ftp,否则后面在客户端用ftp帐户连接时会提示“refusing to run with writable anonymous root”错误。

    创建"ftp"的帐户后,应该再使用passwd命令修改它的密码:

    sudo passwd ftp

    安装vsftp

    执行命令make install安装vsftp

    sudo make install

    安装过程中处理的内容定义在Makefile文件:

    install:
            if [ -x /usr/local/sbin ]; then \
                    $(INSTALL) -m 755 vsftpd /usr/local/sbin/vsftpd; \
            else \
                    $(INSTALL) -m 755 vsftpd /usr/sbin/vsftpd; fi
            if [ -x /usr/local/man ]; then \
                    $(INSTALL) -m 644 vsftpd.8 /usr/local/man/man8/vsftpd.8; \
                    $(INSTALL) -m 644 vsftpd.conf.5 /usr/local/man/man5/vsftpd.conf.5; \
            elif [ -x /usr/share/man ]; then \
                    $(INSTALL) -m 644 vsftpd.8 /usr/share/man/man8/vsftpd.8; \
                    $(INSTALL) -m 644 vsftpd.conf.5 /usr/share/man/man5/vsftpd.conf.5; \
            else \
                    $(INSTALL) -m 644 vsftpd.8 /usr/man/man8/vsftpd.8; \
                    $(INSTALL) -m 644 vsftpd.conf.5 /usr/man/man5/vsftpd.conf.5; fi
            if [ -x /etc/xinetd.d ]; then \
                    $(INSTALL) -m 644 xinetd.d/vsftpd /etc/xinetd.d/vsftpd; fi

    如果安装时提示man目录找不到,可以手工创建这些目录:

    sudo mkdir /usr/local/man/man5
    sudo mkdir /usr/local/man/man8

    安装过程没有复制默认配置文件,建议这样处理:

    sudo cp vsftpd.conf /etc

    测试vsftp

    vsftp可以运行在独立模式(standalone) ,也可以运行在inetd模式(inetd或xinetd)。以inetd模式运行vsftp,可以有更多的控制权,例如流量和连接数等。我们这里简单的以独立模式运行vsftp测试安装是否成功。

    编辑/etc/vsftpd.conf,确保listen选项是开启的:

    listen=YES

    这实际上就是告诉vsftp,当前以独立模式运行。

    启动vsftp:

    sudo /usr/local/sbin/vsftpd &

    连接vsftp,测试是否正常运行:

    $ ftp localhost
    Connected to localhost.
    220 (vsFTPd 2.3.2)
    Name (localhost:amonest): ftp
    331 Please specify the password.
    Password:
    230 Login successful.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> ls
    200 PORT command successful. Consider using PASV.
    150 Here comes the directory listing.
    -rw-r--r--    1 0        0            1361 Jun 21 03:03 README
    -rw-r--r--    1 0        0             112 Jun 21 03:03 README.security
    -rw-r--r--    1 0        0            2115 Jun 21 03:03 README.ssl
    -rw-r--r--    1 0        0             125 Jun 21 03:03 REWARD
    226 Directory send OK.
    ftp>

    最后上一张FlashFXP连接vsftp的图:

  • 相关阅读:
    512M内存机器如何用好Mysql
    linux下查找文件和文件内容
    记“debug alipay”一事
    OFBiz中根据店铺获取产品可用库存的方法
    ubuntu中安装eclipse
    ubuntu中安装jdk
    ubuntu14.04中解压缩window中的zip文件,文件名乱码的解决方法
    apache将请求转发到到tomcat应用
    网站不能访问的原因
    birt报表图标中文显示为框框的解决方法
  • 原文地址:https://www.cnblogs.com/eastson/p/2556461.html
Copyright © 2011-2022 走看看