可插入认证模块

可插入认证模块(PAM)框架使系统管理员能够通过可插入模块将多个认证机制合并到现有系统。

支持使用 PAM 的应用程序能够不更改现有的应用程序就 插入到新的技术中。 这种灵活性允许管理员执行以下操作:

  • 为应用程序选择系统中的任意认证服务
  • 对给定的服务使用多个认证机制
  • 不修改现有的应用程序而添加新的认证服务模块
  • 使用以前输入的密码来用于多模块认证

PAM 结构由库、可插入模块以及配置文件组成。 PAM 库实现 PAM 应用程序编程接口 (API) ,并用于管理 PAM 事务和调用在可插拔模块中定义的 PAM 服务编程接口 (SPI)。 可插拔模块由库根据调用服务及其在配置文件中的条目动态装入。 成功不但取决于可插入模块,也取决于为服务所定义的行为。 通过堆栈的概念,可以将服务配置为通过多个认证方法认证。 如果得到支持,那么模块也可配置为使用先前提交的密码,而不是提示另外输入。

系统管理员可以通过修改/etc/security/login.cfg文件 usw stanza 中的 "auth_type属性来配置AIX系统使用 PAM。 设置 auth_type = PAM_AUTH 将配置支持 PAM 的命令,以直接调用 PAM API 进行认证,而不是使用历史 AIX 认证例程。 此配置为运行时决策,不需要重新引导系统以生效。 要获取关于 auth_type 属性的更多信息,请参阅 /etc/security/login.cfg 文件参考。 已修改以下本机 AIX 命令和应用程序以识别 auth_type 属性并启用 PAM 认证:
  • login
  • passwd
  • su
  • ftp
  • telnet
  • rlogin
  • rexec
  • rsh
  • snappd
  • imapd
  • dtaction
  • dtlogin
  • dtsession

下图显示了在已配置为使用 PAM 的系统上,支持 PAM 的应用程序、PAM 库、配置文件和 PAM 模块之间的交互。 PAM 支持的应用程序调用 PAM 库中的 PAM API。 库根据配置文件中的应用程序项确定装入适当的模块,并调用在该模块中的 PAM SPI。 通过使用应用程序中实现的对话功能在 PAM 模块和应用程序之间进行通信。 然后,模块的成功或失败与配置文件中定义的行为确定是否需要装入另一个模块。 如果是,进程继续;否则,会将结果发送回应用程序。

图 1。 PAM 框架和实体。 本图显示了支持 PAM 的命令如何使用 PAM 库来访问相应的 PAM 模块。