返回顶部
首页 > 资讯 > 数据库 >FTP(六)实现基于MYSQL验证的FTP虚拟用户
  • 769
分享到

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

2024-04-02 19:04:59 769人浏览 独家记忆
摘要

实验准备:本实验在两台CentOS主机上实现,一台做为FTP服务 器,一台做数据库服务器 一台Centos-7当Mysql服务器 一台CentOS-6当FTP服务器注意,这里谁当FTP服务器很关键,因为

实验准备:本实验在两台CentOS主机上实现,一台做为FTP服务 器,一台做数据库服务器

  • 一台Centos-7当Mysql服务器
  • 一台CentOS-6当FTP服务器
    注意,这里谁当FTP服务器很关键,因为有一个PAM模块包是CentOS-7上没有的,需要源码编译,pam_mysql,下面我先演示CentOS-6当FTP服务器的例子

CentOS-6当FTP服务器

一,配置数据库服务器

1,在数据库服务器端安装mariadb-server包

    yum –y install  mariadb-server
    systemctl  start  mariadb 
    # 设为开机自动启动
    systemctl  enable mariadb

2,为了安全起见可以运行一下mariadb安全脚本

"mysql_secure_installation"

    第一项问你:输入root密码  回车即可,因为没有
    第二项问你:需要设置root密码么,当然要  敲Y
    第三项问你:需要删除空账号用户么,当然要  敲Y
    第四项问你:禁止root用户远程登入么,根据你们公司的需要
    第五项问你:需要删除test测试数据哭么,我不需要
    第六项问你:现在重新加载权限表吗 ,当然

3,在mariadb服务器端建立虚拟用户账号

 1,创建存储虚拟用户数据库和连接的数据库用户(带有mysql>的就表示需要连接到数据库执行操作)
     #创建数据库
     mysql> CREATE DATABASE vsftpd;  
     #查看数据库是否创建成功
     mysql> SHOW DATABASES;

 2,创建管理vsftpd数据库的用户。
     mysql> GRANT all ON vsftpd.* TO   vsftpd@'192.168.136.6' IDENTIFIED BY 'centos';  

    命令解析:
        GRANT:                 创建授权用户关键字
        all  :                  表示拥有对vsftpd这个数据库的所有权限
        vsftpd.*:              表示指定vsftpd的所有表
        vsftpd@'192.168.136.6': @ 前的vsftpd表示用户名,@ 后面的表示该用户只能在192.168.136.6这个主机登入,如果想表示一个网段可以加百分号:192.168.136.%
        IDENTIFIED BY 'centos': 作用设置密码,centos就是该用户的密码。

准备存放用户的相关表

    #切表
        mysql> USE vsftpd; 
    #查看表
        Mysql> SHOW TABLES;  
    #创建users表
        mysql>create table users (id int auto_increment not null primary key,name varchar(30) binary not null, passWord varchar(50) binary not null);

    命令解析:
        create table users:创建表名为users子句
        口号里的就表结构,用逗号分开的表示字段例如:第一个字段为id,第二个字段为name,第三个字段为password

        修饰符:
        int:           表示该字段为数字,
        auto_increment:表示该字段是整数自动增长
        not null:      表示该字段不能为空
        primary key:   表示该字段为主键
        varchar(30):   表示该字段可以是任意字符长度为30个
        binary:        作用是让字段能够用于登入验证

在user表中添加虚拟用户

根据需要添加所需要的用户,为了安全应该使用PASSWORD 函数加密其密码后存储

    #查看表结构
    mysql>DESC users;  
    #插入内容
    mysql> INSERT INTO users(name,password)    values('wang',password('wang'));  
    #插入内容
    mysql> INSERT INTO users(name,password)          values('li',password('li'));  
    #查看表内容
    mysql> SELECT * FROM users;

二,配置FTP服务器

1,在FTP服务器上安装vsftpd和pam_mysql包

 centos6:pam_mysql由epel6的源中提供   
 配置epel源:
    [epel]
    name=centos-epel
    baseurl=Http://mirrors.aliyun.com/epel/6/x86_64/
    gpGCheck=0
    enable=1
 #安装模块,以及FTP服务器端包
    yum install vsftpd pam_mysql

