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  #登录目录改变至指定的目录
  • 相关阅读:
    Python脚本抓取京东手机的配置信息
    Python中的Pandas模块
    Python中的Pandas模块
    XML和JSON数据格式
    XML和JSON数据格式
    Linux运维比较常用的一些脚本
    Linux运维比较常用的一些脚本
    Keepalived高可用集群
    Keepalived高可用集群
    Linux中正则表达式和字符串的查询、替换(tr/diff/wc/find)
  • 原文地址:https://www.cnblogs.com/Gmiaomiao/p/9229901.html
Copyright © 2011-2022 走看看