北京东城区朝阳门北大街8号
富华大厦A座4层诺方信业 Bricks
---- 可插拔的认证模块(Pluggable Authentication Modules,即PAM)技术用于实现应用程序的认证机制。在 PAM出现之前,认证工作是由程序员来完成的,如果管理员需要改变认证的方式只有通过修改源程序才能完成。PAM 的出现彻底改变了这种局面,它提供了一个框架和一套编程接口,并且基于PAM应用程序的认证过程是通过配制文件来定义的,这样不仅将决定权交给了管理员,而且大大提高了使用灵活性。
----目前,PAM 技术已广泛应用于各种Unix系统,Linux中也使用了它。
一、PAM 的体系结构
---- 1.PAM的特点
---- 管理员可以选择从简单的密码到智能卡系统的认证方式,还可以为不同的程序配置不同的认证机制。PAM支持程序显示方式的需求,也支持为一个程序配置同时使用多种认证的机制。PAM让用户在使用多种认证机制时,不用为同一个口令敲入多次,并且还可在认证时输入多个口令,特别是当底层认证机制改变时,上层软件不需要修改;此外,PAM 提供一个可插拔的模型,能满足现有服务的需要。
----2.PAM的框架
---- PAM的核心实际上是一些库函数。PAM为用户提供一套调用应用程序的入口,即如果用户调用一个函数,告诉它您要认证即可,至于用哪一种机制认证由配置文件确定。用户通过查看返回值了解认证是否成功。
---- PAM有认证管理、账号管理、对话管理和密码管理4项功能。
---- 下面我们通过实例看看用PAM如何配置用户系统。
/etc/pam.d/login
#模块类型 控制标志 模块的名字 选项
#------- - --
auth required /lib/security/pam_securetty.so
auth required /lib/security/pam_pwdb.so shadow nullok
auth required /lib/security/pam_nologin.so
account required /lib/security/pam_pwdb.so
password required /lib/security/pam_cracklib.so
password required /lib/security/pam_pwdb.so nullok use_authtok shadow md5
sessionrequired /lib/security/pam_pwdb.so
session optional /lib/security/pam_console.so
---- 一个模块类型可以指定多个模块,通过依次被调用来验证用户的身份,这种工作方式叫做 Stacked Modules (堆迭模块)。上例中的 “控制标志”是指更改模块的工作方式。它可取的值如下:
---- required:必须的,该模块的认证必须通过,否则立即返回错误。
---- optional:可选的,表示可以忽略它的错误而继续下面一个模块。
---- sufficient:足够的,表示如果该模块认证成功,下面的模块不用
富华大厦A座4层诺方信业 Bricks
---- 可插拔的认证模块(Pluggable Authentication Modules,即PAM)技术用于实现应用程序的认证机制。在 PAM出现之前,认证工作是由程序员来完成的,如果管理员需要改变认证的方式只有通过修改源程序才能完成。PAM 的出现彻底改变了这种局面,它提供了一个框架和一套编程接口,并且基于PAM应用程序的认证过程是通过配制文件来定义的,这样不仅将决定权交给了管理员,而且大大提高了使用灵活性。
----目前,PAM 技术已广泛应用于各种Unix系统,Linux中也使用了它。
一、PAM 的体系结构
---- 1.PAM的特点
---- 管理员可以选择从简单的密码到智能卡系统的认证方式,还可以为不同的程序配置不同的认证机制。PAM支持程序显示方式的需求,也支持为一个程序配置同时使用多种认证的机制。PAM让用户在使用多种认证机制时,不用为同一个口令敲入多次,并且还可在认证时输入多个口令,特别是当底层认证机制改变时,上层软件不需要修改;此外,PAM 提供一个可插拔的模型,能满足现有服务的需要。
----2.PAM的框架
---- PAM的核心实际上是一些库函数。PAM为用户提供一套调用应用程序的入口,即如果用户调用一个函数,告诉它您要认证即可,至于用哪一种机制认证由配置文件确定。用户通过查看返回值了解认证是否成功。
---- PAM有认证管理、账号管理、对话管理和密码管理4项功能。
---- 下面我们通过实例看看用PAM如何配置用户系统。
/etc/pam.d/login
#模块类型 控制标志 模块的名字 选项
#------- - --
auth required /lib/security/pam_securetty.so
auth required /lib/security/pam_pwdb.so shadow nullok
auth required /lib/security/pam_nologin.so
account required /lib/security/pam_pwdb.so
password required /lib/security/pam_cracklib.so
password required /lib/security/pam_pwdb.so nullok use_authtok shadow md5
sessionrequired /lib/security/pam_pwdb.so
session optional /lib/security/pam_console.so
---- 一个模块类型可以指定多个模块,通过依次被调用来验证用户的身份,这种工作方式叫做 Stacked Modules (堆迭模块)。上例中的 “控制标志”是指更改模块的工作方式。它可取的值如下:
---- required:必须的,该模块的认证必须通过,否则立即返回错误。
---- optional:可选的,表示可以忽略它的错误而继续下面一个模块。
---- sufficient:足够的,表示如果该模块认证成功,下面的模块不用