2,创建FTP所需PAM模块认证文件

因为需要连接数据库所以之前的PAM块已经不能用了,需要自己配置

在/etc/pam.d/目录下创建一个名为vsftpd.mysql存放PAM模块的配置文件
     cd /etc/pam.d/
     touch  vsftpd.mysql 
     vim vsftpd.mysql
     添加如下几行:
     auth required pam_mysql.so user=vsftpd passwd=centos host=数据库IP地址  db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 
     account required pam_mysql.so user=vsftpd passwd=centos host=数据库IP地址 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 

配置字段说明 
    • auth 表示认证 
    • account 验证账号密码正常使用 
    • required 表示认证要通过 
    • pam_mysql.so模块是默认的相对路径,是相对/lib64/security/路 径而言,也可以写绝对路径;后面为给此模块传递的参数 
    • user=vsftpd为登录mysql的用户 
    • passwd=magedu 登录mysql的的密码 
    • host=mysqlserver  mysql服务器的主机名或ip地址 
    • db=vsftpd  指定连接msyql的数据库名称 
    • table=users 指定连接数据库中的表名 
    • usercolumn=name 当做用户名的字段 
    • passwdcolumn=password 当做用户名字段的密码 
    • crypt=2 密码的加密方式为mysql password()函数加密 
    注意 :crypt是加密方式,0表示不加密,1表示crypt(3)加密,2表示 使用mysql password()函数加密,3表示md5加密,4表示sha1 加密 

3,建立系统普通用户,用作于虚拟用户映射的用户

一,创建用户,共享目录

    #创建虚拟用户映射的系统用户及对应的目录 
        useradd -s /sbin/nologin -d /var/ftproot vuser 
    #修改对应的目录权限,因为FTP共享根目录不能有写权限    
        chmod 555 /var/ftproot 
    #创建可以上传下载的共享目录
        mkdir /var/ftproot/{upload,pub}
    #并给vuser用户ACL权限
        setfacl –m u:vuser:rwx /var/ftproot/upload 

修改主配置文件

确认/etc/vsftpd.conf中是否已经启用了以下选项
    #支持匿名用户登入
        anonymous_enable=YES 
    #添加下面两项 ,作用是支持虚拟用户映射为某一个系统用户
        guest_enable=YES 
        guest_username=vuser 
    #修改下面一项,原系统用户无法登录 
        pam_service_name=vsftpd.mysql 

4,启动FTP服务

    #启动服务
        service vsftpd start
    #开机自动启动
        chkconfig vsftpd on
    #查看端口打开情况
    ss -ntlp|grep :21 

5,SElinux相关配置

   1,restorecon  -R /lib64/security 
   2,setsebool -P ftpd_connect_db 1 
   3,setsebool -P ftp_home_dir 1 
   4,chcon -R -t public_content_rw_t /var/ftproot/ 

最后测试

   1,li用户登入测试:成功
        [root@ansible-7 ~]# ftp 192.168.136.6
        Connected to 192.168.136.6 (192.168.136.6).
        220 (vsFTPd 2.2.2)
        Name (192.168.136.6:root): li
        331 Please specify the password.
        Password:
        230 Login successful.
        Remote system type is UNIX.
        Using binary mode to transfer files.
    2,wang用户登入测试:成功
        [root@ansible-7 ~]# ftp 192.168.136.6
        Connected to 192.168.136.6 (192.168.136.6).
        220 (vsFTPd 2.2.2)
        Name (192.168.136.6:root): wang
        331 Please specify the password.
        Password:
        230 Login successful.
        Remote system type is UNIX.
        Using binary mode to transfer files.

三,实现每个虚拟用户具有各自不同的权限

1,修改主配置文件

    vim /etc/vsftpd/vsftpd.conf  
    添加如下选项,作用是让虚拟用户支持独立权限配置文件,可以自定义存放目录。
    user_config_dir=/etc/vsftpd/vusers_config/ 

