nsswitch&PAM认证框架
nsswitch
1.nsswitch:Name Service Switch,名称服务开关;
名称解析:将人类使用的自然语言的符号转换成计算机能够使用的数字符号
2.应用程序的名称解析流程:
应用程序 --> nsswitch(配置文件(查询顺序)) --> 对应库文件 --> 解析库 --> 完成解析
3.nsswitch(network services switch 网络服务转换)
中间层,本质上上是一些库文件。提供了为应用程序向不同的解析库进行名称解析的手段和顺序。
通用框架:为应用程序提供简洁高效的接口;代理程序;
作用:承上启下;
承上:提供统一的配置和调用接口;
启下:用户与各种形式的存储进行交互;
在Linux中实现名称解析的通用框架:库
/lib64/libnss*, /usr/lib64/libnss*
框架:
libnss3.so
驱动(接口):
libnss_files.so, libnss_dns.so, libnss_db.so , ...
4.配置文件:
/etc/nsswitch.conf
文件的格式:
db: store_format1 store_format2 ....
每种存储中都可以根据查找键进行查找,并且会返回状态;
STATUS => success | notfound | unavail | tryagain
对于每种状态返回值,都有相应的行为(ACTION):
ACTION => return | continue
默认情况下,对于success状态的行为是return;对于其他状态的行为都是continue;
可以自定义状态和行为的关系:
[STATUS=ACTION]
将此项放置于对应的存储格式之后即可;
hosts: files nis [NOTFOUND=return] dns
5.getent命令:
从某个解析库LIB中获的条目。该命令可以检测nsswitch配置是否正确。
getent - get entries from Name Service Switch libraries
getent database [key]
例如:
#getent hosts
#getent passwd
#getent passwd root
#getent hosts www.test.com
------------------------------------------------------------------------------------------
pam
pluggable authentication modules;通用的认证框架
1.其功能实现同样通过库;
模块的存放路径:/lib64/security/*
2.配置文件:
全局认证配置文件:/etc/pam.conf
格式:
application type control module-path module-arguments
为每种应用提供的专用的配置文件:/etc/pam.d/*APP_NAME*
格式:
type control module-path module-arguments
3.配置文件格式详解
type:
检查的功能类别,可能使用一个或者多个进行限定认证
auth:与账号的认证和授权有关;
account:与账号的管理相关,但与认证无关的功能;
password:与用户修改密码时密码的复杂度有关的功能;
session:用户获取到服务之前或使用服务完成之后需要进行附加操作;
control:
同一种功能的多个检查之间如何进行组合
required:如果本条目没有被满足,那么最终本次的认证一定失败;但是本次认证过程并不中断;整个栈运行完毕之后必定返回"认证失败"的信号;具备隐形的一票否决;
requisite:如果本条目没有被满足,那么本次认证一定失败;而且整个栈立即终止并返回"认证失败"信号;显示的一票否决;
sufficient:如果本条目的条件被满足,且本条目之前没有任何的required条目判断为失败,则整个栈立即终止并返回"认证成功"信号;如果本条目的验证失败,还需要继续参考其他的条目规则;一票通过;
optional:可选的,无足轻重的表决;
include:将其他的配置文件中的流程栈包含在当前位置,就好像把其他的配置文件的配置内容复制到当前文件一样;
substack:运行其他配置文件的流程,但与include不同的是,其在子栈中运行,其运行结果不影响主栈;
返回的状态 status:user_unknown, success, default, ...
采取的行为 action: ok, N, bad, die, done, ignore, reset, ...
module-path:模块文件路径;
相对路径:相对于/lib64/security/目录而言;
绝对路径:可位于任何可访问路径;
module-arguments:模块的专用参数;
4.常用到的pam模块
pam_limits.so
pam_listfile.so
pam_time.so
例如:
1.pam_limits.so:资源限制
在用户级别实现对其可使用的资源的限制,例如可打开的文件数量,可运行的进程数量,可用内存空间。
2.修改限制的实现方式:
(1)ulimit命令:用于调整软限制;
-n 最多的打开的文件描述符个数
-u 最大用户进程数
-S 使用 `soft'(软)资源限制
-H 使用 `hard'(硬)资源限制
(2)配置文件:/etc/security/limits.conf, /etc/security/limits.d/*.conf
配置文件:每行一个定义;
格式:<domain> <type> <item> <value>
<domain>:应用于哪些对象
username
@group
*:所有用户
<type>:限制的类型
soft:软限制,普通用户自己可以修改;
hard:硬限制,由root用户设定,且通过kernel强制生效;
-:软硬使用相同限制;
<item>:限制的资源类型
nofile:所能够同时打开的最大文件数量;默认为1024;
nproc:所能够同时运行的进程的最大数量;默认为1024;
maxlogins:此用户的最大登录数
rss:最大驻留集大小(KB)
本文转自 Runs_ 51CTO博客,原文链接:http://blog.51cto.com/12667170/1969783,如需转载请自行联系原作者