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

max*_*max 4 linux authentication centos-6

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

我正在使用 CentOS 6.2。

bah*_*mat 7

简而言之,PAMPluggable Authentication Modules

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

因为 PAM 是可插拔的,所以您可以随意配置身份验证堆栈。针对 LDAP、NIS、RADIUS、MySQL、Oracle、BerkelyDB、SQLite、RSA 令牌、x509 证书、平面文件、一次性密码、谷歌双因素、月相等进行身份验证都可以任意组合配置。

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

PAM 是认证瑞士军刀,为任何应用程序以任何必要的方式定制认证提供了无限的灵活性。

没有它,每个程序都必须独立支持所有这些功能,这确实是一个悲伤的世界。


小智 6

也许这个概述给了你所有你想知道的或者一个好的开始: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 ]
                         +--------------+
Run Code Online (Sandbox Code Playgroud)

  • PAM 不是一个正在运行的守护进程,而是任何守护进程在想要验证连接时都可以进行的一系列库调用。 (2认同)

max*_*max 5

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

笔记

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

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

3.正确阅读PAM语法。

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

允许任何用户在没有密码的情况下 su 到 root。

为此,编辑文件 /etc/pam.d/su 并注释掉与 auth 堆栈相关的所有行,将它们替换为单行:

验证足够的 pam_permit.so

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

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

禁用直接 root 登录

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

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

需要身份验证 pam_securetty.so

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

tty1
#tty2
#tty3
tty4
tty5

如果您评论 #tty2 和 #tty3,那么从虚拟终端 tty2 和 tty3 就不可能以 root 直接登录。

防止非root用户关闭系统

以halt命令的PAM配置为例,编辑/etc/pam.d/halt文件。像这样

验证足够的 pam_rootok.so

需要身份验证 pam_deny.so

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

[test2@avi ~]$ 停止
停止:需要root
[test2@avi ~]$

这些只是一些示例。

原始来源

  • 看起来您是从 [this site](http://www.tuxradar.com/content/how-pam-works) 复制粘贴了此答案的全部内容。除非您有权复制网站所有者提供给您的内容,否则这基本上是抄袭。你能用自己的话重新表述你的答案,或者至少正确地引用所有不是你自己写的东西吗?谢谢你。 (3认同)