PAM从入门到精通(九)

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

本文参考:

《The Linux-PAM Application Developers' Guide》

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

更加形象的形式:

五、主要函数详解

7. pam_authenticate

概述:

对用户进行身份验证。

函数声明:

#include <security/pam_appl.h>
int pam_authenticate ( pamh , flags );
pam_handle_t * pamh ;
int flags ;

详细描述:

pam_authenticate函数用于对用户进行身份验证。用户被要求提供一个基于身份验证服务的身份验证令牌,通常这是一个密码,但也可能是指纹。

PAM服务模块可以请求用户通过对话机制输入其用户名(参见pam_start()和pam_conv())。经过身份验证的用户名称将出现在PAM的PAM_USER项中。可以通过调用pam_get_item()来恢复此项目。

参数说明:

  • pam_handle_t *pamh

pamh参数是通过先前调用pam_start()获得的身份验证句柄。

  • int flags

flags参数是以下值中的零或更多的二进制或:

PAM_SILENT

不发出任何消息。

PAM_DISALLOW_NULL_AUTHTOK

如果用户没有注册的身份验证令牌,PAM模块服务应返回PAM_AUTH_ERR。

返回值:

  • PAM_ABORT:应用程序应在首先调用pam_end()后立即退出。
  • PAM_AUTH_ERR:用户未通过身份验证。
  • PAM_CRED_INSUFFICIENT:由于某些原因,应用程序没有足够的资格(凭证)来验证用户。
  • PAM_AUTHINFO_UNAVAIL:模块无法访问身份验证信息。这可能是由于网络或硬件故障等原因造成的。
  • PAM_MAXTRIES:一个或多个身份验证模块已达到对用户进行身份验证的尝试次数限制。不要再次进行尝试。
  • PAM_SUCCESS:用户已成功通过身份验证。
  • PAM_USER_UNKNOWN:身份验证服务未知的用户。

实例:

实例1. 一般性代码

    while (!authenticated && retry < MAX_RETRIES){status = pam_authenticate(pamh, 0);/* 认证,检查用户输入的密码是否正确 */}

实例2. SDDM中的代码

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

代码如下:

    bool PamHandle::authenticate(int flags) {qDebug() << "[PAM] Authenticating...";m_result = pam_authenticate(m_handle, flags | m_silent);if (m_result != PAM_SUCCESS) {qWarning() << "[PAM] authenticate:" << pam_strerror(m_handle, m_result);}qDebug() << "[PAM] returning.";return m_result == PAM_SUCCESS;}

更多函数请看后续文章。

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

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

相关文章

即刻报名,企业服务与新经济论坛亮点提前揭秘!

峰会官网已上线&#xff0c;最新议程请关注&#xff1a;doris-summit.org.cn 即刻报名 Doris Summit 是 Apache Doris 社区一年一度的技术盛会&#xff0c;由飞轮科技联合 Apache Doris 社区的众多开发者、企业用户和合作伙伴共同发起&#xff0c;专注于传播推广开源 OLAP 与实…

【算法 | 位运算No.1】leetcode268. 丢失的数字

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【Leetcode】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&#xff0c;希望…

JDBC 和数据库连接池

文章目录 1. JDBC概述1.1 基本介绍1.2 模拟JDBC1.3 JDBC 带来的好处1.4 JDBC API 2. JDBC 快速入门2.1 JDBC 程序编写步骤2.2 JDBC 第一个程序 3. 获取数据库连接 5 种方式3.1 方式 13.2 方式 23.3 方式 33.4 方式 43.5 方式 53.6 课堂练习 4. ResultSet [ 结果集]5. Statement…

软考(高级)是否需要报班,大家有什么建议?

对于报考高级专业领域还不确定。根据我的个人经验&#xff0c;我强烈建议不要犹豫&#xff0c;直接报班。时间非常紧张&#xff0c;务必抓紧学习重点&#xff0c;不要漫无目的地自学。免费的学习方式往往会付出更多的时间成本。请考虑自身经济情况。 尽管自学考试自由度高&…

视频下载小助手儿开通了视频号下载功能

不少人对视频号都有视频下载的需要&#xff0c;但由于平台并不提供该功能&#xff0c;我们视频下载小助手儿&#xff0c;就提供了视频号的视频下载功能。 为什么起名叫下载小助手儿呢&#xff1f; 下载小助手儿更直观让用户了解到他可以下载视频号的视频&#xff0c;但不局限与…

IStoreOS结合内网穿透软件Cpolar实现公网远程访问

文章目录 前言1. ssh局域网登陆iStoreOS系统2. 安装Cpolar内 网穿透软件3. 测试公网远程链接4. 公网使用固定http地址远程访问iStoreOS webui界面 前言 iStoreOS系统是基于OpenWrt定制的软路由系统&#xff0c;提供了如轻nas&#xff0c;云盘&#xff0c;文件共享等众多网络服务…

相似性搜索:第 7 部分--LSH 组合物

Vyacheslav Efimov – Medium S相似性搜索是一个问题&#xff0c;给定一个查询&#xff0c;目标是在所有数据库文档中找到与其最相似的文档。 一、说明 在数据科学中&#xff0c;相似性搜索经常出现在 NLP 领域、搜索引擎或推荐系统中&#xff0c;其中需要检索最相关的文档或项…

