vsftp安装实战(成功)

我使用的是vsftpd-2.0.5.tar.gz
首先解压缩:tar -zxfv vsftpd-2.0.5.tar.gz
编译前请打开:builddefs.h
            #ifndef VSF_BUILDDEFS_H
            #define VSF_BUILDDEFS_H

           #undef VSF_BUILD_TCPWRAPPERS
           #define VSF_BUILD_PAM
           #undef VSF_BUILD_SSL

这里#define VSF_BUILD_PAM指定了要vsftpd支持pam,所以不要改成#undef VSF_BUILD_PAM
并将所有undef 改为define

检查完builddefs.h后,make编译,用ldd命令检查生成的vsftpd文件有没有加载/lib/libpam.so.0

# ldd vsftpd

       引用:

 libwrap.so.0 => /usr/lib/libwrap.so.0 (0x 003f 4000)

        libnsl.so.1 => /lib/libnsl.so.1 (0x 003a 4000)

        libpam.so.0 => /lib/libpam.so.0 (0x 00c 38000)

        libdl.so.2 => /lib/libdl.so.2 (0x 00ac 6000)

        libresolv.so.2 => /lib/libresolv.so.2 (0x 00c 14000)

        libutil.so.1 => /lib/libutil.so.1 (0x00479000)

        libcap.so.1 => /lib/libcap.so.1 (0x00af1000)

        libssl.so.4 => /lib/libssl.so.4 (0x0036e000)

        libcrypto.so.4 => /lib/libcrypto.so.4 (0x 0022f 000)

        libc.so.6 => /lib/tls/libc.so.6 (0x 0099a 000)

        libaudit.so.0 => /lib/libaudit.so.0 (0x 00c 29000)

        /lib/ld-linux.so.2 (0x00981000)

        libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x 0031a 000)

        libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0x00123000)

        libcom_err.so.2 => /lib/libcom_err.so.2 (0x0011e000)

        libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0x00207000)

        libz.so.1 => /usr/lib/libz.so.1 (0x00bce000)
   
如果没有libpam.so.0  那么需要安装pam-devel包:

      如果没有libssl.so.4  那么需要安装openssl 包
     
  然后重新编译vsftpd :
                                            make clean
                                            make

1. 编译成功后将以下文件复制到指定位置:
                                       cp vsftpd /usr/local/sbin/vsftpd    #这个是vsftpd执行文件,放在哪里无所谓,复制不复制都可以
                                       cp vsftpd.conf.5    /usr/local/share/man/man5
                                       cp vsftpd.8    /usr/local/share/man/man8
                                       cp vsftpd.conf   /etc/vsftpd/           #vsftpd主配置文件
                                       cp RedHat/vsftpd.pam /etc/pam.d/ftp           #PAM验证文件,以允许本地用户登录VSFTPD

2. 添加一个系统用户作为FTP虚拟用户,在MYSQL中设置虚拟用户账号和密码
   # useradd vsftpdguest
   # chown /var/FTP vsftpdguest.vsftpdguest
   # chmod 700 /var/FTP
   为确保安全 修改 /etc/passwd文件,将其中vsftpdguest对应的条目改为:
         vsftpdguest:x:511:511::/var/FTP:/sbin/nologin

   使vsftpdguest账号只能作为FTP用户,而不能作为一个系统用户登陆。
   下面创建用于登陆验证的mysql数据库:
         mysql>create database vsftpdvu;
  mysql>use vsftpdvu;
  mysql>create table users(name char(16) binary,passwd char(16) binary);
  mysql>insert into users (name,passwd) values ('xiaotong',password('qqmywife'));
  mysql>insert into users (name,passwd) values ('xiaowang',password('ttmywife'));
  
       mysql>
grant select on vsftpdvu.users to vsftpdguest@localhost
       mysql> set password for sftpdguest@localhost =password('123456 ')
       mysql>quit
                   
3. 配置pam_mysql

 
编辑/etc/pam.d/ftp文件:
     内容修改如下:
  auth required /lib/security/pam_mysql.so user=vsftpdguest passwd=123456 host=localhost db=vsftpdvu table=users usercolumn=name passwdcolumn=passwd crypt=2
  account required
/lib/security/pam_mysql.so user=vsftpdguest passwd=123456 host=localhost db=vsftpdvu table=users usercolumn=name passwdcolumn=passwd crypt=2

以上粗体部分意义依次如下:pam_mysql安全严整模块包的位置,mysql数据库用户名,密码,数据库服务器地址,数据库名,虚拟用户表,虚拟用户名称列,虚拟用户密码列,加密方式:0为明码,1为操作系统RAS加密,2为MYSQL password方法加密

4. 配置vsftpd.conf
                  
anonymous_enable=NO            #禁止匿名
                   local_enable=YES                      
#允许本地登录
                   write_enable=YES                        #允许写,如需上传,则必须
                   local_umask=027                        #将上传文件的权限设置为:777-local_umask
                   anon_upload_enable=YES          #允许虚拟用户和匿名用户 上传
                   anon_other_write_enable=YES
  #允许虚拟用户和匿名用户修改文件名和删除文件
                   dirmessage_enable=YES          
                   xferlog_enable=YES                      #打开日志记录
                   connect_from_port_20=YES
                   xferlog_file=/var/log/vsftpd.log    
#日志存放位置
                   xferlog_std_format=YES              #标准日志格式
                   idle_session_timeout=600        #空闲连接超时
                   data_connection_timeout=120
                   ftpd_banner=Welcome to ChinaRise FTP service       #欢迎信息
                   guest_enable=yes                       #允许虚拟用户
                   guest_username=vsftpdguest 
#虚拟用户使用的系统账号
                   virtual_use_local_privs=YES     #虚拟用户拥有本地系统权限

                   chroot_local_user=NO             
                   chroot_list_enable=YES
                    
#以下两行将虚拟用户限制在其目录下,不能访问其他目录,或者直接用                           
                   chroot_local_user=YES
                              

                   listen=yes               
#监听/被动模式
                   listen_port=21        #监听端口

                  
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list        #虚拟用户名单保存在文件/etc/vsftpd/vsftpd.chroot_list 中
                  
user_config_dir=/etc/vsftpd/vsftpd_user_conf    #每个虚拟用户名的更加详细的培植保存在/etc/vsftpd/vsftpd_user_conf 中

5. 虚拟用户其他设置

      在
/etc/vsftpd/vsftpd.chroot_list 文件中写入允许登陆的虚拟用户名称,每行一个
     
在/etc/vsftpd/vsftpd_user_conf 文件夹中创建一个以虚拟用户用户名命名的文件,
      写入:
local_root = /var/FTP/子目录名
      然后在/var/FTP下创建一个对应的目录即可
                  
6. 安装完成后出现两个问题:

1: 500 OOPS: vsftpd: both local and anonymous access disabled!
    通过在vsftpd.conf中将local_enable=YES解决

2 : [右] 500 OOPS: cannot locate user entry:ftpsecure
     [右] 500 OOPS: child died
3.  可以上传空文件夹,可以下载,但是不能上传文件
    
这是因为公司硬件防火墙设置导致的,ftp上传的流拦截掉了,所以导致传输错误.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值