实现FTP基于MYSQL虚拟用户认证

两台主机实现:一台作为ftp服务器,一台作为mysql服务器
host1 : 192.168.1.107 vsftpd pam_mysql.so
host2 : 192.168.1.109 mariadb mariadb-server

一.准备数据库

1.安装数据库并启动mysql

        ~]# yum install mariadb  mariadb-server -y
        ~]# systemctl start mariadb   

2.创建vsftpd服务的虚拟数据库及用户列表

              1)创建vsftp的数据库
                    [none]> create database vsftpd;
                    [none]>use vsftpd
              2)创建vsftp虚拟用户表
                    [none]>create table vuser;
                    [none]>create table vuser (id int auto_increment primary key,username char(30),password char(50) binary);
              3)将虚拟用户的用户名及密码填入表中
                    [none]>insert into vuser(username,password)values(‘user1‘,password(‘centos‘)),(‘user2‘,password(‘linux‘));
              4)创建并授权用户,作为vsftp服务器连接数据库服务的授权用户
                    [none]>grant select on vsftpd.vuser to [email protected]‘192.168.1.107‘ identified by ‘centos‘;

二.vsftp服务器端准备

1.编译安装模块驱动pam_mysql.so

                 1) 准备编译环境所需要的包
                     ~]# yum install gcc gcc-c+ pam-devel mariadb-devel
                 2) 将驱动源码文件解压
                     ~]# tar xvf /data/tools/pam_mysql-0.7RC1.tar.gz   /data/tools
                 3) 进入模块驱动源码解压后的文件夹
                     ~]# cd /data/tools/pam_mysql-0.7RC1
                 4) 将模块驱动安装到正确的 路径下/lib64/security
                     ~]#  ./configure  --with-pam-mods-dir=/lib64/security
                  5) 进行编译安装
                     ~]#  make && make install     

2.创建pam配置文件

  ~]#  vim /etc/pam.d/vsftpd.mysql
    # 认证依赖于pam_mysql.so 模块,其余为连接数据库授权的用户、密码等信息
    auth required pam_mysql.so user=vsftpd passwd=centos host=192.168.1.109
    db=vsftpd table=vuser usercolumn=username passwdcolumn=password crypt=2
    # accunt 验证账号必须是有效性,其中crypt=2 为加密类型
     account required pam_mysql.so user=vsftpd passwd=centos host=192.168.1.109
     db=vsftpd table=vuser usercolumn=username passwdcolumn=password crypt=2     

3.修改vsftpd主配置文件,调用pam模块配置

         ~]#  vim /etc/vsftpd/vsftpd.conf

                 pam_service_name=vsftpd.mysql #调用pam模块
                 userlist_enable=YES
                 tcp_wrappers=YES

                 guest_enable=YES    #将所有用户映射到guest用户,并映射到其家目录
                 guest_username=vuser  #guest命名为vuser用户
                 user_config_dir=/etc/vsftpd/vusers.d/  #虚拟用户配置文件路径

4.创建系统用户指定其家目录

             ~]# useradd -r -s /sbin/nologin/  -d /data/ftproot   vuser
             给系统用户vuser设置权限,使的虚拟用户和其他用户映射到vuser,有权限上传文件或对文件增删改的必要条件,还需满足vsftp配置才能实现
             ~]#  setfacl -m u:vuser:rwx /data/ftproot/upload

5.创建虚拟用户配置文件,配置每个用户特定属性

    如:user1可以上传文件而user2不可以上传文件
             ~]# vim /etc/vsftpd/vusers.d/user1
                        anon_upload_enable=YES   #允许上传文件
                        anon_mkdir_write_enable=YES  #允许创建文件夹
                        anon_other_write_enable=YES   #可删除和可修改上传的文件
                        local_root=/data/user1   #指定user1的家目录

              ~]#vim /etc/vsftpd/vusers.d/user2
                         local_root=/data/user2  #指定user2的家目录

三.启动vsftp服务,实现mysql虚拟用户认证

              ~]#  systemctl start vsftpd       

原文地址:https://blog.51cto.com/14234542/2397650

时间: 2024-08-01 00:43:00

实现FTP基于MYSQL虚拟用户认证的相关文章

linux下ftp和ftps以及ftp基于mysql虚拟用户认证服务器的搭建

