转:https://baijiahao.baidu.com/s?id=1605047281880444902&wfr=spider&for=pc
一、Linux PAM介绍
Linux pam源于著名厂商后来被甲骨文收购的SUN公司的软件DCE-RFC的开源实现。PAM全称为Pluggable Authentication Modules,可插入认证模块。可以动态引入认证各种认证模块和插件,而无需重新加载系统。具有高度灵活性,随配随生效。
更多特性信息想见其官方网站(linux-pam.org),此处不在赘述。
二、PAM配置
PAM配置通过配置文件,默认是在/etc/pam.d/目录下,每一个服务都是以服务名命名的配置文件。比如虫虫一个服务器的配置目录如下:
其中比较重要,直接关注是system-auth,sshd,以下是system-auth配置
可见配置分为基本分为四列:模块名称、控制、模块库文件和参数。
三、模块介绍
其中模块主要分四种,具体功能如下:
auth模块 实现用户认证。比如提示用户输入密码,或判断用户是否为root等。
account模块 对用户的各项属性进行检查。比如是否允许登录,是否达到最大用户数,或是root用户是否允许在这个终端登录等。
session模块 实现用户登录前的,及用户退出后所要进行的操作。比如登录连接信息,用户数据的打开与关闭,挂载文件系统等。
password模块 实现用户信息修改。比如修改用户密码。
四、控制介绍
控制用来标记处理和判断各个模块的返回值。控制分为六种:
required 表示即使某个模块对用户的验证失败,也要等所有的模块都执行完毕后,PAM 才返回错误信息。
requisite 和required相似,但是如果这个模块返回失败,则立刻向应用程序返回失败,表示此类型失败.不再进行同类型后面的操作.
sufficient 表示如果一个用户通过这个模块的验证,PAM结构就立刻返回验证成功信息,把控制权交回应用程序。其后相关模块的所有控制都将会比忽略。这就是开头为啥最后一个passwd 的required不会执行而导致报错的原因。
optional 只有当它是与此服务+类型相关联的配置项是中的唯一模块时,模块返回才有意义。
include 引入改项指定文件中的所有配置项。
substack 和include类似。不同之处在于,对子堆中的完成和失败的行为的评估不会导致跳过整个模块堆栈的其余部分,而只会跳过子模块。
常用PAM模块
下面总结一个常用模块的介绍,希望对大家有用
文章评论