2,在/etc/vsftpd/vusers_config/目录下创建每个虚拟用户的权限配置文件,文件名对应用户名

    mkdir /etc/vsftpd/vusers_config/ 
    cd  /etc/vsftpd/vusers_config/ 
    touch wang 
    touch li

    "注意:虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关 指令进行的。   "
    下面的权限都可以添加至文件中,需要什么权限添加什么权限

            #是否支持上传功能
            anon_upload_enable={YES|NO}
            #是否支持创建文件功能
            anon_mkdir_write_enable={YES|NO} 
            #是否支持删除文件功能
            anon_other_write_enable={YES|NO} 
            #指定虚拟账户登入的共享目录
            local_root=/ftproot   

        例如:让wang用户支持上传,下载,删除文件的权限那么只需要在wang的权限配置文件中添加如下几行
        "注意:需确保对应的映射用户对于文件系统有写权限"
        vim  wang
        anon_upload_enable=YES 
        anon_other_write_enable=YES
        anon_mkdir_write_enable=YES

CentOS-7当FTP服务器只有一个地方不同,就是需要编译安装pam_mysql模块,其他概略相同。

步骤:

 # 安装开发包组
    yum -y groupinstall "Development Tools" 
 # 安装相关依赖包
    yum -y install mariadb-devel  pam-devel vsftpd
 # 去官网下载pam_mysql-0.7RC1.tar.gz源码https://sourceforge.net/projects/pam-mysql/
 # 解压缩包
    tar xvf pam_mysql-0.7RC1.tar.gz 
 # 进入pam_mysql-0.7RC1/目录开始编译   
    cd pam_mysql-0.7RC1/ 
 # 运行configure脚本
    ./configure \
    --with-mysql=/usr \ 
    --with-pam=/usr \
    --with-pam-mods-dir=/lib64/security
 # 编译开始
    make -j 4
 # 安装程序
    make install 
您可能感兴趣的文档:

--结束END--

本文标题: FTP(六)实现基于MYSQL验证的FTP虚拟用户

