Linux-PAM PAM-MySQL的总结

1、理论知识

1.1、PAM模块

1.1.1、PAM的介绍

Pluggable Authentication Modules简称PAM,是一个微缩的可插入认证模块(PAM is an acronym for Pluggable Authentication Modules)

1.1.2、PAM的结构

wKioL1agOrug7pRDAAEeYP0aulI824.png

1)模块层(PAM服务模块) - PAM结构最底层

作用:为接口层提供用户鉴别等服务

1
2
-- 验证用户名、密码、账号是否过期等
-- 完成账户管理、会话管理和口令管理等

2)应用程序接口层(PAM API) - PAM结构中间层

作用:

1
2
-- 向上屏蔽用户鉴别等过程的细节
-- 向下调用模块层的具体模块提供特定的服务

接口分类:

接口与模块相对应类型(调用下层特定接口):

1
2
3
4
5
6
7
8
9
10
-- 鉴别类接口
 -- pam_authenticate() 鉴别用户
 -- pam_setcred() 修改用户密码信息
-- 账号类接口
 -- pam_acct_mgmt() 鉴别用户账号是否有权限登录以及账号是否过期
-- 会话类接口
 -- pam_open_session()
 -- pam_close_session()
-- 口令类接口
 -- pam_chauthok()

接口与模块不相对应(对底层模块提供支持以及实现应用程序与模块的通讯):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-- 管理性接口
 -- pam_start() 标记PAM事务开始
 -- pam_end() 标记PAM事务结束
 -- pam_get_item() 获取PAM事务状态信息
 -- pam_set_item() 设置PAM事务状态信息
 -- pam_str() 输出PAM事务错误信息
-- 应用程序与模块间通讯接口
 -- pam_start() 应用程序初始化可调用此函数存放用户名之类的信息到PAM接口层
 -- pam_putenv() 向应用程序传递特定的环境变量
 -- pam_getenv() 获取应用程序环境变量
 -- pam_getenvlist() 获取应用程序环境变量
-- 用户与模块间的通讯接口
 -- pam_start()函数可通过会话式回调函数,让底层模块通过他读写模块相关的鉴别信息
-- 模块间通讯接口
 -- 相互独立的模块可通过调用 pam_get_item()与pam_set_item()共享某些与鉴别会话有关的公共信息。
-- 读写模块状态信息接口
 -- 接口pam_get_data()和pam_set_data()用于按照PAM句柄要求获取和设置特定的模块信息。
1
2
3)应用程序层 - PAM结构最上层
灵活调用中间层的各种鉴别功能接口

1.1.3、PAM验证文件配置目录

1
ls /etc/pam.d/

显示如下:

1
2
3
4
5
6
7
chfn                 newrole           runuser            ssh-keycat
chsh                 other             runuser-l          su
config-util          passwd            smartcard-auth     sudo
crond                password-auth     smartcard-auth-ac  sudo-i
fingerprint-auth     password-auth-ac  smtp               su-l
fingerprint-auth-ac  remote            smtp.postfix       system-auth
login                run_init          sshd               system-auth-ac

如上所示,其中sshd是sshd服务的验证文件(定义验证规则,服务找不到相应的验证文件则会与other匹配)

1.1.4、验证文件的语法

1)PAM的格式

vim编辑/etc/pam.d/sshd

配置文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
#%PAM-1.0
auth       required     pam_sepermit.so
auth       include      password-auth
account    required     pam_nologin.so
account    include      password-auth
password   include      password-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open env_params
session    optional     pam_keyinit.so force revoke
session    include      password-auth

由以上可知PAM验证文件格式分为四列:

1
module_type   control_flag   module_path   module_optional

2)module-type(模块类型)

1
2
3
4
-- auth(验证模块) - 用于验证用户或设置/销毁凭证
-- account(账户管理模块) - 执行访问、账户及凭证有效期、密码限制/规则等操作
-- session(会话管理模块) - 初始化或终止会话
-- passwd(密码模块) - 执行密码更改或更新操作

3)control-flag(控制标记)

1
2
3
4
5
-- required - 模块须有返值才通过验证,成功继续下一模块;失败需待同一stack中所有模块执行完才返值到应用程序
-- requisite - 模块须有返值才通过验证,成功继续下一模块;失败将不再执行同一stack内任何模块而返值给应用程序
-- sufficient - 模块返成功值则通过验证,成功则停止执行;失败值可忽略,继续执行下一模块
-- optional - 模块可选,模块返值对认证不起关键作用,无论成败都继续执行下一模块,返值一般被忽略
-- include -

