第 10 章 使用 SSSD 限制 PAM 服务的域
可插拔验证模块(PAM)是身份验证和授权的通用框架。Red Hat Enterprise Linux 中的大多数系统应用程序依赖于底层 PAM 配置进行身份验证和授权。
系统安全服务守护进程 (SSSD) 可让您限制 PAM 服务可以访问哪些域。SSSD 根据运行特定 PAM 服务的用户评估来自 PAM 服务的身份验证请求。这意味着,如果 PAM 服务用户可以访问 SSSD 域,PAM 服务也可以访问该域。
10.1. PAM 简介 复制链接链接已复制到粘贴板!
可插拔验证模块 (PAM) 提供集中式身份验证机制,系统应用可以使用此机制将身份验证中继到集中配置的框架。
PAM 可插拔,因为存在用于不同类型身份验证源(如 Kerberos、SSSD、NIS 或本地文件系统)的 PAM 模块。您可以对不同的身份验证源进行优先排序。
此模块化架构为管理员提供了很大的灵活性来为系统设置身份验证策略。PAM 对开发人员和管理员而言是有用的系统,原因如下:
- PAM 提供一种常见身份验证方案,可用于各种应用。
- PAM 为系统管理员提供了对身份验证的显著灵活性和控制力。
- PAM 提供单个全文档库,使开发人员无需创建自己的身份验证方案即可编写程序。
10.1.1. PAM 配置文件格式 复制链接链接已复制到粘贴板!
每个可插拔验证模块(PAM)配置文件都由定义特定模块的设置的指令组成。PAM 在某些模块的身份验证过程中使用参数将信息传递给可插拔模块。
module_type control_flag <module_name> <module_arguments>
module_type control_flag <module_name> <module_arguments>
例如:
auth required pam_unix.so
auth required pam_unix.so
10.1.1.1. PAM 模块类型 复制链接链接已复制到粘贴板!
PAM 模块类型指定模块执行的身份验证任务的类型。模块可以执行以下任务:
- 帐户管理
- 身份验证管理
- 密码管理
- 会话管理
单个模块可以提供任何或所有类型的身份验证任务。例如,pam_unix.so 提供所有四个身份验证任务。
模块名称,如 pam_unix.so ,为 PAM 提供包含指定模块类型的库的名称。目录名称被忽略,因为应用程序链接到 libpam 的合适版本,这样可找到模块的正确版本。
模块类型指令可以被堆栈或放在另一个模块之上,以便将多个模块一起用于一个目的。模块的顺序以及控制标记非常重要,它决定了特定模块的成功或失败对于向服务验证用户的整体目标是多么重要。
您可以堆栈 PAM 模块,以强制在允许用户进行身份验证前必须满足的特定条件。
10.1.1.2. PAM 控制标志 复制链接链接已复制到粘贴板!
当 PAM 模块执行其功能时,它返回一个成功或失败结果。控制标志指示 PAM 如何处理此结果。
简单标记使用关键字,更复杂的语法遵循 [<value1>=<action1> <value2>=<action2> …] 格式。
当模块的控制标志使用 sufficient 或 requisite 值时,列出的模块的顺序对身份验证过程非常重要。
有关 PAM 控制标志的详细描述,包括选项的列表,请查看 pam.conf (5) 手册页。