ftp+pam基于mysql的认证

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

1、要事先安装开发环境用到的包  

Desktop Platform Development   Development tools

[root@linux ~]# yum -y install mysql-server mysql-devel pam_mysql

[root@linux ~]# service mysqld start  

启动mysql建立存放用户信息的数据库

wKioL1M9iJGTi6eIAAEeXyB3UsY402.jpg

2、授权管理此数据库用户
mysql> grant select on share_ftp.* to linux@localhost identified by 'vsftp';
mysql> grant select on share_ftp.* to linux@192.168.1.110 identified by 'vsftp';
mysql> flush privileges;
3、创建存放用户信息的表
mysql>create table users ( id int AUTO_INCREMENT NOT NULL, name char(20) binary NOT NULL,password char(48) binary NOT NULL, primary key(id));
插入两个用户帐号信息
mysql>insert into users(name,password)values('ftpuser2',password('ftpuser2'));

mysql>insert into users(name,password)values('ftpuser1',password('ftpuser1'));

wKioL1M9iS7jY5i-AAGH4V-ZdrM018.jpg

4、建立pam认证所需文件

#vi /etc/pam.d/vsftpd.mysql  

这是一个事先不存在的文件,需要时创建即可

添加如下两行

1
2
auth required  /lib64/security/pam_mysql .so user=linux  passwd =linux host=localhost db=share_ftp table= users  usercolumn=name passwdcolumn=password crypt=2
account required  /lib64/security/pam_mysql .so user=linux  passwd =linux host=localhost db=share_ftp table= users  usercolumn=name passwdcolumn=password crypt=2

注:

关于此文件的具体说明,请查看:vim /usr/share/doc/pam_mysql-0.7/README

需要安装pam_msyql形式的rpm的包,对上面两个参数支持

注意:由于mysql的安装方式不同,pam_mysql.so基于unix sock连接mysql服务器时可能会出问题,此时,建议授权一个可远程连接的mysql并访问vsftpd数据库的用户。

例:

登录到mysql后

wKioL1M9icWAKKrgAATwpM7k9DA567.jpg

1
2
#useradd -s /sbin/nologin -d /var/ftproot vuser
#chmod go+rx /var/ftproot

在此处添加vuser用户是为了数据库中添加的ftpuser1和ftpuser2指定默认登录后的目录。(用于限定不同虚拟用户的权限)

修改FTP的配置文件,在其中添加上guest_enable=yes,guest_username=vuser(之前通过useradd添加的那个用户名),pam_service_name=vsftpd.mysql(默认从/etc/pam.d/开始查找)

wKioL1M9ilaArdacAAOTZ_rtloY514.jpg

5、启动服务进行测试

1
#service vsftpd start

查看vuser用户的目录

wKioL1M9iyGQlHurAACtQNIJCtQ511.jpg

当使用ftpuser1@localhost登录后

wKioL1M9i0qy-aPjAAEnGwQw9Rk258.jpg

ftpuser2看到的内容也是与ftpuer1相同。

而通过本地系统添加的用户是无法登录的,如图

wKioL1M9i3_AKDVJAAHuwYuzqzY045.jpg

6、下面将对不同的虚拟用户做限定,ftpuser1是可以上传,下载,删除,ftpuser2只能上传。

在配置文件(/etc/vsftpd/vsftpd.conf)中添加

user_config_dir=/etc/vsftp/vusers_config

而在/etc/vsftp/vusers_config目录中添加两个与数据库中添加的两个用户相同的文件。

注:关于vsftpd.conf文件可用的更多参数请man vsftpd.conf

wKiom1M9i_vgpemXAAHlhL8ONDY860.jpg

说明:由于在主配置文件中,是对所有的用户都生效,在这里,使用这种方法,完全可以做到基于同类用户赋予不同限制。

==========================================完===========================================

ps:

   1、这个实验仅用于说明,完全可以将用户账户存放于数据库中统一管理。

   2、基于pam的库实现与mysql的连接。










本文转自 jinlinger 51CTO博客,原文链接:http://blog.51cto.com/essun/1390189,如需转载请自行联系原作者
目录
相关文章
|
4月前
|
关系型数据库 MySQL 数据安全/隐私保护
windows mysql8 安装后 提示密码不对,修改下密码认证方式就可以了
windows mysql8 安装后 提示密码不对,修改下密码认证方式就可以了
1045 3
|
18天前
|
存储 关系型数据库 MySQL
基于案例分析 MySQL 权限认证中的具体优先原则
【10月更文挑战第26天】本文通过具体案例分析了MySQL权限认证中的优先原则,包括全局权限、数据库级别权限和表级别权限的设置与优先级。全局权限优先于数据库级别权限,后者又优先于表级别权限。在权限冲突时,更严格的权限将被优先执行,确保数据库的安全性与资源合理分配。
|
6月前
|
安全 关系型数据库 MySQL
CentOS 7系统加固详细方案SSH FTP MYSQL加固
CentOS 7系统加固详细方案SSH FTP MYSQL加固
|
6月前
|
弹性计算 关系型数据库 MySQL
|
存储 SQL Cloud Native
《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB MySQL版解析与实践(上)——一、产品概述
《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB MySQL版解析与实践(上)——一、产品概述
|
存储 SQL 弹性计算
《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB MySQL版解析与实践(上)——二、产品架构及原理
《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB MySQL版解析与实践(上)——二、产品架构及原理
|
SQL JSON Cloud Native
《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB MySQL版解析与实践(上)——三、产品相关概念(上)
《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB MySQL版解析与实践(上)——三、产品相关概念(上)
|
存储 固态存储 Cloud Native
《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB MySQL版解析与实践(上)——三、产品相关概念(下)
《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB MySQL版解析与实践(上)——三、产品相关概念(下)
|
存储 SQL Cloud Native
《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB MySQL版解析与实践(下)——一、弹性能力(资源池、分时弹性)
《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB MySQL版解析与实践(下)——一、弹性能力(资源池、分时弹性)
|
SQL 分布式计算 DataWorks
《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB MySQL版解析与实践(下)——二、数据导入导出与同步链路搭建(上)
《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB MySQL版解析与实践(下)——二、数据导入导出与同步链路搭建(上)
下一篇
无影云桌面