可插拔认证模块,将低层认证方案集成到高层接口中,为操作系统的应用及服务提供认证支持,而需要关注低层认证方案。简单地说,如果你的应用程序想要使用系统帐号登录,不需要自己解析 passwd 和 shadow 文件,使用 PAM 模块即可。
Linux Pluggable Authentication Modules
从 Unix Pluggable Authentication Modules 架构中演变而来。它将身份验证任务分为四个独立的管理组:
(2)Authentication Module,认证模块:由于验证密码或其他密钥。该模块也肯能将认证信息传递给其他系统,比如 keyring 服务。
(3)Password Module,密码模块:负责更新密码,通常耦合到认证步骤中使用。也被用于强制使用强密码。
(4)Session Module,会话模块:定义会话在开始与结束时执行的动作。会话开始与用户成功认证后。
该四个模块与 pam.conf(5) 手册所属的 type 属性对应。
注意事项
1)调整 PAM 会改变系统的安全性。
2)错误的配置将导致系统部分功能无法访问,或者全部无法访问。请做好回滚准备,比如备份原文件。
3)无需过多关心 PAM 内部细节,要更多关注配置文件如何定义应用与PAM之间执行认证任务的连接。
配置实例(谨慎参考)
错误配置可能导致系统认证不可用,请谨慎参考本部分内容,这只在我们自身环境中测试通过。请参考官方文档或手册获取准确内容。
检查应用程序是否使用 PAM 认证
我们希望使用 su root 命令时无需输入密码,则先检查 su 是否集成 PAM 认证:
# ldd $(which su) | grep libpam.so libpam.so.0 => /lib/x86_64-linux-gnu/libpam.so.0 (0x00007ff1da47c000)
从输出中可以看出 su 命令使用 PAM 库,所以我们可以说 su 支持 PAM 认证。
配置文件的语法格式
第一步,阅读 How to Configure and Use PAM in Linux 文章,有个初步认识。
第二步,在 Debian 中,请参考 man 5 pam.d 或 man 5 pam.conf 手册。
参考文献
Wikipedia/Linux PAM
Wikipedia/Pluggable authentication module
What is PAM?
How to Configure and Use PAM in Linux
archlinux/PAM