4)module-path(模块路径)

模块的位置查找

1
find / -name pam_sepermit.so

显示如下:

1
/lib64/security/pam_sepermit.so

如上所示:

模块位于“/lib64/security/”目录下(可只写模块名称,32位系统位置不同)

5)module-optional(模块选项,可选)

常见公用选项如下:

1
2
3
4
5
6
-- debug - 该模块调用syslog()将调试信息写入系统日志
-- no_warn - 该模块不向应用程序发送警告信息
-- use_first_pass - 使用同一stack首次获取的密码(不向用户提示)
-- try_first_pass - 尝试使用同一stack首次获取的密码(不通过则向用户提示)
-- use_mapped_pass - 使用映射过的密码(不向用户提示)
-- expose_account - 允许该模块显示用户账号等信息

1.2、PAM-MySQL的介绍

----------------------------------------------------------------------










本文转自 tanzhenchao 51CTO博客,原文链接:http://blog.51cto.com/cmdschool/1737006,如需转载请自行联系原作者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/285695.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu下配置jdk(离线压缩包方式)

2019独角兽企业重金招聘Python工程师标准>>> 1,下载jdk压缩包 2、解压后得到名字为jdk1.7.0_21的文件夹,将其复制到 /usr/lib/jvm下(需要新建jvm文件夹)。3、配置jdk环境变量:在启动终端并输入 gedit /e…

【PhotoScan精品教程】PhotoScan简介、安装教程(附PhotoScan1.4.5安装包下载)

《无人机航空摄影测量精品教程》合集目录(Pix4d、CC、EPS、PhotoScan、Inpho) PhotoScan在无人机航空摄影测量空三运算中,具有运行速度快、精度高等特点。PhotoScan空三运算的结果可以导入CC等进行模型构建。【PhotoScan精品教程】讲解利用PhotoScan软件进行航测内业空三运算…

利用JS脚本快速删除百度网盘同一目录下的不需要文件(可以参考这个方法删除重复文件)

比如百度网盘某目录下存有如下文件: 要求:将如上图文件目录下的文件,每个月只保留最后(新)一个(根据文件名中包含的日期),其它删除。 比如7月份有3个文件,只保留2019-07-…

依赖注入之针对不同类型变量的几种注入方式

控制反转(Inversion of Control)和依赖注入(Dependency Injection)讲的都是一个概念,只不过是站在了不同的角度,所谓的依赖注入: 依赖注入(DI)是指在运行期,由外部容器动态地将依赖对象注入到组件中。当spring容器启动后,spring容…

【本周六活动】.NET Day in China

点击蓝字关注我们编辑:Alan Wang排版:Rani Sun活动介绍去年11月,.NET 6 的发布,为我们带来了 .NET 多平台应用 UI(.NET MAUI)。就在前不久,.NET MAUI 已正式发布。未来,作为 .NET 7 …

【PhotoScan精品教程】任务一:新建工程、导入照片、设置坐标系、导入控制点(POS)、自由空三

《无人机航空摄影测量精品教程》合集目录(Pix4d、CC、EPS、PhotoScan、Inpho) 【PhotoScan精品教程】任务一:新建工程、导入照片、设置坐标系、导入控制点(POS)、自由空三 【PhotoScan精品教程】任务二:刺像控点,平差,质量报告精度检查,像控点POS权重调配 【PhotoScan…

[转]Angular 单元测试讲解

Angular_单元测试 测试分类 按开发阶段划分按是否运行划分按是否查看源代码划分其他ATDD,TDD,BDD,DDD ATDDTDDBDDDDDAngular单元测试 Karma的介绍jasmine介绍单元测试的好处使用jasmine和karma创建一个Angular项目Karma配置Test.ts文件测试体验测试Form测试服务service常用断言…

按键精灵如何调用Excel及按键精灵写入Excel数据的方法教程---入门自动操作表格...

首先来建立一个新的Excel文档,在桌面上点击右键,选择【新建】-【Excel工作表】,命名为【新手学员】。 现在这个新Excel文档是空白的,我们接下来会通过按键精灵的脚本来打开并写入一些数据。打开按键精灵软件,点击【新建…

