第三章概述

对于 Starters,我们首先考虑一个示例。我们采用向用户授予某些服务的应用程序; 登录 就是这样一种程序。 Login 做两件事,首先是确定发出请求的用户是他们声称的身份,其次是向他们提供所请求的服务:如果是 login ,则该服务是命令 Shell 程序(bash,tcsh ,zsh 等),并以用户身份运行。

传统上,前一步是通过“登录”应用程序提示用户 Importing 密码,然后验证其是否与系统上的密码一致来实现的;因此,就系统而言,验证用户就是他们声称的身份。这是委派给* Linux-PAM *的任务。

从应用程序程序员(在本例中为编写“登录”应用程序的人)的角度来看,* Linux-PAM *负责此身份验证任务-验证用户的身份。

Linux-PAM 的灵 Active 是系统 Management 员 you 可以自由规定要使用哪种身份验证方案。您可以为 Linux 系统上的任何/所有支持 PAM 的应用程序设置方案。也就是说,您可以从诸如简单信任( pam_permit )这样天真的事物到像视网膜扫描,语音打印和一次性密码的组合这样的偏执事物进行认证!

为了说明您所面临的灵 Active,请考虑以下情况:系统 Management 员(parent)希望提高其用户(孩子)的 math 能力。她可以配置他们最喜欢的“射击游戏”(当然是 PAM 感知),通过请求几个小于 12 的随机数的乘积来对他们进行身份验证。很明显,如果游戏很不错,他们很快就会学习他们的乘法表。随着它们的成熟,可以将认证升级为包括(长)划分!

  • Linux-PAM 处理四种类型的(Management)任务。它们是:认证 Management帐户 Management ; 会话 Management;和密码 Management*。首选 Management 方案与应用程序行为的关联是通过相关* Linux-PAM *配置文件中的条目进行的。Management 功能由配置文件中指定的“模块”执行。 below部分中讨论了该文件的语法。

下图描述了* Linux-PAM *的整体组织:

+----------------+
  | application: X |
  +----------------+       /  +----------+     +================+
  | authentication-[---->--\--] Linux-   |--<--| PAM config file|
  |       +        [----<--/--]   PAM    |     |================|
  |[conversation()][--+    \  |          |     | X auth .. a.so |
  +----------------+  |    /  +-n--n-----+     | X auth .. b.so |
  |                |  |       __|  |           |           _____/
  |  service user  |  A      |     |           |____,-----'
  |                |  |      V     A
  +----------------+  +------|-----|---------+ -----+------+
                         +---u-----u----+    |      |      |
                         |   auth....   |--[ a ]--[ b ]--[ c ]
                         +--------------+
                         |   acct....   |--[ b ]--[ d ]
                         +--------------+
                         |   password   |--[ b ]--[ c ]
                         +--------------+
                         |   session    |--[ e ]--[ c ]
                         +--------------+

作为说明,图的左侧代表应用程序;应用程序 X。此类应用程序与* Linux-PAM *库连接,并且不了解其配置的身份验证方法的具体细节。 * Linux-PAM 库(位于中心)查询 PAM 配置文件的内容,并加载适用于 application-X 的模块。这些模块属于四个 Management 组之一(下部中央),并按照它们在配置文件中出现的 Sequences 堆叠。这些模块由 Linux-PAM *调用时,将为应用程序执行各种身份验证任务。可以通过使用应用程序提供的“对话”功能来交换从用户提供或向用户提供的文本信息。

如果程序要使用 PAM,则必须将 PAM 功能显式编码到程序中。如果您有权访问源代码,则可以添加适当的 PAM 功能。如果您无权访问源代码,并且二进制文件不包含 PAM 功能,则无法使用 PAM。