• 实现FTP+PAM+MySQL环境,批量配置虚拟用户


    实现FTP+PAM+MySQL环境,批量配置虚拟用户

    搭建环境: CentOS6.5或CentOS6.7

     [root@vhost3 ~]# uname -a
     Linux vhost3 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
    

    yum安装MySQL、vsftpd

     yum install -y vsftpd mysql-server mysql-devel mysql-libs
    

    安装pam

    安装依赖包

     yum install -y pam-devel fprintd-pam pam_passwdqc pam
    

    编译安装pam,适用于yum安装的MySQL

     [root@localhost]#wget http://www.huzs.net/soft/vsftpd/pam_mysql-0.7RC1.tar.gz
     [root@localhost]#tar xvf pam_mysql-0.7RC1.tar.gz
     [root@localhost]#cd pam_mysql-0.7RC1
     [root@localhost]# ./configure --with-openssl --with-pam-mods-dir=/lib/security/
     [root@localhost]# make && make install
    

    安装完成后,会生成如下两个文件

     /lib/security/pam_mysql.la  /lib/security/pam_mysql.so
    

    修改vsftpd配置文件(参考)

     anonymous_enable=NO
     local_enable=YES
     write_enable=YES
     local_umask=022
     dirmessage_enable=YES
     xferlog_enable=YES
     connect_from_port_20=YES
     xferlog_std_format=YES
     listen=YES
     pam_service_name=kdui_ftp        # pam认证的配置文件
     userlist_enable=YES
     tcp_wrappers=YES
     guest_enable=YES    # 启用虚拟用户
     guest_username=kdui_ftp        # 虚拟用户的权限是寄宿在操作系统的kdui_ftp这个用户上的,这个用户必须真实存在
     local_root=/home/dms/kdui/dmsdata/userBase/$USER    #指定用户登录的家目录,$USER是内置变量,表示用户名
     user_sub_token=$USER
     virtual_use_local_privs=YES
     xferlog_file=/var/log/xferlog
     dual_log_enable=YES
     vsftpd_log_file=/var/log/vsftpd
     user_config_dir=/etc/vsftpd/user_config        #每个虚拟用户的独立配置文件目录,配置文件和用户同名
    

    根据vsftpd配置文件配置系统环境

    创建宿主账号的家目录

     [root@localhost]#mkdir -p /home/dms/kdui/dmsdata/
    

    创建虚拟用户宿主账号

     [root@localhost]# useradd -s /sbin/nologin -d /home/dms/kdui/dmsdata/userBase/ kdui_ftp
    

    创建虚拟用户配置文件目录,(按上述配置文件可以不创建)

    [root@localhost]# mkdir -p /etc/vsftpd/user_config
    

    修改pam认证文件

    [root@localhost]# vim /etc/pam.d/kdui_ftp 
     #%PAM-1.0
     session       optional        pam_keyinit.so       force revoke
     auth required /lib/security/pam_mysql.so user=ftp passwd=123456 host=localhost db=ftp table=ftpuser usercolumn=username passwdcolumn=password crypt=0
     account required /lib/security/pam_mysql.so user=ftp passwd=123456 host=localhost db=ftp table=ftpuser usercolumn=username passwdcolumn=password crypt=0
     #            调用的模块        数据库用户名    密码      IP         库名    表名      哪个字段作为用户名   哪个字段作为密码
     # crypt表示密码是否加密以及加密方式,0表示明文,1表示使用UNIX的DES加密,2表示使用MySQL的password()函数,3表示口令使用MD5加密
    

    配置MySQL数据库

    启动数据库

    [root@localhost]# /etc/init.d/mysqld start
    

    连接数据库

    [root@localhost]# mysql -uroot
    

    建库

     mysql> CREATE DATABASE IF NOT EXISTS `ftp` ;
      mysql> use ftp;
    

    建表

     mysql> CREATE TABLE IF NOT EXISTS `ftpuser` (
       `id` int(6) NOT NULL AUTO_INCREMENT,
       `username` varchar(20) NOT NULL,
       `password` varchar(20) NOT NULL,
       `status` int(1) NOT NULL DEFAULT '1',
       `level` int(1) NOT NULL DEFAULT '1',
       PRIMARY KEY (`id`)
       ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
    

    插入两条数据即ftp虚拟用户

    mysql> INSERT INTO `ftpuser` (`username`, `password`) VALUES ( 'aaa', '123');
    mysql> INSERT INTO `ftpuser` (`username`, `password`) VALUES ( 'bbb', '456');
    

    授权pam验证用的mysql账号

    mysql>  grant select on ftp.ftpuser to ftp@localhost identified by '123456';
     mysql> FLUSH PRIVILEGES;
    mysql>  quit;
    

    启动ftp

    [root@loaclhost]#/etc/init.d/vsftpd start
    
  • 相关阅读:
    MySQL Community Server 8.0.16
    Python的编码规范
    Python 的语言特性
    spark笔记 环境配置
    C#委托实现工厂规则注入
    特性与元数据
    可输入的模糊搜索ComBox控件
    ASPX页面输出datatable的一种方法
    QRcode生成二维码,保存二维码图片到服务器
    SQL语句的随机值与行号,字符串拼接
  • 原文地址:https://www.cnblogs.com/passzhang/p/12088251.html
Copyright © 2020-2023  润新知