PAM从入门到精通(五)

接前一篇文章:PAM从入门到精通(四)

本文参考:

《The Linux-PAM Application Developers' Guide》

先再来重温一下PAM系统架构:

更加形象的形式:

五、主要函数详解

3. pam_set_item

概述:

设置PAM项。

详细描述:

pam_set_item函数允许应用程序和PAM服务模块访问和更新item_type的PAM信息。为此,将创建项参数指向的对象的副本。支持以下item_types:

  • PAM_SERVICE

服务名称(标识PAM函数将用于验证程序的PAM堆栈)。

  • PAM_USER

将使用其提供身份服务的实体的用户名。也就是说,在身份验证之后,PAM_USER标识可以使用该服务的本地实体。

注意,PAM堆栈中的任何模块都可以将该值从某个事物(例如,“匿名”)映射到其它事物(例如“guest119”)。

  • PAM_USER_PROMPT

提示输入用户名时使用的字符串。此字符串的默认值是“login:”的本地化版本。

  • PAM_TTY

终端名称:如果是设备文件,则前缀为/dev/;对于图形化的、基于X的应用程序,该项的值应该是$DISPLAY变量。

  • PAM_RUSER

请求用户名:本地请求用户的本地名称或远程请求用户的远程用户名。

通常,应用程序或模块会尝试提供经过最强身份验证的值(在远程帐户之前是本地帐户)。该值的信任级别体现在与应用程序相关联的实际身份验证堆栈中,因此最终由系统管理员决定。

PAM_RUSER@PAM_RHOST应始终识别请求用户。在某些情况下,PAM_RUSER可能为NULL。在此种情况下,不清楚提出请求的实体是谁。

  • PAM_HOST

请求主机名(PAM_RUSER实体请求服务的机器的主机名)。这就是PAM_RUSER@PAM_RHOST确实标识了请求用户。在某些应用程序中,PAM_RHOST可能为NULL。在这种情况下,不清楚身份验证请求的来源。

  • PAM_AUTHOK

身份验证令牌(通常是密码)。除了pam_sm_authenticate()和pam_sm_chauthtok()之外,所有模块函数都应该忽略此令牌。在前一个函数中,它用于将最新的身份验证令牌从一个堆叠的模块传递到另一个模块。在后一个函数中,令牌用于另一个目的。它包含当前活动的身份验证令牌。

  • PAM_OLDAUTHOK

旧的身份验证令牌。除pam_sm_chauthtok()外,所有模块函数都应忽略此令牌。

  • PAM_CONV

pam_conv结构。参见pam_conv。

以下附加项目是特定于Linux PAM的,不应在可移植应用程序中使用:

  • PAM_FAIL_DELAY

用于重定向集中管理的故障延迟的函数指针。参见pam_fail_delay。

  • PAM_XDISPLAY

X display的名称。对于图形化的、基于X的应用程序,该项的值应该是$DISPLAY变量。该值可以独立于PAM_TTY用于传递display的名称。

  • PAM_XAUTHDATA

指向一个结构的指针,该结构包含连接到PAM_XDISPLAY指定的显示器所需的X身份验证数据(如果需要此类信息)。参见pam_xauth_data。

  • PAM_AUTHOK_TYPE

默认操作是模块在请求密码时使用以下提示:“New UNIX password:”和“Retype UNIX password:”。示例单词UNIX可以替换为此项,默认情况下为空。此项目由pam_get_authtok使用。

对于除PAM_CONV和PAM_FAIL_DELAY之外的所有item_type,item都是指向以<NULL>为结束符的字符串的指针。在PAM_CONV的情况下,item指向初始化的PAM_CONV结构。在PAM_FAIL_DELAY的情况下,item是函数指针:void(*DELAY_fn)(int retval,unsigned usec_DELAY,void*appdata_ptr)。

PAM_AUTHTOK和PAM_OLDAUTHTOK都将在返回应用程序之前重新设定种子。这意味着应用程序无法访问身份验证令牌。

函数声明:

#include <security/pam_modules.h>
int pam_set_item ( pamh , item_type , item );
pam_handle_t * pamh ;
int item_type ;
const void * item ;

返回值:

  • PAM_BAD_ITEM:应用程序试图设置未定义或不可访问的项。
  • PAM_BUF_ERR:内存缓冲区错误。
  • PAM_SUCCESS:数据已成功更新。
  • PAM_SYSTEM_ERR:系统错误,作为第一个参数传递的pam_handle_t无效。

