Linux-PAM

  Linux-PAM(Pluggable Authentication Modules).是由Sun 提出的一种认证机制.它通过提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分开,使得系统管理员可以灵活
地根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时也便于向系统中添加新的认证手段.

  pam 主要是由一组共享库文件(share libraries, 也就是.so 文件)和一些配置文件组成的。当你在请求服务的时候,具有pam 认证功能的应用程序将与这些.so 文件进行交互,以便得知是否可以
授权给发起请求的用户来使用服务.

  如果认证成功了,那么这个用户便可以使用服务或完成命令,如果认证失败了,那么这个用户将不能使用服务,同时,pam 将向指定的log 文件写入警告信息。我们可以将pam 看作是一个中间
裁判,它不依赖于任何应用或服务。你完全可以升级这些应用或服务而不必管pam 的共享库的更新或升级,反之亦然。所以它非常的灵活。

  pam 的认证过程是通过对一些服务或应用的配置文件来控制的。通常,这些配置文件在/etc/pam.d目录下。cd 到这个目录,你会看到很多你很熟悉的应用或服务的名称。系统管理员通过pam 配置文件来制定认证策略,即指定什么服务该采用什么样的认证方法;应用程序开发者通过在服务程序中使用pam API 而实现对认证方法的调用;而pam 服务模块(service module)的开发者则利用pam SPI(Service Module API)来编写认证模块(主要是引出一些函数pam_sm_xxxx( )供libpam 调用),将不同的认证机制(比如传统的UNIX认证方法、Kerberos 等)加入到系统中;pam 核心库(libpam)则读取配置文件,以此为根据将服务程序和相应的认证方法联系起来。