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 接口库调用),将不同的认证机制加
入到系统中;PAM 接口库(libpam)则读取配置文件,将应用程序和相应的
PAM 服务模块联系起来。PAM 框架结构如图所示。
评论2