实例:

实例1. 一般性代码

     /* 设置一些关于认证用户信息的参数 */pam_set_item(pamh, PAM_TTY, ttyn);pam_set_item(pamh, PAM_RHOST, remote_host);

实例2. SDDM中的代码

参见SDDM包源码目录src/helper/backend/PamHandle.cpp中的PamHandle::setItem函数。

    bool PamHandle::setItem(int item_type, const void* item) {m_result = pam_set_item(m_handle, item_type, item);if (m_result != PAM_SUCCESS) {qWarning() << "[PAM] setItem:" << pam_strerror(m_handle, m_result);}return m_result == PAM_SUCCESS;}

更多函数请看后续文章。

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

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

相关文章

【定时开关机】windows 10 如何设置定时开关机

一、需求 二、场景 三、思路 四、实现 A. 设置来电开机 B. 设置及定时关机 一、需求 需要一台 win 10 的电脑在工作时间内自动开关机&#xff08;早 8:30 - 晚&#xff1a;6:05&#xff09; 二、场景 开机&#xff1a;早 8:30 关机&#xff1a;晚 6:05 三、思路 【开机…

目标跟踪数据集分享

360VOT: A New Benchmark Dataset for Omnidirectional Visual Object Tracking 360VOT 是一个新的大规模全景追踪基准数据集&#xff0c;旨在为全景视觉物体追踪提供支持。这个数据集包含了 120 个序列&#xff0c;总计超过 11.3 万张高分辨率帧&#xff0c;采用等距投影。追踪…

new Object()到底占用几个字节

Java内存模型 对象内存中可以分为三块区域&#xff1a;对象头(Header)&#xff0c;实例数据(Instance Data)和对齐填充(Padding)&#xff0c;以64位操作系统为例(未开启指针压缩的情况)Java对象布局 如下图所示&#xff1a; 其中对象头中的Mark Word中的详细信息在文章synchr…