1.FTP协议:有命令和数据连接两种 命令连接,控制连接:21/tcp 数据连接: 主动模式,运行在20/tcp端口 和 被动模式,运行在随机端口 数据传输模式(自动模式):有二进制(mp3,jpg等)和文本(html)两种传输模式 ftp服务器端程序:wu-ftpd:vsftpd pureftpd Filezilla Serv-U ftp客户端程序:CLI文本模式命令:ftp lftp GUI图形界面软件:gftpd FlashFXP Cuteftp Filezilla vsftpd:命名为V

Vsftpd基于MySQL实现用户认证

ftp简介: ftp:File Transfer Protocol,文件传输协议:FTP是应用层协议,使用C/S架构,工作于20/tcp,21/tcp. FTP使用交互式访问模式,两个并行TCP连接,一个控制连接,一个数据连接,控制连接用于在客户机和服务器之间发送控制信息,比如用户和密码,改变远程目录和命令,上传下载文件等,数据连接用于真正发送数据.ftp有两种工作模式,主动模式(Active),被动模式(Passive). 数据: 命令连接:文件管理类命令,始终在线的连接 数据连接:数据传输,

vsftpd基于pam虚拟用户认证,还怕泄漏账号么?

一.ftp简要介绍 ftp是一个很古老的协议了,是一种基于明文传输的C/S架构协议.ftp基于tpc21.20端口,其中21端口为命令端口,20端口为数据端口.ftp命令连接同其他TCP连接一样,不过数据连接有两种模式: 主动模式,也称作PORT模式:命令请求端口时,服务器端为减少等待,主动将数据发送给客户端:使用本机的20端口请求客户端的端口.这里有个问题:服务器端想要主动连接客户端就需要知道客户端的端口号,可是客户端根本没有启动任何端口给服务器端.协议设计中服务器端根据客户端的命令连接端口(

基于apache整合svn服务器,基于mysql对用户认证

运行环境: 系统环境# uname -srLinux 2.6.32-504.16.2.el6.centos.plus.x86_64# cat /etc/issueCentOS release 6.6 (Final) Apache: httpd-2.4.12 svn: subversion-1.8.13 MySQL相关:  mariadb-10.0.17-linux-x86_64 mod_auth_mysql-3.0.0 其他依赖环境 pcre-8.37 serf-1.3.8 scons-2.3.

vsftpd基于mysql做虚拟用户认证

虚拟用户: 用户账号存储于何处? 文件,MySQL,Redis, ... vsftpd的认证功能托管给pam: Pluggable Authencate Module,认证框架,认证库: 通过模块完成认证功能:/usr/lib64/security/ pam_mysql模块: 下载pam_mysql的源码包官方下载http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz (1)准备编译安装环境 [[email pro

vsftpd基于pam_mysql的虚拟用户认证

1.ftp用户 匿名用户:映射到某一个固定的系统用户,例如(ftp,vsftp,/var/ftp) 本地用户:系统用户,root及系统用户(0-999) 虚拟用户:nsswitch: name services switch  名称服务转换 PAM: Plugabl Plugable Authentication Modules  插入式认证模块本文主要讲解vsftpd基于pam_mysql的虚拟用户认证步骤. 2.准备环境 操作系统 主机名 IP地址 环境描述 CentOS 7.1 ch7 1

VSFTP+MySQL虚拟用户配置

VSFTP+MySQL虚拟用户配置 1. 安装vsftp软件 下载vsftp(最新版本)软件: wget ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.1.0.tar.gz 如果要开始ssl功能的话,安装vsftp之前要先安装openssl-0.9.8g.tar.gz包 [[email protected] ftp]# tar xzvf openssl-0.9.8g.tar.gz [[email protected] ftp]# cd openssl

Centos下安装FTP并进行虚拟用户访问方式配置

1.准备工作 yum install pam* yum install db4* 首先安装PAM(用于用户认证)和DB4(用于生成虚拟用户的用户名密码的db文件). 2.安装vsftpd yum install vsftpd 设置vsftpd开机启动: chkconfig vsftpd on 通过chkconfig --list 查看启动项 3. 配置vsftpd.conf anonymous_enable=NO local_enable=YES write_enable=YES local_u

vsftpd使用虚拟用户认证

1.vsftpd安装ip:192.168.20.129 Centos 6.4-64系统) [[email protected] ~]# yum install -y vsftpd db4-utils 2.配置vsftp [[email protected] ~]#mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak [[email protected] ~]# vim /etc/vsftpd/vsftpd.conf listen=YES a