PAM(Pluggable Authentication Modules )是Linux提供的一种通用的认证方式,他可以根据需要动态的加载认证模块,从而减少认证开发的工作量以及提供认证的灵活度。
1.PAM的框架
PAM的框架由一下几个部分构成
1)应用程序,即需要使用认证服务的程序,这些应用程序是使用抽象出的统一的PAM API接口,来调用PAM服务,完成认证请求。
2)PAM库,实现PAM API,并读取PAM配置文件pam.conf,然后根据配置文件中定义,通过PAM服务的统一接口完成对PAM服务模块的调用。
3)PAM配置文件,该文件描述了不同的认证请求所需使用的认证方式以及提供该认证所需的PAM服务模块。
4)PAM服务模块,提供了具体认证逻辑的实现。
通过这种方式,应用程序与底层的认证逻辑实现进行了解耦,而且PAM API与PAM SPI是两套通用的接口定义,从而简化了认证的开发,系统管理员也可以通过修改PAM配置文件,在不重新编程的情况下,完成对认证服务的调整。
2.PAM服务模块
作为PAM的核心,PAM服务模块以动态链接库的形式呈现,是真正实现认证服务的模块,而通常其可以提供以下几类服务:
1)auth:主要用于验证服务:检查用户和密码,识别用户的身份,确认用户的合法性,赋予用户权限。。
2)ac