vsftpd pam mysql_vsftpd虚拟用户认证配置(vsftpd+pam+mysql)

一、准备所需要的程序包

mysql

pam_mysql

vsftpd

二、开始安装[root@localhost ~]# yum -y install mysql-server mysql-devel vsftpd pam_mysql

// 注意:pam_mysql由epel源提供,epel源需要自行设置

三、创建虚拟用户账号

1、创建数据库及存储用户的表[root@localhost ~]# service mysqld start

// 启动mysql服务

[root@localhost ~]# mysql

mysql> create database vsftpd;    // 创建名为vsftpd的数据库

Query OK, 1 row affected (0.00 sec)

mysql> use vsftpd   // 切换当前数据库为vsftpd

Database changed

mysql> create table users(id int UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,name VARCHAR

(50) NOT NULL,password CHAR(48) NOT NULL);

Query OK, 0 rows affected (0.02 sec)  // 创建users表并建立对应字段用以存放虚拟用户名和密码

mysql>

2、创建一个数据库用户给vsftpd服务认证虚拟用户时连接访问数据使用mysql> grant select on vsftpd.* to vsftpd@172.16.20.242 identified by 'redhat';

Query OK, 0 rows affected (0.00 sec)  // 创建一个名为vsftpd的用户,并且赋予它以vsftpd数据

所有表的查看权限,上面的IP地址是指定可以从哪个地址访问mysql数据库

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

3、向表中添加虚拟用户账号和密码mysql> insert into users(name,password) values('tom','redhat'),('jerry','redhat');

Query OK, 2 rows affected (0.00 sec)  // 向users表中插入两行数据,分别对应两个用户名和密码

Records: 2  Duplicates: 0  Warnings: 0

需要注意的是:这里使用的是明文存放密码,建议使用加密存放,例如password()函数,使用方法如下:mysql> insert into users(name,password) values('tom',password('redhat')),('jerry',passowrd

('redhat'));

三、配置vsftpd

1、建立pam认证所需文件[root@localhost ~]# vim /etc/pam.d/vsftpd.mysql

auth required /lib/security/pam_mysql.so user=vsftpd passwd=redat host=172.16.20.242 db=

vsftpd table=uesrs usercolumn=name passwdcolumn=password crypto=0

account required /lib/security/pam_mysql.so user=vsftpd passwd=redhat host=172.16.20.242

db=vsftpd table=users usercolumn=name passwdcolumn=password crypto=0

// /lib/security/pam_mysql.so指定使用pam_mysql.so进行认证

// user=vsftpd 指定数据库用户名

// passwd=redhat 指定数据库用户密码

// host=172.16.20.242 指定同过哪个主机地址进行数据库连接

// db=vsftpd 指定数据库名

// table=users 指定存储虚拟用户名和密码的表

// usercolumn=name 指定存储用户名的字段

// passwdcolumn=password 指定存储虚拟用户密码的字段

// crypto=0 指定虚拟用户密码存放的加密方式,0代表不加密,1代表使用crypt函数加密,2代表使用password()函数加密

,3代表使用md5方式加密,4代表使用sha1方式加密

2、修改vsftpd的配置,使其适应mysql认证[root@localhost ~]# useradd -s /sbin/nologin -d /var/ftproot vuser

[root@localhost ~]# chmod go+rx /var/ftproot

// 创建一个虚拟用户映射的系统用户,用以访问ftp服务,由于其家目录就是fpt服务的访问目录,所以

要给予其家目录其他用户可以访问的权限

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf

anonymous_enable=YES   // 允许匿名用户访问,因为虚拟用户的实质就是匿名用户

local_enable=YES   // 允许本地用户访问,因为虚拟用户需要映射到本地用户

write_enable=YES   // 开启对访问目录的写权限,根据需求开启

anon_upload_enable=NO   // 禁止匿名用户上传,根据需求配置

anon_mkdir_write_enable=NO   // 禁止虚拟用户创建和删除目录,根据需求配置

chroot_local_user=YES   // 禁止用户切换目录

guest_enable=YES   // 开启虚拟用户功能

guest_username=vuser    // 设定虚拟用户的映射的本地用户为vuser

pam_service_name=vsftpd.mysql    // pam的配置文件默认为vsftpd,由于上面做了修改,这里需要修

改成我们配置的文件

四、启动vsftpd服务,并测试配置效果[root@localhost ~]# service vsftpd start

使用windows的CMD访问

656b818753bd9ecde78eedbb8fa09830.png

五、配置虚拟用户的访问权限

vsftpd可以在配置文件目录中为每个用户提供单独的配置文件以定义其ftp服务访问权限,每个虚拟用户的配置文件名同虚拟用户的用户名,配置文件目录可以是任意未使用目录,只需要在vsftpd.conf指定其路径及名称即可。

1、配置vsftpd为虚拟用户使用配置文件目录[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf

user_config_dir=/etc/vsftpd/vusers_config   // 设定虚拟用户配置文件的存放目录

2、创建相应目录并创建配置文件[root@localhost ~]# mkdir /etc/vsftpd/vusers_config

[root@localhost ~]# touch tom jerry

3、配置虚拟用户的访问权限

虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。例如,如果需要让tom用户具有上传文件的权限等,可以修改/etc/vsftpd/vusers_config/tom文件,在里面添加如下选项即可。

需要注意的是,之前在/etc/vsftpd/vsftpd.conf中的相关于匿名用户的权限则需要关闭掉,避免冲突,如果vsftpd.conf中配置了权限,而虚拟用户的配置文件中没有配置,那么会继承vsftpd.conf中的权限

如果vsftpd.conf中配置了权限,而虚拟用户的配置文件中也有配置吗,那么会继承虚拟用户的配置文件中的配置[root@localhost ~]# vim /etc/vsftpd/vusers_config/tom

anon_upload_enable=YES

anon_mkdir_write_enable={YES|NO}

anon_other_write_enable={YES|NO}

写的比较潦草,如有遗漏错误和争议之处,欢迎大家的批评指正和讨论,谢谢。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值