PAM从入门到精通(一)

本文参考以下博文:

PAM模块详解及sudo命令

PAM 的应用开发和内部实现源码分析

PAM详解(一)PAM介绍

百度百科 —— PAM

Oracle Solaris 10 开发者安全性指南 —— PAM 框架介绍

特此致谢!

零、引言

身份认证是操作系统安全的重要机制之一,系统通过认证机制核查用户的身份证明,并作为用户进入系统的判定条件,是防止恶意用户进入系统的第一道门槛。近年来认证理论和技术得到了迅速发展,产生了各种认证机制,如:口令机制、RSA、DCE、kerberos认证体制、S/Key和基于智能卡的身份认证等。然而,当系统中引入新的认证机制时,一些系统入口登录服务如login、rlogin和telnet等应用程序就必须改写以适应新的认证机制。

为了解决这一问题,1995年Sun公司的Vipin Samar和Charlie Lai提出了PAM,并将其应用在Solaris系统上。PAM框架将应用程序与具体的认证机制分离,使得系统改变认证机制时,不再需要修改采用认证机制的应用程序,而只要由管理员配置应用程序的认证服务模块极大地提高了认证机制的通用性与灵活性。

现在大多数操作系统都采用PAM实现身份认证,有Linux系统Linux-PAMFreeBSD5.x采用的OpenPAM(FreeBSD 4.x采用的是Linux-PAM)等。它们的实现原理一样,只是实现细节有所不同而已。本系列文章针对于Linux-PAM进行介绍和详细解析。

一、介绍

PAM的英文全称是Pluggable Authentication Modules,中文译为可插拔认证模块。引言中已提到,PAM是由Sun提出的一种认证机制,其通过提供一些动态链接库和一套统一的API(应用程序接口)以及一连串的验证机制,将系统提供的服务和该服务的认证方式分开使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时也便于向系统中添加新的认证手段。只要使用者将验证阶段的需求告知PAM后,PAM就能够汇报使用者验证的结果(成功或者失败)。

相应地,Linux-PAM包当然也包含本地系统管理员用来控制应用程序如何对用户进行身份验证的可插拔身份验证模块。

二、框架

PAM框架由以下四部分组成:

(1)PAM应用程序,也称为消费方;

(2)PAM库;

(3)PAM配置文件;

(4)PAM服务模块,也称为提供者。

该框架为与验证相关的活动提供了统一的执行方式。采用该方式,(1)应用程序开发者不必了解策略的语义即可使用PAM服务;(2)算法是集中提供的,可以独立于各个应用程序对算法进行修改;(3)借助 PAM,管理员可以根据特定系统的需要调整验证过程,而不必更改任何应用程序,调整是通过PAM 配置文件pam.conf 来实现的。

PAM体系结构如下图所示:

应用程序通过PAM应用编程接口 (Application Programming Interface, API) 与PAM库进行通信。PAM服务模块通过PAM服务提供者接口 (Service Provider Interface, SPI)与PAM库进行通信。通过这种方式,PAM库可使应用程序和模块相互进行通信。

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

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

相关文章

gitee page中HTML显示乱码

参考的:静态HTML网页部署到gitee后中文乱码-CSDN博客 根据上述引用的博客做完后要记得在gitee page中更新(我就是没点更新以为用不了)

Java GC 算法

一、概述 理解Java虚拟机垃圾回收机制的底层原理,是成为一个高级Java开发者的基本功。本文从底层的垃圾回收算法开始,着重去阐释不同垃圾回收器在算法设计和实现时的一些技术细节,去探索「why」这一部分,通过对比不同的垃圾回收算…

LabVIEW在安装了其它的NI软件之后崩溃了

LabVIEW在安装了其它的NI软件之后崩溃了 在安装了其它的NI软件之后,一些原本安装好的或者新安装的软件由于缺少必要的DLL而崩溃掉了。例如,在这种情况下,Teststand可能会报下面的错误: RetrievingCOM class factory for compone…

1.1 Windows驱动开发:配置驱动开发环境

在进行驱动开发之前,您需要先安装适当的开发环境和工具。首先,您需要安装Windows驱动开发工具包(WDK),这是一组驱动开发所需的工具、库、示例和文档。然后,您需要安装Visual Studio开发环境,以便…

实践笔记-docker安装及配置镜像源

docker安装及配置镜像源 1.卸载旧版本docker2. 安装yum工具3. 设置镜像仓库4.安装docker5. 启动docker服务6.docker镜像源配置 当前环境linux为centos7 1.卸载旧版本docker 如果以前安装过旧版本可以先执行卸载,下面的截图是没有安装过。 yum remove docker \ do…

机器学习笔记 - 使用3D卷积神经网络进行视频分类

1、导入相应的库 3D CNN 使用三维滤波器来执行卷积。内核能够在三个方向上滑动,而在 2D CNN 中它可以在二维上滑动。 首先安装并导入必要的库,用于处理ZIP文件内容的Remotezip 、用于使用进度条的tqdm 、用于处理视频文件的OpenCV 、用于执行更复杂的张量操作的einop…

Python批量测试IP端口GUI程序(Tkinter)

