Linux 中的 PAM(可插入身份验证模块)是什么?

Linux 中的 PAM(可插入身份验证模块)是什么?

Linux 中的 PAM(可插入式身份验证模块)是什么?我知道它用于身份验证,但它有什么用呢?它是如何工作的?

我正在使用 CentOS 6.2。

答案1

简而言之,聚丙烯酰胺可插入身份验证模块

顾名思义,它使用插件式架构。PAM 使得每个程序不必实现自己的身份验证机制。相反,它只需检查 PAM 堆栈。

由于 PAM 是可插入的,因此您可以按照自己的喜好配置身份验证堆栈。可以以任意组合配置针对 LDAP、NIS、RADIUS、MySQL、Oracle、BerkelyDB、SQLite、RSA 令牌、x509 证书、平面文件、一次性密码、Google 双因素、月相等的身份验证。

当堆栈激活、失败或成功时,PAM 还可以触发挂载文件系统、创建目录、日志记录或任​​何其他操作。

PAM 是身份验证的瑞士军刀,具有无限的灵活性,可以根据任何应用程序需要以任何方式定制身份验证。

如果没有它,每个程序都必须独立支持所有这些功能,那将是一个悲哀的世界。

答案2

也许这个概述可以为你提供所有你想知道的信息,或者为你提供更多信息的良好开端:http://www.linux-pam.org/Linux-PAM-html/sag-overview.html

一些引言:

Linux-PAM 处理四种不同类型的(管理)任务。它们是:身份验证管理、帐户管理、会话管理和密码管理。

    Here is a figure that describes the overall organization of 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 ]
                         +--------------+

答案3

PAM 是一个框架,可帮助应用程序执行我称之为“身份验证相关活动”的操作。PAM 的核心部分是一个库 (libpam) 和一组 PAM 模块,这些模块是文件夹 /lib/security 中的动态链接库 (.so) 文件。

笔记

1. 在任何修改之前备份所有数据和 PAM 配置文件。

2.请小心执行配置选项。错误的配置可能会锁定所有登录访问权限,包括 root 访问权限。

3.正确阅读PAM语法。

下面是一些示例,尝试时要小心。

允许任何用户无需密码即可通过 su 变为 root。

为此,编辑文件 /etc/pam.d/su 并注释掉与身份验证堆栈相关的任何行,并用单行替换它们:

授权足够的 pam_permit.so

要测试此操作,请以普通用户身份登录并验证您现在可以使用 su - 成为 root 而无需提供密码。

[raj@avi ~]$ su -
[root@avi ~]#

禁用直接 root 登录

笔记: 在执行此操作之前,请确保您至少有一个可以使用 su 成为 root 的帐户,否则您将被锁定在机器之外。

要禁用虚拟终端上的 root 登录,请编辑文件 /etc/pam/d/login 并添加条目。

身份验证需要 pam_securetty.so

该模块将阻止未在 /etc/securetty 中列出的终端设备上的 root 登录。

终端1
#tty2
#tty3
tty4
终端5

如果您对#tty2 和#tty3 进行评论,那么从虚拟终端 tty2 和 tty3 就无法直接以 root 身份登录。

防止非root用户关闭系统

以 halt 命令的 PAM 配置为例,编辑文件 /etc/pam.d/halt。如下所示

身份验证充分 pam_rootok.so

身份验证需要 pam_deny.so

以普通用户身份测试此登录并尝试 halt 命令,那么您将收到以下错误。

[test2@avi ~]$ 停止
halt:需要 root 权限
[测试2@avi ~]$

这些仅是一些例子。

原来的来源

相关内容