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 ~]$
这些仅是一些例子。
原来的来源