我正在编写自己的PAM模块,该模块将成为我正在开发的应用程序的一部分,但是我不确定确切的位置。我的模块基本上执行类似于LDAP的网络级身份验证(当然还有其他mojo)。
我的/etc/pam.d/
目录中有很多配置文件,我知道大多数服务都可以做什么(除了一对,例如atd,polkit,ppp)。我假设使用PAM堆栈进行身份验证的过程如下:
- 根据服务名称运行堆栈(如果存在配置文件)
- 如果未通过身份验证,则退回到common- *,其中*是模块类型(身份验证,帐户等)
- 返回成功或失败调用应用程序(当然还有其他任何数据)
我对这个假设是否正确? 所有平台都具有通用身份验证,通用帐户,通用密码和通用会话吗?
如果是这样,我正在考虑将其作为sufficient
模块放在common- *的顶部,这样在发生故障时,常规PAM堆栈将不受影响。这是特别有利的,因为我可以在软件安装时以编程方式执行此操作。
我是否缺少任何潜在的安全漏洞?
我找不到关于在哪里集成自定义PAM模块或围绕放置模块的安全问题的很好的文档。