当前位置: 首页 > news >正文

角门网站建设wordpress博客添加ico图标

角门网站建设,wordpress博客添加ico图标,视频拍摄剪辑岗位职责及要求,企业网站设计解决方案接前一篇文章:PAM从入门到精通(十八) 本文参考: 《The Linux-PAM Application Developers Guide》 PAM 的应用开发和内部实现源码分析 先再来重温一下PAM系统架构: 更加形象的形式: 六、整体流程示例 2.…

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

本文参考:

《The Linux-PAM Application Developers' Guide》

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

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

更加形象的形式:

六、整体流程示例

2. 更为完整的例程及解析

上一回讲解了更为详细复杂例程的第二部分,本文继续讲解其余部分。再来贴一下完整代码:

/* 使用PAM所必需的两个头文件*/
#include <security/pam_appl.h>
#include <security/pam_misc.h>static struct pam_conv conv = {misc_conv,NULL
}void main(int argc, char *argv[], char **renvp)
{pam_handle_t *pamh = NULL;int status;/* 初始化,并提供一个回调函数 */if ((pam_start("login", user_name, &conv, &pamh)) != PAM_SUCCESS)exit(1);/* 设置一些关于认证用户信息的参数 */pam_set_item(pamh, PAM_TTY, ttyn);pam_set_item(pamh, PAM_RHOST, remote_host);while (!authenticated && retry < MAX_RETRIES){status = pam_authenticate(pamh, 0);/* 认证,检查用户输入的密码是否正确 */}/* 认证失败则应用程序退出*/if (status != PAM_SUCCESS){……exit(1);}/*  通过了密码认证之后再调用帐号管理API,检查用户帐号是否已经过期 */if ((status = pam_acct_mgmt(pamh, 0)) != PAM_SUCCESS){if (status == PAM_AUTHTOK_EXPIRED){status = pam_chauthtok(pamh, 0);  /* 过期则要求用户更改密码 */if (status != PAM_SUCCESS)exit(1);}}/* 通过帐户管理检查之后则打开会话 */if (status = pam_open_session(pamh, 0) != PAM_SUCCESS)exit(status);……/* 建立认证服务的用户证书*/status = pam_setcred(pamh, PAM_ESTABLISH_CRED);if (status != PAM_SUCCESS)exit(status);……pam_end(pamh, PAM_SUCCESS);  /* PAM事务的结束 */……}

(6)pam_open_session函数

代码片段:

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

作用:

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

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

参数详解:

  • pam_handle_t *pamh

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

此处传给pamh的实参为main函数中定义的pam_handle_t *pamh的地址&pamh。

  • int flags

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

PAM_SILENT

不发出任何消息。

此处传给flags的实参为0。

(7)pam_setcred函数

代码片段:

    /* 建立认证服务的用户证书*/status = pam_setcred(pamh, PAM_ESTABLISH_CRED);if (status != PAM_SUCCESS)exit(status);

作用:

设置用户凭证。pam_setcred函数用于建立、维护和删除用户的资格(凭据)。在对用户进行身份验证之后,在为用户打开会话之前(使用pam_open_session()),应该调用它来设置凭据。应在会话关闭后删除凭据(使用pam_close_session())。

凭据(credential)是用户所拥有的东西。它是一些属性,如Kerberos票证或者构成给定用户的唯一性的补附加组成员资格。在Linux系统上,用户的UID和GID也是凭据。但是,已经决定这些属性(以及用户所属的默认补充组)是应由应用程序而不是PAM直接设置的凭据。应用程序应在调用此函数之前建立此类凭据。例如,initgroups()(或等效操作)应该(已)被执行。

参数详解:

  • pam_handle_t *pamh

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

此处传给pamh的实参为main函数中定义的pam_handle_t *pamh的地址&pamh。

  • int flags

有效标志,其中任何一个可以与PAM_SILENT进行逻辑“或”运算,它们是:

PAM_ESTABLISH_CRED

初始化用户的凭据。

PAM_DELETE_CRED

删除用户的凭据。

PAM_REINITIALIZE_CRED

完全重新初始化用户凭据。

PAM_REFRESH_CRED

延长现有凭据的生命期(使用期限)。

此处传给flags的实参为PAM_ESTABLISH_CRED。

至此,代码流程中的所有函数就全部解析完了。

http://www.yayakq.cn/news/357745/

相关文章:

  • 珠海市研发网站建设免费源码分享
  • 广州手机网站建设联系电话响应式网站切图
  • 做网站书籍北京注册建设公司网站
  • 东营两学一做网站人力资源外包服务包括哪些
  • 外企网站建设公司排名芜湖的网站建设
  • 漳州做网站制作哈尔滨建设网站成本
  • 贴心的网站优化公司网站建设基本要素
  • 网站开发确认表遥阳科技网站建设
  • 商业网站建设wordpress开发服务器配置
  • 做网站三河网站品牌词如何优化
  • 自建团体电子商务网站建设成本广州市场调研公司
  • 太原网站建设公司专业的家居网站建设
  • 为何网站建设公司报价不同响应式学校网站模板
  • 如何做网站专题欧洲网站后缀
  • 注册了域名之后怎么做网站口碑好的定制网站建设服务商
  • 桂林做网站的公司有哪些广告网站建设与制作公司
  • 公司网站备案网址室内设计师联盟账号
  • 手机网站 数据库做电影网站都需要什么工具
  • 做网站用tomcat福田网站建设效果
  • 电商网站排行那些网站可以做h5
  • 线上广告平台昆明seo工资
  • 国外一直小猫做图标的网站环境影响评价工程师
  • 网站优化提升排名杭州网站建设 巴零
  • 安徽做网站电话小程序咸鱼之王
  • 广东监理建设协会网站网站建设设计广州
  • 怎样创建音乐网站wordpress 多重分类
  • 学建站wordpress家装网站建设
  • 网站建设最好android直播app开发
  • 学校网站开发程序wordpress 不显示时间
  • 国外网站国内备案wordpress图集主题