PAM从入门到精通(十三)

编程入门 行业动态 更新时间:2024-10-18 18:21:46

PAM从<a href=https://www.elefans.com/category/jswz/34/1770026.html style=入门到精通(十三)"/>

PAM从入门到精通(十三)

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

本文参考:

《The Linux-PAM Application Developers' Guide》

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

更加形象的形式:

五、主要函数详解

11. pam_open_session

概述:

启动PAM会话管理。

函数声明:

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

详细描述:

pam_open_session函数为先前成功通过身份验证的用户设置用户会话。会话稍后应通过调用pam_close_session()来终止。

应该注意的是,应用程序的有效uid(通过geteuid()获得)应该具有足够的权限来执行例如创建或挂载用户主目录之类的任务。

参数说明:

  • pam_handle_t *pamh

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

  • int flags

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

PAM_SILENT

不发出任何消息。

返回值:

  • PAM_ABORT:一般故障。
  • PAM_BUF_ERR:内存缓冲区错误。
  • PAM_SESSION_ERR:会话失败。
  • PAM_SUCCESS:会话已成功创建。

实例:

实例1. 一般性代码

     /* 通过帐户管理检查之后则打开会话 */if (status = pam_open_session(pamh, 0) != PAM_SUCCESS)exit(status);

实例2. SDDM中的代码

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

代码如下:

    bool PamHandle::openSession() {m_result = pam_open_session(m_handle, m_silent);if (m_result != PAM_SUCCESS) {qWarning() << "[PAM] openSession:" << pam_strerror(m_handle, m_result);}m_open = m_result == PAM_SUCCESS;return m_open;}

12. pam_close_session

概述:

终止PAM会话管理。

函数声明:

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

详细描述:

pam_close_session函数用于指示经过身份验证的会话已结束。会话应该是通过调用pam_open_session()创建的。

应该注意的是,应用程序的有效uid(通过geteuid()获得)应该具有足够的权限来执行例如卸载用户主目录之类的任务。

参数说明:

  • pam_handle_t *pamh

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

  • int flags

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

PAM_SILENT

不发出任何消息。

返回值:

  • PAM_ABORT:一般故障。
  • PAM_BUF_ERR:内存缓冲区错误。
  • PAM_SESSION_ERR:会话失败。
  • PAM_SUCCESS:会话已成功终止。

实例:

实例1. 一般性代码

    pam_end(pamh, PAM_SUCCESS);  /* PAM事务的结束 */

实例2. SDDM中的代码

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

代码如下:

    bool PamHandle::closeSession() {m_result = pam_close_session(m_handle, m_silent);if (m_result != PAM_SUCCESS) {qWarning() << "[PAM] closeSession:" << pam_strerror(m_handle, m_result);}return m_result == PAM_SUCCESS;}

更多函数请看后续文章。

更多推荐

PAM从入门到精通(十三)

本文发布于:2023-12-07 12:55:59,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1671256.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:入门   PAM

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!