ftp奥妙之怎么实现基于mysql的数据库和对应的表中的字段来完成对用户认证的?

虚拟用户登录模式:将登录用户映射到指定的系统账号(/sbin/nologin)来访问FTP资源,这样就起到安全的效果。

一、安装所需程序

1、安装好开发环境和mysql数据库

clip_image002

clip_image004

2、安装 pam_mysql-0.7RCl模块,因为我们的pam默认情况下是不支持到mysql中去验证用户账号的,所以我们还得自己为pam安装一个插件

clip_image006

3、解压pam_mysql-0.7RC1模块

clip_image008

4、启动mysql

clip_image010

clip_image012

6、查看mysql列表

clip_image014

7、查看mysql包并验证mysql的安装位置

clip_image016

8、告诉mysql安装在何处

clip_image018

9、make

clip_image020

10、安装make

clip_image022

11、查看是否有pam_mysql

clip_image024

二、创建虚拟用户账号

1、连接到数据库mysql创建数据库和表

clip_image026

clip_image028

clip_image030

clip_image032

2、测试vsftpd数据库

clip_image034

clip_image036

3、建立pam认证所需文件

编辑配置文件vim /etc/pam.d/vsftpd.mysql

clip_image038

auth的主要目的就是认证,auth required表示这个需求必须满足,先检查用户的账号合不合法,再检查用户的账号有没有过期

4、创建一个用户

clip_image040

5、修改vsftpd的配置文件 vim /etc/vsftpd/vsftpd.conf

clip_image042

6、重启服务并验证虚拟用户能否登录上传下载文件

service vsftpd restart 重启服务

cp /etc/fstab /var/ftproot/ 复制/etc/fstab 到家目录/var/ftproot/

clip_image044

补充:虚拟用户的指令都是被匿名用户的指令匹配的,所有的用户都映射到一个叫vuser的用户上了,只要我们禁止的虚拟用户不能上传,也就意味着每一个虚拟用户都不能上传。

三、具体实例

能不能定义不同的虚拟用户使用配置不同的权限呢?比如说tom不能上传下载但是jerry可以,这是不可以的,因为所有的虚拟用户必须映射在同一个用户账号上来,没办法让他们之间建立一一映射的关系,但是可以让他们之间有不同的权限,怎么做呢?只需在ftp中添加一个指令。

我们定义让tom能下载文件但不能上传文件等其他功能,jerry可以上传文件、下载文件、创建目录

1、编辑配置文件 vim /etc/vsftpd/vsftpd.conf

clip_image046

2、创建所需目录和文件

clip_image048

vim tom 编辑文件内容如下

clip_image050

vim jerry 编辑文件内容如下

clip_image052

3、测试验证

首先测试用户tom

clip_image054

测试用户jerry

clip_image056

这就是怎么实现基于mysql的数据库和对应的表中的字段来完成对用户认证的内容,

从以上内容我们可以看出虚拟用户放在mysql数据库中管理起来是不是很简便啊?

你可能感兴趣的:(mysql,数据库,ftp,用户认证)