vsftpd基于mysql_vsftpd基于mysql做虚拟用户认证

虚拟用户:

用户账号存储于何处?

文件,MySQL,Redis, ...

vsftpd的认证功能托管给pam:

Pluggable Authencate Module,认证框架,认证库;

通过模块完成认证功能:/usr/lib64/security/

pam_mysql模块:

(1)准备编译安装环境

[root@server1 ~]#yum –y groupinstall “Development Tools”

[root@server1 ~]# tar xf pam_mysql-0.7RC1.tar.gz

[root@server1 ~]# cd pam_mysql-0.7RC1/

[root@server1 ~]# ./configure --with-pam=/usr --with-mysql=/usr --with-pam-mods-dir=/usr/lib64/security

1476504467309494.png

在编译过程中如果出现此错误需要安装mysql-devel开发包

[root@server1 pam_mysql-0.7RC1]# yum -y install mysql-devel

1476504543117575.png

遇到此错误还需要安装pam-devel的开发包

1476504666672754.png

[root@server1 pam_mysql-0.7RC1]# yum -y pam-devel

到此检查环境生成config文件就完成,接下只需要make和make install

[root@server1 pam_mysql-0.7RC1]# make

[root@server1 pam_mysql-0.7RC1]# make install

编译安装完成之后查看/usr/lib64/security目录中有如图所示的文件

1476504755780358.png

准备数据库:

vsftpd基于虚拟用户认证是在CentOS7的主机上进行操作

安装数据库

[root@server1 ~]# yum -y install mariadb-server

接下来启动mysql服务即可

[root@server1 ~]#systemctl start mariadb

[root@server1~]#ss –tnl     //键入此命令查看3306端口是否监听

之后就需要讲虚拟用户认证的用户和密码放到数据库当中,所以需要给vsftpd创建一个数据和相应的表,具体操作如下

创建数据库

mysql> CREATE DATABASE vsftpd;

使用新创建的数据库,然后使用此数据库然后创建表users

mysql>USE vsftpd;

mysql> CREATE TABLE vsftpd.users (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, name CHAR(30) NOT NULL UNIQUE KEY,password CHAR(48));

1476504825879861.png

在users表上创建数据

mysql>INSERT INTO users  (name,password) VALUES (‘tom’,PASSWORD(‘redhat’)),(‘jerry’,PASSWORD(‘redhat’));

1476504866201401.png

授权远程用户登录mysql

mysql> GRANT ALL ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY 'mageedu';

mysql> GRANT ALL ON vsftpd.* TO 'vsftpd'@'127.0.0.1' IDENTIFIED BY 'mageedu';

mysql> FLUSH PRIVILEGES;  //刷新授权使之生效

这里需要对localhost和127.0.0.1两个主机授权是因数据库有时方向解析时解析不到ip地址导致用户无法登录所以需要对两个主机进行授权

1476504932740708.png

vsftpd通过pam_mysql进行认证的配置文件使pam能够利用pam-mysql这个模块来连接数据库获取数据库中的用户名及密码 ,所以需要编辑:/etc/pam.d/vsftpd.mysql文件,文件内容如下

auth required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=mageedu host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

account required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=mageedu host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

user:连接mysql服务器的用户名,此用户要有权限访问认证vsftpd服务的数据库;

passwd:上面的用户的密码;

host:mysql服务器主机地址;

db:认证vsftpd服务的数据库名称;

table:存放了用户和密码的表;

usercolumn:用户名对应的字段;

passwdcolumn:密码对应的字段;

crypt:密码加密方法;

准备匿名用户映射的系统用户账号:

# mkdir /ftproot

# useradd  -d /ftproot  vuser   //创建用户vuser并将用户的家目录设置为/ftproot

# mkdir /ftproot/{pub,upload}   //在虚拟用户的根目录下创建一个公共目录和一个上传文件的目录

# setfacl -m u:vuser:rwx  /ftproot/upload  //给用虚拟用户添加访问控制列表,使用能够上传文件

1476504986521461.png

配置vsftpd:vsftpd.conf

pam_service_name=vsftpd.mysql

guest_enable=YES

guest_username=vuser

配置每匿名用户有单独的权限设定

vsftpd.conf,添加:

user_config_dir=/etc/vsftpd/users_conf

创建目录:

# mkdir /etc/vsftpd/vusers_conf

为每用户提供配置文件:

/etc/vsftpd/vusers_conf/{tom,jerry}

配置权限的指令:

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

测试:

在另外一台主机登录ftp进行上传文件测试

lftp -u tom,mageedu 10.1.48.11

1476505090710164.png

spacer.gif

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值