您的位置:首页 > 运维架构 > Linux

Linux自学笔记——nsswitch and pam

2017-12-21 13:29 357 查看
nsswitch:name service switch
通用框架,与各种类型存储进行交互的公共实现;
实现:/usr/lib64/libnss*,/lib64/libnss*
框架:libnss
驱动:libnss_files-



为每一种用到解析库的应用通过配置定义其位置:
/etc/nsswitch.conf
db: store1 store2 …



例如:
passwd:files
hosts:files dns
解析库:
文件、关系型数据管理系统(mysql)、NIS、LDAP、DNS
每种存储中的查找结果状态:
STATUS => success | not found | unavail | tryagain
对应与每种状态结果的行为(action):
return | continue
例子:
hosts: files nis [NOTFOUND=return] dns
getent命令:
getent DATABASE [key]
pam:pluggable authentication module
认证库:存储
多种类型的存储:文件、关系型数据管理系统、LDAP、NIS
pam:通用框架,提供了与各种类型存储进行交互的公共实现、以及多种辅助类的功能:
/lib64/security/*
配置文件:为各种调用了pam的应用提供其专用配置:
通用配置文件:/etc/pam.conf,可为每一种调用pam完成认证功能的应用程序提供配置;
专用配置文件:/etc/pam.d/*,通常专用于为某种特定的应用程序提供配置;

通常每个应用会使用一个单独的配置文件;
配置文件格式:
通用配置文件:
application type control module-path module-arguments
专用配置文件:
type control module-path module-arguments



type:检查的功能类别
auth:账号的认证和授权;
account:与账号管理相关的非认证类的功能;
password:用户修改密码时密码复杂度检查机制;
session:用户获取到服务之前或使用服务完成之后需要进行一些附加性操作;
control:同一种功能的多个检查之间如何进行组合;
两种实现机制:
1) 简单实现:使用一个关键词来定义2) 详细实现:使用一个或多个“status=action”简单实现:required:必须通过检查;否则,即为失败;无论成功还是失败,都需继续由后续同种功能的其它模块进行检查;requisite:一票否决;检测失败就直接返回失败;检测成功,由后续同种功能的其它模块进行检查;sufficient:一票通过,检测成功就直接返回成功;检测失败,则由后续同种功能的其它模块进行检查;optional:可选的,参考性控制机制;include;调用其他配置文件中的同种功能的检测机制; 详细实现:
[status1=action1,status2=action2,…]
status:返回状态
action:采取的行为,比如ok,done,die,bad,ignore,…
module-path:模块文件路径;
相对路径:相对于/lib64/security/目录而言;
绝对路径:可位于任何可访问路径;
Module-arguments:模块的专用参数;
模块示例:
pam_limits.so:资源限制
在用户级别实现对其可用的资源的限制,例如可打开的文件数量,可运行的进程数量,可用的内存空间;

修改限制的实现方式:
1) ulimits命令;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;ulimit命令;用于调整软限制: -n 最多的打开的文件描述符个数; -u 最大的用户进程数 -S 使用‘soft’(软)资源限制 -H 使用‘hard’(硬)资源限制
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  pam nsswitch