李宏毅生成式AI课程笔记(持续更新

01 ChatGPT在做的事情 02 预训练&#xff08;Pre-train&#xff09; ChatGPT G-Generative P-Pre-trained T-Transformer GPT3 ----> InstructGPT&#xff08;经过预训练的GPT3&#xff09; 生成式学习的两种策略 我们在使用ChatGPT的时候会注意到&#xff0c;网站上…

JVM 垃圾回收机制(可达性分析、引用计数)

目录 1 什么是垃圾2 为什么需要回收3 哪些对象被判定为垃圾呢3.1 引用计数法3.2 可达性分析算法&#xff1a;GC Roots根 1 什么是垃圾 垃圾是指在运行程序中没有任何指针指向的对象&#xff0c;就是需要被回收的。 2 为什么需要回收 执行程序会不断地分配内存空间&#xff0c…

Windows安装SNMP服务

windows10安装SNMP服务 打开计算机的设置–应用–应用和功能–可选功能–点击加号添加功能,添加以下两个功能: windows server安装SNMP服务 搜索打开服务器管理器,点击功能–添加功能,勾选SNMP服务,点击下一步,等待安装完成 按win+R快捷键,运行service.msc,在服务中将…

与 Harbor 构建高效的镜像加速工作流

镜像是容器的基础&#xff0c;如今有很多用户在实践使用 Harbor 作为镜像存储与分发方案&#xff0c;本文介绍了 Harbor 在支持镜像加速方面的能力&#xff0c;以及 Nydus 这种改进的镜像格式&#xff0c;用于解决镜像在网络&#xff0c;存储&#xff0c;端到端可信方面的问题。…

GPT绘制流程图咒语

【咒语】下面是我的一篇论文选取部分&#xff0c;为了让读者更好理解&#xff0c;我准备画一张图&#xff0c;请你阅读后为我设计一下这个图应该怎么画&#xff0c;更有说服力&#xff0c;更容易理解 论文片段&#xff1a; 多模态数据融合研究的基础在于有效的数据采集。首先&a…

git学习——第4节 时光机穿梭

我们已经成功地添加并提交了一个readme.txt文件&#xff0c;现在&#xff0c;是时候继续工作了&#xff0c;于是&#xff0c;我们继续修改readme.txt文件&#xff0c;改成如下内容&#xff1a; Git is a distributed version control system. Git is free software. 现在&…

Spring源码解析——事务增强器

正文 上一篇文章我们讲解了事务的Advisor是如何注册进Spring容器的&#xff0c;也讲解了Spring是如何将有配置事务的类配置上事务的&#xff0c;实际上也就是用了AOP那一套&#xff0c;也讲解了Advisor&#xff0c;pointcut验证流程&#xff0c;至此&#xff0c;事务的初始化工…

CAD图形导出为XAML实践

文章目录 一、前言二、方法与实践2.1 画出原图&#xff0c;借第三方工具导出至指定格式2.2 CAD导出并转换2.3 两种方法的优劣2.3.1 直接导出代码量大2.3.2 导入导出需要调参 三、总结 一、前言 上位机通常有一个设备/场景界面&#xff0c;该界面用于清晰直观地呈现设备状态。 …

Yakit工具篇:子域名收集的配置和使用

简介(来自官方文档) 子域名收集是指通过各种技术手段&#xff0c;收集某个主域名下所有的子域名列表。子域名是指在主域名前面添加一级或多级名称的域名。例如&#xff0c;对于主域名example.com&#xff0c;其子域名可以是www.example.com、mail.example.com、blog.example.c…

触控笔哪个牌子好用?主动电容笔和被动电容笔的区别

主动式电容笔和被动式电容笔两者最大的不同之处在于主动式电容笔的应用范围更大&#xff0c;可以兼容各种不同的电容屏幕。随着人们对其认识的不断深入&#xff0c;其应用范围也在不断扩大。而且国产的主动式电容笔&#xff0c;也在不断的更新换代&#xff0c;重力越来越多&…

Django使用Token认证(simplejwt库的配置)

目录 官网文档安装项目配置拓展配置 官网文档 https://django-rest-framework-simplejwt.readthedocs.io/en/latest/ 安装 pip install djangorestframework-simplejwt项目配置 REST_FRAMEWORK {...DEFAULT_AUTHENTICATION_CLASSES: (...rest_framework_simplejwt.authent…

c#设计模式-行为型模式 之 访问者模式

&#x1f680;简介 封装一些作用于某种数据结构中的各元素的操作&#xff0c;它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作。 访问者模式包含以下主要角色 : 抽象访问者&#xff08;Visitor&#xff09;角色&#xff1a;定义了对每一个元素 &#xff08;E…

pytorch3D Windows下安装经验总结

一、说明及准备工作 最近在安装pytorch3D的时候遇到了很多问题&#xff0c;查了很多博客&#xff0c;但发现讲的都不太全&#xff0c;所以特将自己的及收集到的安装过程经验总结如下。我是在Anaconda中虚拟环境下安装的。 1.1准备工作 官方安装教程如下&#xff1a;https://…

英特尔 SGX 技术概述

目录 介绍概述指示结构Memory安全区页面缓存Enclave Page Cache &#xff08;EPC&#xff09;安全区页面缓存映射Enclave Page Cache Map (EPCM) Memory ManagementStructures页面信息Page Information (PAGEINFO)安全信息Security Information (SECINFO)分页加密元数据Paging …

小程序入门——详细教程

&#x1f3ac; 艳艳耶✌️&#xff1a;个人主页 &#x1f525; 个人专栏 &#xff1a;《Spring与Mybatis集成整合》《Vue.js使用》 ⛺️ 生活的理想&#xff0c;为了不断更新自己 ! 1.微信小程序 入门 1.1什么是小程序&#xff1f; 2017年度百度百科十大热词之一 微信小程…

小程序的console中出现:。。。不在以下 request 合法域名列表中,请参考文档:。。。的报错解决

报错效果&#xff1a; 其实这个报错不代表自己的代码有问题 但是本强迫症研究了一下&#xff0c;按照以下方法关掉就不会显示这个报错了。 点微信开发者工具中的右上角的详情。点本地设置。勾选不校验。。。HTTPS证书。 即可关闭该报错&#xff1a;

java springboot VUE粮食经销系统开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot VUE 粮食经销系统是一套完善的完整信息管理类型系统&#xff0c;结合springboot框架和VUE完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用springboot框架&#xff08;MVC模式开发&#xff09; &#xff0c;系统具有完整的源代码和数…