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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实现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       

以上是关于实现FTP基于MYSQL虚拟用户认证的主要内容,如果未能解决你的问题,请参考以下文章

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

ftp实现通过数据库的虚拟用户认证

搭建FTP-----基于文件验证的虚拟用户

FTP实现基于MYSQL验证的FTP虚拟用户

19vftpd基于PAM_MYSQL进行虚拟用户的认证且每个用户有自己的独立目录及不同的访问权限

FTP基于PAM和MySQL/MariaDB实现虚拟用户访问控制