第 6 章移植旧版应用程序

PAM 的要点是,应用程序不应该知道附加的身份验证模块将如何选择对用户进行身份验证。因此,他们所能做的就是提供一个对话功能,它将代表模块直接与用户(Client 端)对话。

考虑将视网膜扫描仪插入登录程序的情况。在这种情况下,将提示用户:“请看一下扫描仪”。无需用户名或密码-所有这些信息都可以从扫描和数据库查找中得出。关键是视网膜扫描仪是“模块”的理想任务。

虽然确实设计了一个 POP 守护程序程序时要考虑到 POP 协议,而且从来没有人考虑过将视网膜扫描仪附加到该程序上,但这种守护程序的“干净” PAM 化也允许这种情况以便将扫描仪模块连接到它。关键是通过插入适当的 pam_qpopper 模块,可以支持“标准” pop-authentication 协议(满足不灵活的/旧式 Client 端所需)。但是,以这种方式重写 popd 一次后,任何新协议都可以就地实现。

对移植的应用程序的一个简单测试是插入 pam_permit 模块,并查看该应用程序是否要求您 Importing 密码...在这种情况下, xlock 将无法锁定终端-否则会最多只能是一个屏幕保护程序,ftp 可以使所有用户免密码访问。等等,这都不是很安全的事情,但是它们确实说明了 PAM 赋予本地 Management 员多少灵 Active。

正确执行操作的关键问题是识别身份验证过程的组成部分(多少个密码等.)交换协议(提示的前缀等,在 ftpd 中为 331 等数字)以及什么是身份验证过程的一部分。应用程序提供的服务。 PAM 确实需要对身份验证“过程”进行完全控制,对话功能应只处理重新格式化用户提示并从原始 Importing 中提取响应。