• vsftp安装和配置


     

    2013-10-10 10:49:48|  分类: Linux|举报|字号 订阅

     
     
    源码下载地址:ftp://vsftpd.beasts.org/users/cevans/untar/
     

    1. 解压软件


        [root@redhat local]# tar -zxvf vsftpd-2.3.2.tar.gz    //解压vsftp source文件
        [root@redhat local]# cd vsftpd-2.3.2    //进入解压后的目录

        [root@redhat vsftpd-2.3.2]# more INSTALL //看看安装说明。比如要做什么工作。是个英文文档.

      2. 提供安装vsftpd服务的前提条件(根据上面more INSTALL的安装说明)

        [root@redhat vsftpd-2.3.2]# useradd nobody //这里需要加一个nobody用户。大家可以使用finger nobody查看下。看是否有这个用户,如果有就不需要加了.

            useradd: user nobody exists

        [root@redhat vsftpd-2.3.2]# mkdir /usr/share/empty/    //这一步同上。服务器 需要一个empty的空目录放在/usr/share/下。可以使用ls /usr/share/empty查看。如果存在就不需要了,这步也可以跳过。

            mkdir: 无法创建目录 `/usr/share/empty': 文件已存在

        如果需要开启匿名用户访问,需要做下面几步工作 
        [root@redhat vsftpd-2.3.2]# mkdir /var/ftp/    //创建供匿名用户使用的目录 
      [root@redhat vsftpd-2.3.2]# useradd -d /var/ftp ftp //创建ftp用户并且指定家目录为/var/ftp,这个步骤一般的系统也有。如果创建提示:user ftp exists(FTP用户存在)就表示此用户已经存在。

    3. 编译源代码及安装

        [root@redhat vsftpd-2.3.2]# make    //编译二进制文件

    问题1.

    在执行make命令时却出现了问题,具体如下:
    sysdeputil.o: In function `vsf_sysdep_check_auth':
    sysdeputil.c:(.text+0x109): undefined reference to `crypt'
    sysdeputil.c:(.text+0x13a): undefined reference to `crypt'
    collect2: ld 返回 1
    make: *** [vsftpd] 错误 1

     

    解决方法:

    打开Makefile

    vim Makefile

    LIBS    =       `./vsf_findlibs.sh`

    末尾增加 -lcrypt 变成

    LIBS    =       `./vsf_findlibs.sh` -lcrypt

     
    问题2
    install: cannot create regular file `/usr/local/man/man8/vsftpd.8': No such file or directory
    install: cannot create regular file `/usr/local/man/man5/vsftpd.conf.5': No such file or directory
    make: *** [install] Error 1
    解决方法:
    root@ubuntu:/home/linting/work/tools/vsftpd-3.0.2# mkdir /usr/local/man/man5
    root@ubuntu:/home/linting/work/tools/vsftpd-3.0.2# mkdir /usr/local/man/man8
     
     
    root@ubuntu:/home/linting/work/tools/vsftpd-3.0.2# make  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
     

    4. 安装、编辑配置

        [root@redhat vsftpd-2.3.2]# cp vsftpd.conf /etc/    //将默认配置文件考贝到/etc/                
        [root@redhat vsftpd-2.3.2]# cp RedHat/vsftpd.pam /etc/pam.d/vsftpd     //为了让vsftpd支持本地用户登录,我们将身份认证模块文件(PAM安全验证文件)拷贝到验证文件所在的目录。

        [root@redhat vsftpd-2.3.2]# vi /etc/vsftpd.conf 
      然后按,跳到行尾。设置 pam_server_name=vsftpd(要与你的PAM文件同名);userlist_enable=YES(用户列表的用户不允许登入服务器)。然后:wq保存退出

        [root@redhat vsftpd-2.3.2]# cp vsftpd.conf.5 /usr/local/man/man5 
      [root@redhat vsftpd-2.3.2]# cp vsftpd.8 /usr/local/man/man8 

      基本到这里。所有工作就做完了。

    配置vsftpd服务


    服务的启动与停止
        启动服务之前,我们先编辑配置文件/etc/vsftpd.conf. 打开配置文件后可以看到许多以“#”开始的行,这些行都是注释行,大多是帮助信息,可以仔细阅读。vsftpd.conf文件的所有项目都是以“参数=值 ”来设置的,对格式要求比较严格,必须严格区分大小写,等号两边不能有空格,每行的最后也不能有空格。每个参数都有一个默认值,没有在配置文件中明确指定 的参数就会使用默认值。我们这里不理会配置文件本来的信息,把所有内容都删掉或注释掉,最后加上下面四行,每行右边的//及后的文字是含义说明,不要输入 到文件中:
        listen=yes                        //vsftpd工作在standalone 模式下
        anonymous_enable=yes                //允许匿名用户登陆服务器
        local_enable=yes                    //允许本地用户登录到服务器
        pam_service_name=vsftpd            //使用PAM认证

        vsftpd有两种工作模式,standalone模式和xinetd守护进程模式,第1行就是让其工作在standalone模式下。此种模式中,每次 修改配置文件必须重新启动vsftpd服务才能生效,关于两种模式在后面有详细介绍。我们安装时还把 Redhat 目录下的 vsftpd.pam 文件复制成了/etc/pam.d/vsftpd 文件。这个文件就是本地用户登陆的 pam 验证配置文件。关于这个文件我们会在后面具体介绍。这里我们要知道,必须得有这个配置文件,而且主配置文件里要加上 pam_service_name=vsftpd语句,我们才能让本地用户登陆。用以下命令启动服务:
        [root@redhat vsftpd-2.3.2]# /usr/local/sbin/vsftpd &    //后台启动vsftp

    问题3:

    500 OOPS: bad bool value in config file for: anonymous_enable

    看似配置文件错误,看了一下配置相应的行: anonymous_enable=NO 语句没什么错误,不过把这行注释后又到下一行报错,看来是整个文件都有问题,百度了一下,大部分都是说语句后面不能有多余的空格,但是用VI看来不了行末是否有多余的字符,干脆把配置文件下载下来,发现这个文件是一般PC(WINDOWS,CRLF)的格式的,所文件改为UNIX(LF)格式再上传,VSFTP就可以启动了

    以下 sed 调用将把 DOS/Windows 格式的文本转换成可信赖的 UNIX 格式:

    $ sed -e 's/.$//' mydos.txt > myunix.txt 

    怎么查看一个既有文件的格式:

    unix上: file filename

    为保证服务确实启动,我们用如下命令检测:
        [root@redhat vsftpd-2.3.2]# netstat -an |grep 22
        tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN
        我们看到服务器已经打开了tcp21端口,表明ftp确实已经启动。

    再登录服务器:
        [root@redhat vsftpd-2.3.2]# ftp 127.0.0.1
        Connected to 127.0.0.1.
        220 (vsFTPd 2.0.5)
        530 Please login with USER and PASS.
        530 Please login with USER and PASS.
        KERBEROS_V4 rejected as an authentication type
        Name (127.0.0.1:root): ftp
        331 Please specify the password.
        Password:
        230 Login successful.
        这时我们已经用匿名用户(用户名ftp或anonymous,密码任意)登录到服务器了,还可以用本地用户登录。我们做测试时建议使用如上所示的ftp命 令(windows、Linux及Unix都带这个命令,用法都是一样的)来登录服务器,这样可以看到更详细的信息,对于我们调试服务器是非常有帮助的。 最简单的ftp服务器就已经达建起来了。

    使用如下命令关闭ftp服务:
        [root@redhat vsftpd-2.3.2]# killall vsftpd    //或是 pkill vsftpd

        [root@redhat vsftpd-2.3.2]# pgrep vsftpd   //查看vsftpd服务器是否已经关闭

     开机自启动
                用vi打开etc/rc.local在里面加入/usr/local/bin/vsftpd & 即可。

    service vsftpd restart 重启vsftpd服务

     

  • 相关阅读:
    创建用户自定义函数 SQL
    sql with as 用法
    将string转为同名类名,方法名。(c#反射)
    linq 实现对象映射
    sql 游标
    C#编程总结(六)异步编程
    线程加锁解锁,用于循环条件不确定大小
    滚动条随代码滚动
    C# 代码小技巧
    reload方法
  • 原文地址:https://www.cnblogs.com/little-white/p/3757937.html
Copyright © 2020-2023  润新知