第三章概述
对于 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。