PAM从入门到精通(五)

news2025/1/16 12:57:59

接前一篇文章: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.coloradmin.cn/o/1104553.html

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

相关文章

可追溯性在MES管理系统解决方案中的重要性

在当今制造业中&#xff0c;“可追溯性”已经变得至关重要。它能够在产品出现问题时迅速定位问题源头&#xff0c;并持续优化生产流程&#xff0c;确保产品质量得到提升和保持稳定。 可追溯性不仅涉及追踪产品来源&#xff0c;还是一种保障数据真实性的手段。与数据安全技术相…

OTP语音芯片和TTS语音芯片的差异性

OTP&#xff08;One-Time Programmable&#xff09;语音芯片和TTS&#xff08;Text-to-Speech&#xff09;语音芯片是两种不同类型的声音处理芯片。OTP主要用于播放预录声音片段&#xff0c;而TTS则根据文本实时生成语音。OTP的灵活性较弱&#xff0c;适用于固定声音输出&#…

组件自定义事件 和 解绑事件

组件自定义事件 和 解绑事件 组件自定义事件 功能&#xff1a;父组件绑定数据&#xff0c;子组件触发事件。&#xff08;父绑子触发&#xff09; 实现步骤&#xff08;前三步在父组件实现&#xff0c;第四步在子组件实现&#xff09;&#xff1a; 第一步&#xff1a;提供事件…

图文结合丨Prometheus+Grafana+GreatSQL性能监控系统搭建指南(下)

一、环境介绍 本文环境&#xff0c;以及本文所采用数据库为GreatSQL 8.0.32-24 $ cat /etc/system-release Red Hat Enterprise Linux Server release 7.9 (Maipo) $ uname -a Linux gip 3.10.0-1160.el7.x86_64 #1 SMP Tue Aug 18 14:50:17 EDT 2020 x86_64 x86_64 x86_64 G…

单电源、轨到轨输入输出、高精度运放MS8551/8552/8554,可替代ADI的8551/8552/8554

MS8551/8552/8554 是输入输出轨到轨的高精度运算放大器&#xff0c;它 有极低的输入失调电压和偏置电流&#xff0c;单电源电压范围为 1.8V 到 5V 。 轨到轨的输入输出范围使 MS8551/8552/8554 可以轻松地放大高 电平和低电平的传感信号。所有特性使得 MS8551/8552/8…

C# 快速简单反射操作

文章目录 前言新反射使用BindingFlags以公有属性使用举例运行结果 前言 我之前写过一篇博客&#xff0c;是关于C# 反射的&#xff0c;我那时候使用的C# 反射写起来还是比较麻烦&#xff0c;需要获取Properies,再遍历Property&#xff0c;再找到对应Property&#xff0c;再使用…

Apache DolphinScheduler 官方发布3.2.0版本!大数据调度【重磅更新】

今天&#xff0c;Apache DolphinScheduler 3.2.0 版本在万众期待中终于发布了&#xff01;在之前的预告中&#xff0c;包括《重磅预告&#xff01;Apache DolphinScheduler 3.2.0 新功能“剧透”》、《3.2.0 版本预告&#xff01;Apache DolphinScheduler API 增强相关功能》、…

抖音电商商品卡实时免佣进入正式期!订单佣金实时返还,你拿到了吗?

“卖更多免更多”&#xff0c;抖音电商商品卡免佣政策落地至今&#xff0c;因其操作简单、门槛低&#xff0c;流量渠道丰富以及能够实实在在为商家降低经营成本的优势&#xff0c;迎来超百万商家踊跃参与。在政策持续进行过程中&#xff0c;切切实实助力新商家从0到1快速打开生…

Day17|110.平衡二叉树

一、110.平衡二叉树 题目链接&#xff1a;https://leetcode.cn/problems/balanced-binary-tree/ 文章链接&#xff1a;https://programmercarl.com/0110.%E5%B9%B3%E8%A1%A1%E4%BA%8C%E5%8F%89%E6%A0%91.html#%E7%AE%97%E6%B3%95%E5%85%AC%E5%BC%80%E8%AF%BE 视频链接&#xff…

