JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris 11 开发者安全性指南     Oracle Solaris 11.1 Information Library (简体中文)
为本文档评分
search filter icon
search icon

文档信息

前言

1.  面向开发者的 Oracle Solaris 安全(概述)

2.  开发特权应用程序

3.  编写 PAM 应用程序和服务

PAM 框架介绍

PAM 服务模块

此发行版中对 PAM 模块的更改

PAM 库

PAM 验证过程

PAM 使用者的要求

PAM 配置

通过 /etc/pam.d 配置 PAM

编写使用 PAM 服务的应用程序

简单 PAM 使用者示例

其他有用的 PAM 函数

编写对话函数

编写提供 PAM 服务的模块

PAM 服务提供者要求

PAM 提供者服务模块样例

4.  编写使用 GSS-API 的应用程序

5.  GSS-API 客户机示例

6.  GSS-API 服务器示例

7.  编写使用 SASL 的应用程序

8.  Oracle Solaris 加密框架介绍

9.  编写用户级加密应用程序

10.  Oracle Solaris 密钥管理框架介绍

A.  适用于开发者的安全编码准则

B.  基于 C 的 GSS-API 样例程序

C.  GSS-API 参考信息

D.  指定 OID

E.  SASL 示例的源代码

F.  SASL 参考信息表

词汇表

索引

请告诉我们如何提高我们的文档:
过于简略
不易阅读或难以理解
重要信息缺失
错误的内容
需要翻译的版本
其他
Your rating has been updated
感谢您的反馈!

您的反馈将非常有助于我们提供更好的文档。 您是否愿意参与我们的内容改进并提供进一步的意见?

PAM 框架介绍

PAM 框架由四个部分组成:

该框架为与验证相关的活动提供了统一的执行方式。采用该方式,应用程序开发者不必了解策略的语义即可使用 PAM 服务。算法是集中提供的。可以独立于各个应用程序对算法进行修改。借助 PAM,管理员可以根据特定系统的需要调整验证过程,而不必更改任何应用程序。通过 pam.conf、PAM 配置文件或 /etc/pam.d 文件进行调整,这些文件均可从 Oracle Solaris 11.1 发行版以及更高发行版中获得。

下图说明了 PAM 体系结构。应用程序通过 PAM 应用编程接口 (application programming interface, API) 与 PAM 库进行通信。PAM 模块通过 PAM 服务提供者接口 (service provider interface, SPI) 与 PAM 库进行通信。通过这种方式,PAM 库可使应用程序和模块相互进行通信。

图 3-1 PAM 体系结构

image:图中显示了应用程序和 PAM 服务模块如何访问 PAM 库。

PAM 服务模块

PAM 服务模块是一个共享库,用于为系统登录应用程序(如 loginrlogintelnet 提供验证和其他安全服务。

PAM 服务的四种类型是:

PAM 模块可以实现其中的一项或多项服务。将简单模块用于明确定义的任务可以增加配置灵活性。因此,应该在不同的模块中实现 PAM 服务。然后,可以根据需要按照 PAM 配置中的定义使用这些服务。请参见 pam.conf(4)

例如,Oracle Solaris OS 为系统管理员提供了用于配置站点口令策略的 pam_authtok_check(5) 模块。pam_authtok_check(5) 模块可以检查符合各种强度条件的建议口令。

有关 Oracle Solaris PAM 模块的完整列表,请参见手册页第 5 节:标准、环境与宏。PAM 模块的前缀为 pam_

此发行版中对 PAM 模块的更改

Oracle Solaris 11.1 发行版提供了新的 PAM 模块 pam_user_policy(5),该模块添加了对每用户 PAM 配置的支持。该模块调用 pam_eval(3PAM) 函数评估指定的 PAM 配置。PAM 库 libpam(3LIB) 中的 pam_eval() 例程也是 Oracle Solaris 11.1 中新增的例程。

PAM 库

PAM 库 libpam(3LIB) 是 PAM 体系结构中的中心元素:

PAM 验证过程

以使用者如何使用 PAM 库进行用户验证为例,请考虑 login 如何验证用户:

  1. login 应用程序通过调用 pam_start(3PAM) 并指定 login 服务来启动 PAM 会话。

  2. 该应用程序将调用 pam_authenticate(3PAM),它是 PAM 库 libpam(3LIB) 导出的 PAM API 的一部分。

  3. PAM 库在 PAM 配置中搜索与验证 (auth) 服务模块类型对应的 login 条目。

  4. 对于 pam.conf 中为 login 服务配置的每个模块,PAM 库将调用 pam_sm_authenticate(3PAM)pam_sm_authenticate() 函数是 PAM SPI 的一部分。pam.conf 控制标志和每个调用的结果将确定是否允许用户访问系统。在《Oracle Solaris 11.1 管理:安全服务》中的"PAM 配置(参考信息)"中详细介绍了该过程。

通过此方式,PAM 库可以将 PAM 应用程序与系统管理员已配置的 PAM 模块连接起来。

PAM 使用者的要求

PAM 使用者必须与 PAM 库 libpam 链接。应用程序使用模块提供的任何服务之前,必须通过调用 pam_start(3PAM) 初始化其 PAM 库的实例。调用 pam_start() 可初始化必须传递给所有后续 PAM 调用的句柄。应用程序完成使用 PAM 服务后,系统将调用 pam_end() 以清除 PAM 库已使用的任何数据。

PAM 应用程序与 PAM 模块之间的通信是通过进行的。例如,以下各项有助于进行初始化:

有关可用项的完整列表,请参见 pam_set_item(3PAM)。应用程序可以通过 pam_set_item(3PAM) 对项进行设置。应用程序可以通过 pam_get_item(3PAM) 检索模块已设置的值。但是,应用程序不能检索 PAM_AUTHTOK 和 PAM_OLDAUTHTOK。无法设置 PAM_SERVICE 项。


注 - PAM 使用者必须拥有唯一的 PAM 服务名,该名称传递到 pam_start(3PAM)