一、实现样式 批量IP与端口中间用“,”分割,点击Telnet进行测试,前提是你电脑安装了telnet客户端,Clear按钮用来清空文本框。 二、核心点 1、使用Tkinter来制作桌面GUI页面 2、使用telnetlib模块测试telnet端口 三、困难点 1、测试结果…

“氛围感 真环绕”可拆卸自由观影新物种 ——索尼发布“积木音响”HT-AX7

2023年10月16日,索尼(中国)有限公司发布新款蓝牙音响——“积木音响”HT-AX7。该音响采用索尼360SSM技术(360空间声场映射技术,简称360SSM)和独特的可拆卸结构设计,在实现传统音响的功能基础上,进一步为用户提供了创新式可移动多场…

智慧饭堂报餐系统源码 智慧食堂源码

智慧饭堂报餐系统源码 智慧食堂源码 技术栈 1、前端技术栈:ES6、vue、vuex、vue-router、vue-cli、axios、element-ui 2、后端技术栈:SpringBoot、MyBatis、Spring Security、Jwt 介绍 一款java开发的智慧饭堂报餐系统,支持连接人脸识别…

爬虫 | 正则、Xpath、BeautifulSoup示例学习

文章目录 📚import requests📚import re📚from lxml import etree📚from bs4 import BeautifulSoup📚小结 契机是课程项目需要爬取一份数据,于是在CSDN搜了搜相关的教程。在博主【朦胧的雨梦】主页学到很多…

企业订货系统常见问题与解决方案|网站定制搭建|小程序APP开发

企业订货系统常见问题与解决方案|网站定制搭建|小程序APP开发 在企业经营中,订货系统是一个非常重要的工具,它可以帮助企业快速地获取客户需求,制定生产计划,提高供应链效率,帮助企业快速、准确地计算出所需物资的数量…

基于R和gephi做宏基因组与代谢组等多组学联合network相关性网络图

写在前面 拿到多组学的数据后一直在找合适的方法将二者进行关联,比如我这里是三种体液的代谢组与一种体液的宏基因组。需求是对多组学进行关联分析,直到最近看到不少文章里利用Gephi将相关性表格进行可视化的图,效果还不错,于是写…

Vue3集成高德地图:快速上手,实现你的业务需求

Vue3集成高德地图 前言一、准备工作1.开发文档2.添加应用 二、使用步骤命令安装2.地图容器创建3.组件引入4.js api 安全密钥5.初始化地图6. 图层6.1 添加 / 设置 / 获取 / 移除图层6.1.1 添加图层6.1.2 设置图层6.1.3 获取图层6.1.4 移除图层 7. 点标记8. 信息窗体8.1 默认信息…

【微服务】微服务初步认识 - 微服务技术如何学习 · 认识微服务架构

微服务(1) 文章目录 【微服务】(1)1. 微服务相关技术栈2. 微服务学习路线3. 认识微服务架构3.1 单体架构3.2 分布式架构3.3 微服务(架构)3.4 微服务(架构)治理落实相关的SpringCloud、SpringCloudAlibaba和阿里巴巴的Dubbo提供的服…

226、翻转二叉树

题目链接: \sf 题目链接: 题目链接: 图解: 方法一、 D F S \sf 方法一、DFS 方法一、DFS 递归: 让左子树是翻转后的右子树, 右子树是翻转后的左子树。 ∴从叶结点开始,自底向上逐步翻转。递归出…

Elucidating the Design Space of Diffusion-Based Generative Models 阅读笔记

文章使用模块化(modular)的思想,分别从采样、训练、score network设计三个方面分析和改进diffusion-based models。 之前的工作1已经把diffusion-based models统一到SDE或者ODE框架下了,这篇文章的作者同样也从SDE和ODE的角度出发…

文件路径操作

避开-转义字符 python文件路径导致的错误常常与“\”有关,因为在路径中的“\”常会被误认为转义字符。 所以在上述路径中,\table\name\rain中的\t,\n,\r都易被识别为转义字符。 解决的办法主要由以下三种: #1 前面加r表示不转义 pathr&quo…

html资源提示符

前言&#xff1a;正常dom解析 中遇到script标签 &#xff0c;会暂停主线程 去下载js&#xff0c;拿到资源后&#xff0c;主线程再执行js。 那么主线程在等待网络线程下载这个空闲很浪费 解决方案&#xff1a; script标签增加属性 async defer 1.async <script src"./i…

[C++]:1.初识C++和C语言缺陷补充。

初识C和C语言缺陷补充 一.主要内容&#xff1a;二.具体内容&#xff1a;一&#xff1a; 作用域1.命名空间&#xff1a;2.函数声明和定义&#xff1a;3.不存在命名冲突的情况&#xff1a; 二.输入输出&#xff1a;1.基本输入输出&#xff1a;2.关于std的展开&#xff1a; 三.函数…

5+非肿瘤分析,分型+WGCNA+机器学习筛选相关基因

今天给同学们分享一篇非肿瘤分型机器学习WGCNA实验的生信文章“Identification of diagnostic markers related to oxidative stress and inflammatory response in diabetic kidney disease by machine learning algorithms: Evidence from human transcriptomic data and mou…