zoukankan      html  css  js  c++  java
  • FTP服务(4)基于MySQL数据库认证

    基于MySQL数据库认证

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

    数据库服务器和FTP服务器系统都是CentOS7

    注意:如果是CentOS6系统请执行yum install vsftpd pam_mysql命令安装连接组件

    MariaDB服务器:

    yum install mariadb-server -y
    systemctl start mariadb
    mysql
    MariaDB [(none)]> CREATE DATABASE vsftpddb;  #准备数据库
    MariaDB [(none)]> use vsftpddb
    MariaDB [vsftpddb]> CREATE TABLE users(id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,name CHAR(50) BINARY NOT NULL,password CHAR(48) BINARY NOT NULL);  #创建users表
    MariaDB [vsftpddb]> DESC users;
    +----------+----------+------+-----+---------+----------------+
    | Field    | Type     | Null | Key | Default | Extra          |
    +----------+----------+------+-----+---------+----------------+
    | id       | int(11)  | NO   | PRI | NULL    | auto_increment |
    | name     | char(50) | NO   |     | NULL    |                |
    | password | char(48) | NO   |     | NULL    |                |
    +----------+----------+------+-----+---------+----------------+
    MariaDB [vsftpddb]> GRANT ALL ON vsftpddb.* TO vsftpduser@'192.168.0.7' IDENTIFIED BY 'vsftpdpass';  #创建并授权用户

    vsftpd服务器:

    yum install mariadb -y
    mysql -uvsftpduser -pvsftpdpass -h192.168.0.8  #测试连接数据库
    MariaDB [(none)]> DESC vsftpddb.users;
    +----------+----------+------+-----+---------+----------------+
    | Field    | Type     | Null | Key | Default | Extra          |
    +----------+----------+------+-----+---------+----------------+
    | id       | int(11)  | NO   | PRI | NULL    | auto_increment |
    | name     | char(50) | NO   |     | NULL    |                |
    | password | char(48) | NO   |     | NULL    |                |
    +----------+----------+------+-----+---------+----------------+
    MariaDB [(none)]> use vsftpddb
    MariaDB [vsftpddb]> INSERT INTO users(name,password) VALUES('user1',PASSWORD('user1pass'));  #创建vsftpd的虚拟用户
    MariaDB [vsftpddb]> INSERT INTO users(name,password) VALUES('user2',PASSWORD('user2pass'));
    MariaDB [vsftpddb]> SELECT * FROM users;
    +----+-------+-------------------------------------------+
    | id | name  | password                                  |
    +----+-------+-------------------------------------------+
    |  1 | user1 | *F20B90D5A0CED3757C51AE04CD4700AB9879E467 |
    |  2 | user2 | *A9C95B38C9A88ECAE9128FD396059335E97CAA6E |
    +----+-------+-------------------------------------------+
    yum groupinstall "Development Tools" -y
    yum -y install mariadb-devel pam-devel vsftpd
    wget http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz tar xf pam_mysql-0.7RC1.tar.gz
    cd pam_mysql-0.7RC1/
    pam_mysql-0.7RC1]# ./configure --with-pam-mods-dir=/lib64/security
    pam_mysql-0.7RC1]# make && make installls /lib64/security/ |grep pam_mysql.so
    pam_mysql.so  #pam模块已安装
    vim /etc/pam.d/vsftpd.mysql
    auth required pam_mysql.so user=vsftpduser passwd=vsftpdpass host=192.168.0.8 db=vsftpddb table=users usercolumn=name passwdcolumn=password crypt=2
    account required pam_mysql.so user=vsftpduser passwd=vsftpdpass host=192.168.0.8 db=vsftpddb table=users usercolumn=name passwdcolumn=password crypt=2

    crypt是加密方式,0表示不加密,1表示crypt(3)加密,2表示使用mysql password()函数加密,3表示md5加密,4表示sha1加密

    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()函数加密

    useradd -r -s /sbin/nologin -d /data/mftp/ vuser
    mkdir -pv /data/mftp/pub/
    chmod -w /data/mftp/
    setfacl -m u:vuser:rwx /data/mftp/pub/
    vim /etc/vsftpd/vsftpd.conf
    anonymous_enable=YES
    guest_enable=YES
    guest_username=vuser
    pam_service_name=vsftpd.mysql  #修改为使用pam_mysql模块认证
    systemctl restart vsftpd

    vsftpd可以在配置文件目录中为每个用户提供单独的配置文件以定义其ftp服务访问权限,每个虚拟用户的配置文件名同虚拟用户的用户名。配置文件目录可以是任意未使用目录,只需要在vsftpd.conf指定其路径及名称即可

    vim /etc/vsftpd/vsftpd.conf
    user_config_dir=/etc/vsftpd/vusers.d
    mkdir /etc/vsftpd/vusers.d/
    touch /etc/vsftpd/vusers.d/{user1,user2}
    vim /etc/vsftpd/vusers.d/user1
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
    local_root=/ftproot  #登录目录改变至指定的目录
  • 相关阅读:
    react路由组件&&非路由组件
    react函数式组件(非路由组件)实现路由跳转
    react使用antd组件递归实现左侧菜单导航树
    【LeetCode】65. Valid Number
    【LeetCode】66. Plus One (2 solutions)
    【LeetCode】68. Text Justification
    【LeetCode】69. Sqrt(x) (2 solutions)
    【LeetCode】72. Edit Distance
    【LeetCode】73. Set Matrix Zeroes (2 solutions)
    【LeetCode】76. Minimum Window Substring
  • 原文地址:https://www.cnblogs.com/Gmiaomiao/p/9229901.html
Copyright © 2011-2022 走看看