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

菜鸟学Linux 第069篇笔记 nsswitch, PAM

2017-01-02 19:08 316 查看
菜鸟学Linux 第069篇笔记 nsswitch, PAM

管理资源授权服务
Authentication (认证)
Authorization (授权)
Audition (审计)

FQDN --> IP (名称解析库)
dns
/etc/hosts
mysql
nis (Network Information System)
ldap (LlightWeight Directory Access Protocol) 查询数据比mysql要快一个数据级
对查询数据量比较大的时候比较适用,写速度相对慢一些

nsswitch (Network Service Switch)
位于程序和名称解析方式中间位置,实现为程序提供多种解析方式的一个中转站,比如说
当一个程序当前使用/etc/asswd来查询用户的ID,但现在程序又想使用基于mysql来查询用户ID
,这样就需要重新编写代码让该程序支持基于mysql来进行查询用户的ID,而nsswitch则是用来简化程序在设计名称解析时所使用的代码,当程序需要使用名称解析时,直接向该nsswitch程序发送使用何种解析方式(如mysql),该程序则将其指向对应的解析方式(mysql)
这便为nsswitch的作用(个人见解)

配置文件(定义某种名称解析服务通过哪种手段实现)
/etc/nsswitch.conf
passwd: file
hostname: file dns

而上面所定义的库如file dns,在执行时其实是在调用相应的库文件实现名称解析的
/usr/lib
libnss_compat.so
libnss_db.so
libnss_dns.so
libnss_files.so
libnss_hesiod.so
libnss_ldap.so
libnss_nisplus.so
libnss_nis.so
libnssutil3.so
libnss_winbind.so
libnss_wins.so

查找对应服务返回结果
SUCCESS
NOTFOUND
UNAVAIL
TRYAGAIN

命令
getent (get entries from administrative database)
e.g. # getent hosts
# getent passwd
# getent passwd root

认证
和名称解析是两套独立运行的机制,此是用来比对用户输入的字符和某种认证机制所提供的是否一致,nsswitch只提供去哪里去找,而比对与用户所输入的用户名密码则是用认证来实现的, 认证本身也可以不用借助名称解析服务去查找用户存放的密码位置

验证密码
123456 --> md5,salt
passwd

用户认证过程
解析:root-->nsswitch.conf-->passwd:files
解析:'12345(password)' --> nsswitch.conf --> shadow:files
auth: 123456 --> md5(salt) --> compare

Authentication机制
md5:/etc/shadow
mysql
ldap
nis
Kerberos

PAM (类似nsswitch,只不过此程序是用来指定用户程序用哪里程序认证机制)
(Pluggable Authentication Modules)

库文件/lib/security
pam_*
pam_unix.so
[options: nullok shadow md5]
pam_unix.so use_authok
pam_sells.so
pam_securetty.so
pam_listfile
pam_rootok.so
pam_limits.so

配置文件
/etc/security/
/etc/pam.d/
type control module-path [module-arguments]

type
account
auth
password
session

control
required (不过,但继续向下检查)
requisite (不过,不需要向下检查,过还需向下检查)
sufficient (过,则直接通过。 没通过不影响最终结果)
optional (可选)
include (权利移交给其它文件) [value=action]

action
ok
done
bad
die
ignore
reset

required [success=ok new_authok_reqd=ok ignore=ignore default=bad]
requisite [success=ok new_authtok_reqd=ok ignore=ignore default=die]
sufficient [success=done new_authtok_reqd=done default=ignore]
optional [success=ok new_authtok_reqd=ok default=ignore]

PAM 里边的每一个模块的详细配置说明,请参照 linux-PAM_SAG.pdf文档
SAG (System Administrators' Guide) 此文档可以直接百度到有官方网站
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息