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

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

ID:1537931

大小:94.50 KB

页数:9页

时间:2017-11-12

pam 的应用开发和内部实现源码分析_第1页
pam 的应用开发和内部实现源码分析_第2页
pam 的应用开发和内部实现源码分析_第3页
pam 的应用开发和内部实现源码分析_第4页
pam 的应用开发和内部实现源码分析_第5页
资源描述:

《pam 的应用开发和内部实现源码分析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、PAM的应用开发和内部实现源码分析本文主要通过对LinuxPAM源代码进行分析,阐述了PAM的内部实现机制和怎样在应用程序中应用PAM进行认证,以及怎样开发PAM服务模块。1引言身份认证是操作系统安全的重要机制之一,系统通过认证机制核查用户的身份证明,并作为用户进入系统的判定条件,是防止恶意用户进入系统的第一道门槛。近年来认证理论和技术得到了迅速发展,产生了各种认证机制,如口令机制,RSA,DCE,kerberos认证体制,S/Key和基于智能卡的身份认证等。然而,当系统中引入新的认证机制时,一些系统入口登录服务如login,rlogin和telnet等应用程序就必须改写以适应新

2、的认证机制。为了解决这个问题,1995年Sun公司的VipinSamar和CharlieLai提出了PAM(PluggableAuthenticationModules),并将其应用在Solaris系统上。PAM框架将应用程序与具体的认证机制分离,使得系统改变认证机制时,不再需要修改采用认证机制的应用程序,而只要由管理员配置应用程序的认证服务模块,极大地提高了认证机制的通用性与灵活性。各种版本操作系统pam实现原理一样,下面从PAM的应用开发开始介绍。2PAM的应用开发2.1PAM框架概览PAM即可插拔认证模块。它提供了对所有服务进行认证的中央机制,适用于login,远程登录(t

3、elnet,rlogin,fsh,ftp,点对点协议(PPP)),su等应用程序中。系统管理员通过PAM配置文件来制定不同应用程序的不同认证策略;应用程序开发者通过在服务程序中使用PAMAPI(pam_xxxx())来实现对认证方法的调用;而PAM服务模块的开发者则利用PAMSPI来编写模块(主要是引出一些函数pam_sm_xxxx()供PAM接口库调用),将不同的认证机制加入到系统中;PAM接口库(libpam)则读取配置文件,将应用程序和相应的PAM服务模块联系起来。PAM框架结构如图所示。图PAM框架结构图其中,pamh是一个pam_handle类型的结构,它是一个非常重要

4、的处理句柄,是PAM与应用程序通信的唯一数据结构,也是调用PAM接口库API的唯一句柄。pam_handle数据结构将在下面的源代码分析一节的介绍。另外,如上图所示的服务模块分auth(认证管理)、account(账号管理)、session(会话管理)、passwd(口令管理)四种类型,各个类型模块的作用以及配置文件的四个组成部分模块类型、控制标志、模块路径、模块参数等在很多讲PAM的配置管理的文章里都有介绍,这里就不再赘述了。2.2在应用程序中使用PAM认证每个使用PAM认证的应用程序都以pam_start开始,pam_end结束。PAM还提供了pam_get_item和pam

5、_set_item共享有关认证会话的某些公共信息,例如用户名,服务名,密码和会话函数。应用程序在调用了pam_start()后也能够用这些APIs来改变状态信息。实际做认证工作的API函数有六个(以下将这六个函数简称为认证API):·认证管理--包括pam_authenticate()函数认证用户,pam_setcred()设置,刷新,或销毁用户证书。·账号管理--包括pam_acc_mgmt()检查认证的用户是否可以访问他们的账户,该函数可以实现口令有效期,访问时间限制等。·会话管理--包括pam_open_session()和pam_close_session()函数用来管理

6、会话和记账。例如,系统可以存储会话的全部时间。·口令管理--包括pam_chauthok()函数用来改变密码。下面看一个简单的login模拟程序:/*使用PAM所必需的两个头文件*/#include#includevoidmain(intargc,char*argv[],char**renvp){/*初始化,并提供一个回调函数*/if((pam_start("login",user_name,&pam_conv,&pamh))!=PAM_SUCCESS)exit(1);/*设置一些关于认证用户信息

7、的参数*/pam_set_item(pamh,PAM_TTY,ttyn);pam_set_item(pamh,PAM_RHOST,remote_host);while(!authenticated&&retry

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。