Maui的学习之路 -- 开篇

Maui的学习之路 -- 开篇想了很久我决定发一个Maui介绍做为开篇,虽然这是老生常谈的话题,但是不能没有这样的探讨(请容我水一篇)。什么是.NET Maui.NET Maui是微软的一款基于.Net多平台应用 UI (.NET MAUI)的跨平台框架&#xff0c…

互联网架构的演变,看了好多这个讲的确实清楚!

从过去的 OA、CRM、ERP 等单机即可满足要求的系统到现代互联网时代各大公司的分布式、微服务平台,互联网架构正在经历着巨大的变革,技术也在不断的更新迭代。 图片来自 Pexels这也意味着众多软件开发者们的压力和挑战正在不断的加大,这种新技…

【Inpho精品教程】Inpho简介、安装教程(附Inpho8安装包下载)

《无人机航空摄影测量精品教程》合集目录(Pix4d、CC、EPS、PhotoScan、Inpho) Inpho UASMaster是Trimble公司旗下的一款摄影测量处理软件。本文讲解Inpho简介、安装教程(附Inpho8安装包下载)。 文章目录 1. Inpho简介2. Inpho安装教程3. Inpho8下载地址1. Inpho简介 1.1 主…

MAUI使用Masa blazor组件库

上一篇(点击阅读)我们实现了UI在Web端(Blazor Server/Wasm)和客户端(Windows/macOS/Android/iOS)共享,这篇我加上 Masa Blazor[2]组件库的引用,并把前几个月写的时间戳转换[3]工具加上。1. 前置知识关于Masa Blazor请点击Masa Blazor官网[4]了解&#xf…

常用的NSLOG日志打印格式

2019独角兽企业重金招聘Python工程师标准>>> 常用的NSLOG日志打印格式 以下是常用的LOG打印,如果有特殊,请我 ,这边会不定期更新。 % 对象 %d, %i 整数 %u 无符整形 %f 浮点/双字 %x, %X 二进制整数 %…

Android studio提示Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8.

1、 问题 在Android studio里面运行java的lib库,但是错误提示如下 Build file F:\sourceZip\app\build.gradle line: 2An exception occurred applying plugin request [id: com.android.application] > Failed to apply plugin com.android.internal.applicat…

[转]浅析DDD(领域驱动设计)

最近在做一些微服务相关的设计,内容包括服务的划分,Restful API的设计等。其中比较棘手的就是Service的职责划分:如何抽象具有统一业务范畴的Model,使其模块化,又如何高度提炼并组合多模块,使得业务可独立服…

windows环境实现批量加密文件,并创建加密文件同名(不带后缀)的文件夹,然后把加密文件和图片和文本放入这个文件夹。

1、 需求 我想把资源文件先加密成压缩文件,然后同时创建每个加密压缩文件同名的文件夹,同时需要把这个加密文件拷贝到这个同名的文件夹,然后还需要把一个图片和一个文本文档同时放进这个文件夹,然后在不加密压缩这个文件夹&#…

.NET7之MiniAPI(特别篇) :Preview5优化了JWT验证(上)

在.NET7的Preview5中,优化了asp.net core中的JWT验证,不用像以前繁琐了,更重要的是带来了一组生成Token的工具,可以让开发人员或测试人员不需登录获取Token,而达到测试的目的。创建项目现在来看一下怎么使用&#xff0…

iOS - UTI

一、UTI概念 1、什么是UTI Uniform Type Identifier,是字符串,格式标识符。 根据UTI,可得到相应的其他类型的格式标识符。比如public.jpeg对应于: A four-character file type code (an OSType) of JPEGA filename extension of .…

[转].NET 开源项目 Polly 介绍

今天介绍一个 .NET 开源库:Polly,它是支持 .NET Core 的,目前在 GitHub 的 Star 数量已经接近 5 千,它是一个强大且实用的 .NET 库。 Polly 介绍 官方对 Polly 的介绍是这样的: Polly is a .NET resilience and tran…

「 刘一哥GIS」CSDN专业技术博文专栏目录索引

刘一哥GIS 个人简介:刘一哥,多年研究地图学、地理信息系统、遥感、摄影测量和GPS等应用,精通ArcGIS等软件的应用,精通多门编程语言,擅长GIS二次开发和数据库系统开发,具有丰富的行业经验,致力于…