本文链接: https://lsjlt.com/news/37178.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • FTP(六)实现基于MYSQL验证的FTP虚拟用户
    实验准备:本实验在两台CentOS主机上实现,一台做为FTP服务 器,一台做数据库服务器 一台CentOS-7当MYSQL服务器 一台CentOS-6当FTP服务器注意,这里谁当FTP服务器很关键,因为...
    99+
    2024-04-02
  • 基于MySql验证的vsftpd虚拟用户
    目录1. Mysql安装1.2 建表建库建用户1.3 创建远程连接账户2. 安装FTP服务器2.1 安装vsftpd2.2 安装pam_mysql2.2 建立pam认证所需文件2.3...
    99+
    2024-04-02
  • ftp实现通过数据库的虚拟用户认证
    一、安装所需要程序1.安装ftp服务所需的软件包[root@fsy-Centos6 ~]# yum install vsftpd2.安装MySQL数据库:[root@fsy-Centos6 ~]# yum ...
    99+
    2024-04-02
  • MySql如何实现新建并验证vsftpd虚拟用户
    这篇文章将为大家详细讲解有关MySql如何实现新建并验证vsftpd虚拟用户,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1. Mysql安装yum -y install m...
    99+
    2023-06-25
  • vsftpd基于pam_mysql如何做虚拟用户认证
    这篇文章给大家介绍vsftpd基于pam_mysql如何做虚拟用户认证,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。(1)下载epel源[root@CentOS7-175 ~...
    99+
    2024-04-02
  • 基于redis实现token验证用户是否登陆
    基于项目需求, 我们要实现一个基于redis实现token登录验证,该如何实现呢: 后端实现: 1.引入redis相关的依赖 <dependency> <groupId>org...
    99+
    2024-04-02
  • Django基于Token的验证使用的实现
    目录什么是Token为什么要用Token基于 Token 的身份验证流程Token的组成形式Django如何使用Token什么是Token Token字面意思是令牌,功能跟Sessi...
    99+
    2024-04-02
  • vsftpd基于pam_mysql的虚拟用户机制
    一、虚拟用户概述vsftpd使用虚拟用户时,需要为所有的虚拟用户创建一个系统用户,因为无论vsftpd使用的是哪一种用户类型(匿名用户、系统用户、虚拟用户),最终都是要映射为操作系统上的一个用户,而每一个文...
    99+
    2024-04-02
  • 基于jQuery实现的Ajax 验证用户名是否存在的实现代码
    实例: 1、请求页面AJax.aspx HTML代码 复制代码 代码如下: <div> <input id="txtName" type="text" />&...
    99+
    2022-11-21
    Ajax 验证用户名 是否存在
  • 基于C#实现一个简单的FTP操作工具
    目录实现功能开发环境实现代码实现效果实现功能 实现使用FTP上传、下载、重命名、刷新、删除功能 开发环境 开发工具: Visual Studio 2013 .NET Framewor...
    99+
    2024-04-02
  • python基于socketserver实现并发,验证客户端的合法性
    目录一、socketserver实现并发二、验证客户端合法性一、socketserver实现并发 tcp协议的socket是只能和一个客户端通信的,使用socketserver可以实现和多个客户端通信,他是在soc...
    99+
    2022-06-02
    python socketserver python 实现并发 python 验证客户端
  • 建立基于虚拟用户的VSftpd服务
    上一篇文章给大家介绍了Linux中搭建FTP服务器的方法,说了vsftpd的基本配置,也就是匿名和本地,这回来说一下配置虚拟用户使用vsftpd,下面是具体步骤: 一、建立虚拟用户口令文件 可以使用...
    99+
    2022-06-04
    用户 VSftpd
  • mysql实现vsftp虚拟用户访问
    使用MYSQL实现VSFTP虚拟用户访问1、查看是否安装 mysql 安装包,没有就使用yum安装一下            ...
    99+
    2024-04-02
  • node如何实现基于token的身份验证
    小编给大家分享一下node如何实现基于token的身份验证,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!最近研究了下基于toke...
    99+
    2024-04-02
  • 怎么建立基于虚拟用户的VSftpd服务
    这篇文章主要介绍“怎么建立基于虚拟用户的VSftpd服务”,在日常操作中,相信很多人在怎么建立基于虚拟用户的VSftpd服务问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么建立基于虚拟用户的VSftpd服务...
    99+
    2023-06-09
  • 基于Linux并结合socket网络编程的ftp服务器的实现
    项目需求 客户端能够通过调用“get”指令,来获取服务器的文件客户端能通过“server_ls”指令,来获取服务器路径下的文件列表客户端能通过“server_cd”指令,进入服务器路径下的某文件夹客户端可以通过“upload”指令,上传自己...
    99+
    2023-09-05
    服务器 linux 运维 系统编程 开发语言 c语言 C语言
  • angular如何实现基于ng-messages的表单验证
    这篇文章给大家分享的是有关angular如何实现基于ng-messages的表单验证的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。html <div c...
    99+
    2024-04-02
  • 安装vsftpd+pam+mysql实现对虚拟用户身份认证详细步骤
    下文主要给大家带来安装vsftpd+pam+mysql实现对虚拟用户身份认证详细步骤,希望这些内容能够带给大家实际用处,这也是我编辑安装vsftpd+pam+mysql实现对虚拟用户身份认证详细步骤这篇文章...
    99+
    2024-04-02
  • 基于Python实现原生的登录验证码详情
    目录1、概述2、验证码实现的演进过程2.1 路由及页面2.2 视图函数中验证码的推导2.2.1 图片发送到前端2.2.2 引入动态图片2.2.3 内存管理模块图片2.2.4 完整图片...
    99+
    2024-04-02
  • 基于Hutool的图片验证码功能模块实现
    目录简介Hutool名称的由来基于Hutool的图片验证码功能模块实现1.背景2.方案设计2.1 方案步骤2.2 Hutool工具类引入2.5 方案交互图3.模块编写4.接口测试简介...
    99+
    2022-11-13
    Hutool图片验证码 Hutool图片验证码
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作