Linux 第34天 pam
时间: 20180823
目录
NSSWITCH 名称解析
PAM 认证机制
NSSWITCH
nsswitch是network service switch的简称,叫做网络服务转换,主要用于调整网络服务的名称解析机制。一台主机的
每种服务都有不同的认证方式,如基于密码认证,指纹验证,虹膜验证等,这些服务的认
证所采用哪种方式?这个便是由nssiwtch来定义一个主机的某个服务所采用的验证的方式
nswitch是一个认证框架,即每个服务都可以调用此框架来实现验证功能,目的是为了统
一,这样有需要认证的服务,应用都使用统一的调用接口来调用即可。每个服务提供不同
的接口,但是每种接口都需要用专用的驱动(库文件): 也可以采用一个统一的框架,此
框架只提供一个接口,不同的应用程序可以在此框架之上定义不同的数据集(认证机制)。
很显然采用统一的框架结构很方便的进行统一管理,而NSS就是这个框架。
NSS的配置文件/etc/nsswitch.conf
格式为 解析库: 解析库类型
如 密码认证方式 passwd: files
表示密码的认证方式为本地文件认证方式。也可以根据自己的需求来更改认证方式
如passwd: ldap 如果想采用多种则可以再后边再跟,则会采取顺序先后进行认证
如果第一个所指定的认证不成功,则会接着找下一种认证方式里去查,如果成功
则直接返回。
在解析库里查询时,查询是有返回值的
SUCCESS: service ok, found name
NOTFOUND: service ok, name not found
UNAVAIL: service not avaliable
TRYAGAIN: temporary service failure
默认地动作为在第一次遇到SUCCESS状态之后,即return,否则continue,dns解析
过程就是这样。当然我们还可以自定义这些动作,如系统账号密码认证过程,当ldap
服务正常时如果验证后没有找到则直接返回结果,而不会进行后续的其它的解析库
只有当ldap验证服务出现故障时,才会通过本地账号密码文件进行认证,写法如下
passwd: ldap(NOTFOUND=return) files
PAM (Pluggable Authentication Modules)
可插入式认证模块,NSS是用来实现名称解析的,如同上面所讲的在密码认证过程当中
,NSS负责指定通过哪种方式去验证用户身份,而PAM就是接下来要去实现认证工作的
一个模块。同NSS一样每一种服务都用到不同的认证方式,因此就需要不同的认证库,认
证库可以是文件,数据库,ldap,nis等,同样这些认证库的系统模块位于
/lib64/security目录下的所有库文件。NSS定义了密码存储的位置,pam就要能够与对
应的存储接口进行通信,如ldap、shadow等,pam还可以通过自己的一些权限指派模块
来限制一些额外的资源,在pam的配置文件当中为每种应用定义其需要用到的模块,包括
驱动、授权机制等等。
pam的主配置文件为/etc/pam.conf 其它次配置文件位于/etc/pam.d/目录下的所有文
件,该目录下的文件为每个应用定义专用的配置。需要注意的是其中/etc/pam.conf在
centos6就已经取消掉了使用的是/etc/pam.d目录下对应的服务配置文件其格式为:
type control module-path module-arguments
type功能包括: auth, account, password, session
account: 与账号管理相关的非认证功能
auth: 认证和授权
password: 用户修改密码时使用
session: 用户获取到服务之前或使用服务完成之后要进行的一些附属性操作
control 同一种功能的多个检查之间如何进行组合,有两种机制:
用一个关键词来定义
使用一到多组 return value=action
简单的机制有
required
requisite
sufficient
optional
include 使用其它的配置文件中同样功能的相关定义来进行检查
复杂的机制
[value1=action1 value2=action2]
value 指此项检查的返回值,其可能的取值有多种如success等
action 采取的操作,其可能的取值常用的有6种如ok, done, die, ignore
bad, reset
module-path
模块路径
相对路径/lib64/security
绝对路径/path/module
module-arguments 模块参数
这里不再多做讲解了,个人感觉能把这个理解了,你就完全了解了linux是如何实现一个
用户的登录认证机制,以及可以根据自己的需求来修改这些参数了,我查了一下官方文档
但是不是特别理解,这里不作详解。文档可参考
Red_Hat_Enterprise_Linux-7-System-Level_Authentication_Guide-en-US
里边有一章讲解
USING PLUGGABLE AUTHENTICATION MODULES (PAM) 表示个人理解不深入,不太懂模块
所以只能研究到此哈哈。