安卓系统如何在WIFI里设置s5静态IP

在 Android 设备上使用 Wi-Fi Settings 设置s5的详细教程&#xff1a; 1、首先&#xff0c;打开您的 Android 设备的 “设置” 应用。 2、在设置菜单中&#xff0c;点击 “Wi-Fi” 选项。 3、确保您已经连接到一个 Wi-Fi 网络。如果没有连接&#xff0c;请点击 “添加网络” …

小程序技术在信创操作系统中的应用趋势:适配能力有哪些?

小程序技术在信创操作系统中的应用前景非常广阔&#xff0c;但也面临着一些挑战和问题。开发者需要积极应对这些挑战和问题&#xff0c;为信创操作系统的发展和推广做出贡献。同时&#xff0c;开发者也需要关注小程序技术在信创操作系统中的应用趋势&#xff0c;积极探索新的应…

Web安全系列——越权访问(权限控制失效)

一、前言 越权访问是当前Web应用中最常见的安全风险之一。 本文将介绍越权访问的原理、风险以及典型攻击场景&#xff0c;并为开发者提供有效的防范措施&#xff0c;帮助构建安全的Web应用。 二、什么是越权访问 越权访问&#xff0c;是指用户在不具备相应权限&#xff08;…

DevOps2023现状报告|注重文化、以用户为中心是成功的关键

Google Cloud DORA 团队的一份新研究报告强调了企业文化和关注用户作为成功软件交付支柱的重要性。 2023 DevOps 状况报告分析了过去 9 年来通过此类最大规模调查收集的全球 36,000 多名 IT 专业人员的数据。今年的报告是继 2022 年调查之后发布的&#xff0c;该调查发现越来…

使用RCurl和R来爬虫视频

以下是一个使用RCurl和R来爬虫视频的示例代码&#xff0c;代码中使用了https://www.duoip.cn/get_proxy来获取代理IP&#xff1a; # 引入必要的库 library(RCurl) library(rjson)# 获取代理IP proxy_url <- "https://www.duoip.cn/get_proxy" proxy <- getURL…

【Pycharm中python调用另一个文件类或者函数】

Pycharm中python调用另一个文件类或者函数 本文主要介绍了Pycharm中python调用另一个文件类或者函数&#xff0c;文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值&#xff0c;需要的朋友们下面随着小编来一起学习学习吧 文章目录 Pycha…

云HIS-医院信息化的核心

基于云计算技术的 B/S 架构的 HIS 系统&#xff0c;为基层医疗机构提供标准化的、信息化的、可共享的医疗信息管理系统&#xff0c;实现医患事务管理和临床诊疗管理等标准医疗管理信息系统的功能。系统利用云计算平台的技术优势&#xff0c;建立统一的健康档案存储平台&#xf…

纽交所上市公司埃森哲宣布已收购英国创意管理咨询公司

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经获悉&#xff0c;纽交所上市公司埃森哲(ACN)今日宣布已收购英国创意管理咨询公司The Storytellers。 这笔交易的金额没有披露。 此次收购将增强埃森哲在转型变革方面的能力&#xff0c;并进一步帮助客户阐明和激活…

请求转发和重定向区别

两者区别&#xff1a; 1.转发在一次请求中完成&#xff0c;重定向是两次请求 2.转发操作发生在服务器内部&#xff0c;重定向是在浏览器执行操作 3.转发地址栏不变&#xff0c;重定向地址栏变化&#xff08;两次请求&#xff0c;两个地址&#xff09; 4.转发可以在一次请求中共…

如何实现前端懒加载图像?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

SAP FICO案例教程简介

内容简介 本教程内容包括&#xff0c;erplabs编写的MTS、MTO 1、MTO 2案例教程FICO模块内容&#xff0c;案例业务在虚拟机全部实现&#xff0c;还包括若干案例专题。案例内容实用全面、图文表丰富&#xff0c;数据严谨前后关联衔接&#xff0c;可作为实际工作参考资料。本书适合…