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

实验说明:

一台FTP服务器:192.168.243.7(centos7.3)
一台MariaDB数据库服务器:192.168.243.6(centos6.9)
所需要的软件包:pam_mysql-0.7RC1.tar.gz
关闭selinux
工作原理
这里写图片描述

一、在FTP服务器上安装vsftpd和pam_mysql
centos6:pam_mysql由epel的源中提供 yum install vsftpd pam_mysql
centos7:无对应rpm包,需手动编译安装
yum -y groupinstall "Development Tools"    
yum -y install   mariadb-devel   pam-devel   vsftpd 
编译安装pam模块

下载pam_mysql-0.7RC1.tar.gz

 tar xvf pam_mysql-0.7RC1.tar.gz     
 cd pam_mysql-0.7RC1/     
 ./configure --with-mysql=/usr --with-pam=/usr --with-pam-mods-dir=/lib64/security    
 make && make install   
二、在数据库服务器,创建虚拟用户账号
建立存储虚拟用户数据库和连接的数据库用户
MariaDB [(none)]> create database ftpdb;
MariaDB [(none)]> create table ftpvusers (id int unsigned auto_increment primary key,username char(30),password char(48));  

这里写图片描述

MariaDB [(none)]> insert into ftpvusers (username,password) values ('ftpuser1',password('CENTOS')),('ftpuser2',password('CENTOS'));
MariaDB [(none)]> grant all on ftpdb.* to ftpuser@'192.168.243.7' identified by 'CENTOS';    

这里写图片描述

MariaDB [(none)]> flush privileges;
三、在FTP服务器上配置vsftpd服务
1.在FTP服务器上建立pam认证所需文件
 [root@centos7 ~]#vim /etc/pam.d/ftp.mysql 

这里写图片描述

配置字段说明
  • 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加密
2.建立相应用户和修改vsftpd配置文件,使其适应mysql认证 建立虚拟用户映射的系统用户及对应的目录
useradd -s /sbin/nologin -d /app/ftpsite ftpvuser 
chmod 555 /app/ftpsite/
cd /app/ftpsite/
mkdir upload
chown ftpvuser upload

配置vsftpd为虚拟用户使用配置文件目录
添加如下选项
user_config_dir=/etc/vsftpd/vusers.d/

root@centos7 ~]#vim /etc/vsftpd/vsftpd.conf
128 pam_service_name=ftp.mysql       //建的pam认证文件
129 guest_enable=YES
130 guest_username=ftpvuser    //设置的映射系统用户
131 user_config_dir=/etc/vsftpd/vusers.d/       
四、启动vsftpd服务
service vsftpd start;systemctl start vsftpd  
chkconfig vsftpd on;systemctl enable vsftpd   

查看端口开启情况
netstat -tnlp |grep :21

五、创建所需要目录,并为虚拟用户提供配置文件和配置虚拟用户访问权限
[root@centos7 ~]#mkdir /etc/vsftpd/vusers.d/
[root@centos7 ~]#vim  /etc/vsftpd/vusers.d/ftpuser1
anon_upload_enable=YES    //否开启虚拟用户上传文件的权限 
[root@centos7 ~]#vim  /etc/vsftpd/vusers.d/ftpuser2
local_root=/app/ftpsite2/
anon_upload_enable=YES
[root@centos7 ~]#mkdir -pv /app/ftpsite2/upload
[root@centos7 ~]#chown ftpvuser /app/ftpsite2/upload

总结:
在配置ftp配置文件中,留心不要敲多空格,配置命令结尾也不能留出空格,否则vsftpd服务重启失败

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值