【Java系列】Java 简介

目录 Java 简介主要特性发展历史Java 开发工具系列文章版本记录 Java 简介 Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 面向对象程序设计语言和 Java 平台的总称。由 James Gosling和同事们共同研发&#xff0c;并在 1995 年正式推出。 后来 Sun 公司被 Ora…

黑豹程序员-架构师学习路线图-百科:MySQL

文章目录 1、什么是MySQL2、MySQL受喜爱程度经典四人组&#xff1a; 3、发展历史4、MariaDB 1、什么是MySQL MySQL是一个关系型数据库管理系统&#xff0c;由瑞典MySQL AB 公司开发&#xff0c;属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一&#xff0c;在 …

canvas绘制扫描图

先定义一个canvas <div class"canFa"><canvas width"380" id"can3"></canvas></div>主要绘制函数 var chosHeight document.getElementsByClassName("canFa")[0].children[0].clientHeight;var chosWidth …

Anthropic全球上线AI语言模型Claude 2;多模态系统:融合文本和图像的新前沿

&#x1f989; AI新闻 &#x1f680; Anthropic全球上线AI语言模型Claude 2&#xff0c;编程、数学、推理能力大幅提升 摘要&#xff1a;Anthropic在全球正式上线了AI语言模型Claude 2。相比前代版本&#xff0c;Claude 2在编程、数学、推理等方面都有大幅提升&#xff0c;支…

论坛介绍 | COSCon'23 云计算(C)

众多开源爱好者翘首期盼的开源盛会&#xff1a;第八届中国开源年会&#xff08;COSCon23&#xff09;将于10月28-29日在四川成都市高新区菁蓉汇举办。本次大会的主题是&#xff1a;“开源&#xff1a;川流不息、山海相映”&#xff01;各位新老朋友们&#xff0c;欢迎到成都&am…

关于opencv的contourArea计算方法

cv::contourArea计算的轮廓面积并不等于轮廓点计数&#xff0c;原因是cv::contourArea是基于Green公式计算 老外的讨论 github 举一个直观的例子&#xff0c;图中有7个像素&#xff0c;橙色为轮廓点连线&#xff0c;按照contourArea的定义&#xff0c;轮廓的面积为橙色所包围…

anaconda中安装pytorch(GPU版)(离线安装)(最简单)

anaconda中安装pytorch&#xff08;GPU版&#xff09;&#xff08;离线安装&#xff09;&#xff08;最简单&#xff09;_anaconda安装pytorch gpu-CSDN博客anaconda里安装pytorch,GPU版本&#xff0c;离线本地安装&#xff0c;新手_anaconda安装pytorch gpuhttps://blog.csdn.…

头歌平台——基于数组的工资处理系统

第1关&#xff1a;数据输入和计算 任务描述 本关任务&#xff1a; 编写函数input_data(char uid[10][5], int salary[10], int csalary[10], int revenue[10], int _water_electricity[10], int _deductions[10])&#xff0c;作用为输入职工的代号&#xff0c;岗位工资&#…

打工人一定要学会找资源~

还有很多小伙伴不知道怎么找资源吗&#xff1f;今天就给大家推荐一下几个资源网站&#xff0c;无论是图片又或是视频。通通都能找到&#xff01; 一、全网1000平台视频解析下载器——XDown 在线视频下载工具&#xff0c;几乎能下全网所有平台的视频&#xff0c;而且下完还能自…

javaEE - 2(11000字详解多线程)

一&#xff1a;多线程带来的的风险-线程安全 线程安全的概念&#xff1a;如果多线程环境下代码运行的结果是符合我们预期的&#xff0c;即在单线程环境应该的结果&#xff0c;则说这个程序是线程安全的。 当多个线程同时访问共享资源时&#xff0c;就会产生线程安全的风险&am…

Unity3D 拖拽赋值组件与通过Find赋值组件的优点与缺点详解

Unity3D是一款流行的游戏开发引擎&#xff0c;提供了丰富的功能和工具&#xff0c;使开发人员能够轻松创建高质量的游戏。在Unity3D中&#xff0c;我们经常需要通过拖拽赋值组件或通过Find赋值组件来实现不同对象之间的交互。本文将详细介绍这两种方法的优点和缺点&#xff0c;…

ICML2021 | RSD: 一种基于几何距离的可迁移回归表征学习方法

目录 引言动机分析主角&#xff08;Principal Angle&#xff09;表征子空间距离正交基错配惩罚可迁移表征学习实验数据集介绍 实验结果总结与展望 论文链接 相关代码已经开源 引言 深度学习的成功依赖大规模的标记数据&#xff0c;然而人工标注数据的代价巨大。域自适应&…

VA01/VA02/VA03 销售订单根据定价和步骤校验权限隐藏价格

1、业务需求 针对用户使用销售订单时&#xff0c;根据定价和步骤顺序&#xff0c;判断是否有权限&#xff0c;没有权限时隐藏销售订单抬头和行项目的部分价格数据 要限制的定价和步骤在spro中的位置 限制的步骤 2、增强实现 2.1权限对象 创建带有定价和步骤的权限对象 分配…