PAM 的应用开发和内部实现源码分析 本文主要通过对Linux PAM源代码进行分析,阐述了PAM的内部实现机制和怎样在应用程序中应用PAM进行认证,以及怎样开发PAM服务模块
1 引言 身份认证是操作系统安全的重要机制之一,系统通过认证机制核查用户的身份证明,并作为用户进入系统的判定条件,是防止恶意用户进入系统的第一道门槛
近年来认证理论和技术得到了迅速发展,产生了各种认证机制,如口令机制,RSA, DCE, kerberos认证体制,S/Key和基于智能卡的身份认证等
然而,当系统中引入新的认证机制时,一些系统入口登录服务如 login, rlogin和telnet等应用程序就必须改写以适应新的认证机制
为了解决这个问题,1995年 Sun公司的Vipin Samar和 Charlie Lai提出了PAM(Pluggable Authentication Modules),并将其应用在Solaris系统上
PAM框架将应用程序与具体的认证机制分离,使得系统改变认证机制时,不再需要修改采用认证机制的应用程序,而只要由管理员配置应用程序的认证服务模块,极大地提高了认证机制的通用性与灵活性
各种版本操作系统 pam实现原理一样,下面从 PAM的应用开发开始介绍
2 PAM的应用开发 2
1 PAM框架概览 PAM即可插拔认证模块
它提供了对所有服务进行认证的中央机制,适用于login,远程登录(telnet,rlogin,fsh,ftp,点对点协议(PPP)),su等应用程序中
系统管理员通过PAM配置文件来制定不同应用程序的不同认证策略;应用程序开发者通过在服务程序中使用PAM API(pam_xxxx( ))来实现对认证方法的调用;而 PAM服务模块的开发者则利用PAM SPI来编写模块(主要是引出一些函数 pam_sm_xxxx( )供 PAM接口库调用),将不同的