nsswitch: network service switch,网络服务切换
解析库: 文件、mysql、NIS、LDAP、DNS
与各存储交互实现的通用框架
通用框架存放位置:/usr/lib64/libnss*, /lib64/libnss*
配置文件中要配置使用哪个解析库
配置文件: /etc/nsswitch.conf
配置示例: db: store1, store2, ...
有一个手动解析的命令:getent
# getent database [entry]
示例:get passwd root
get services http
每种存储中查找的结果状态: STATUS => success | notfound | unavil | tryagain
对应于每种状态参数的行为: ACTION => return | continue
示例: host: files nis [NOTFOUND=return] dns //nis不可用时才去找dns
pam: pluggable authentication module,插入式认证模块
认证库: 文件、mysql、LDAP、NIS
通用框架:与各存储交互的实现,以及多种辅助性功能
通用框架存放位置:/lib64/security/
配置文件:
/etc/pam.conf,
/etc/pam.d/*.conf
通常每个应用使用单独的一个配置文件
配置文件中每行定义一种检查规则 格式: type control module-path module-arguments
type: 检查功能类别 auth:账号的认证和授权 account: 与账号管理相关的非认证功能 password: 用户修改密码时密码检查规则 session:用户获取到服务之前或使用服务完成之后要进行的一些附加性操作
control: 同一种功能的多个检查之间如何进行组合 有两种实现机制: 1.使用一个关键词来定义,例如sufficient,required, requisite 2.使用一个或多个"status=value"形式的组合表示
简单机制
required: 如果检查通过,后续依然要检查;如果检查不通过,即使后面通过了也照样不通过
requisite: 如果通过了继续后面检查,如果不通过直接返回不通过
sufficient: 如果通过,后面不需要检查直接通过了;如果检查没通过,看其他检测结果通过还是不通过
optional:可选的
include: 包含进来其他相同类型的规则
复杂机制: [status1=action1,status2=action3,...]
status: 返回状态
action: ok, done, die, ignore, bad, reset
ok:一票通过权
done: 通过就通过了,不通过就不通过了
die:一票否决权
ignore: 忽略
module-path: 模块路径
/lib64/security:此目录下的模块引用时可使用相对路径
module-arguments:模块参数
模块
1. pam_shells.so
实例:假设我们去掉了/etc/shells文件中的/bin/bash,
检查登录shell
# cd /etc/pam.d
# vim sshd
添加:auth required pam_shells.so
登出shell重新连接就不能连接了,添加/bin/bash后重新远程连接就可以了
2. pam_limits.so
模块通过读取配置文件完成用户对系统资源的使用控制
配置文件:/etc/security/limits.conf /etc/security/limits.d/*
<domai> <type> <item> <value>
<domain> username @group *: 所有用户
<type> soft:用户可自行修改,但不能超过hard限制 hard: 由root设定,通过kernel强制生效 -: 两种都限定
<item> nofile: 所能够同时打开的最大文件数量 nproc:所能够同时运行的最大进程数量 msqqueue:所能够使用的POSIX消息队列能够占用的最大内存空间 sigpending: 所能够使用的最大信号数量
<value> ulimit -n #: 文件数量 ulimit -u #: 进程数量
<style></style>