nsswitch:
Network Service Switch,网络服务转换,让多种应用程序能够灵活实现名称解析的通用框架
解析库:
文件、MySQL、NIS、LDAP、DNS
通用框架,与各存储交互的实现:
/usr/lib64/libnss*,/lib64/libnss*
配置文件:/etc/nsswitch.conf
db: store1,store2,...
每种存储中查找的结果状态:STATUS => success | not found | unavail | tryagain
对应于每种状态参数的行为:ACTION => return | continue
pam:Pluggable Authentication Module,插入式认证模块
关于pam的更详细的知识请参考《Linux-pam sag.pdf》,百度网盘中有
认证库:
文件、MySQL、NIS、LDAP
通用框架,与各存储交互的实现,以及多种辅助性功能:
/usr/lib64/security/,/lib64/security/
配置文件:/etc/pam.conf
/etc/pam.d/*.conf
通常每个应用使用一个单独的配置文件:
配置文件中每行定义一种检查规则,其格式如下:
type control module-path module-arguments
type:检查功能类别,主要有以下几种
auth:与帐号认证相关的认证和授权检查
account:与帐号管理相关的非认证功能
password:用户修改密码时密码检查规则
session:用户获取到服务之前或使用服务完成之后(还未退出时)要进行的一些附加性操作
control:同一种功能的多个检查之间如何进行组合。第一个失败了第二个怎么办
有两种实现机制:
a) 使用一个关键词来定义。例如sufficient,required,requisite
b) 使用一或多个"status=action"形式的组合表示
简单机制:
required:若第一个规则检查通过,后面的同类规则依然要检查;若第一个规则检查未通过,后面的同类规则依然要检查,但是最终其无法通过检查规则的限制
requisite:若第一个规则检查通过,后面的同类规则依然要检查;若第一个规则检查未通过,后面的同类规则无须再检查,其拥有一票否决权
sufficient:若第一个规则检查通过,后面的同类规则无须再检查,其拥有一票通过权;若第一个规则检查未通过,而后面的某个同类规则检查通过,那么其后面的同类规则无须再检查
optional:可选,其规则仅供参考,通过也可以,不通过也可以,不影响最终结果
include:包含指定文件中的相同类别的所有规则
复杂机制:[status1=action1,status2=action2,.....]
status:返回状态
action:
ok:一票通过权
done
die:一票否决权
ignore:可选,其规则仅供参考,通过也可以,不通过也可以,不影响最终结
bad:我说不过就不过,但是没有一票否决权,后面依然要检查
reset
module-path:模块路径
/lib64/security:此目录下的模块引用时可使用相对路径,否则必须使用绝对路径
module-arguments:模块参数
模块:
pam_shells.so
pam_limits.so
该模块通过读取配置文件完成用户对系统资源的使用控制
/etc/security/limits.conf
/etc/security/limits.d/*
语法:
<domain> <type> <item> <value>
<domain>:
username
@group
*:所有用户
<type>:
hard:由root设定,通过kernel强制生效
soft:由用户自行修改,但不能超过hard的限制
-:hard和soft同时限定
<item>:
nofile:所能够同时打开的最大文件数量
nproc:所能够同时运行的最大进程数量
msqqueue:使用的POSIX消息队列能够占用的最大内存空间
sigpending:所能够使用的最大信号数量
<value>
ulimit命令:
ulimit -n #:所能够同时打开的最大文件数量
ulimit -u #:所能够同时运行的最大进程数量