Saturday, July 25, 2009

NSS与PAM的配置

这两种功能在多个方面都有相似性, 所以在把它们放在一起, 容易比较, 加深印象.

回顾:
1. PAM是一种认证类似框架, 使用约定的API可以使程序满足多样, 灵活的认证后端.
2. nss是对信息服务(information service)的glibc函数架构. 使用它可以在不修改现成的程序而实现信息服务后端源的变化.


PAM的配置文件为:
1. /etc/pam.conf
2. /etc/pam.d下对不同服务分开配置文件
nss的配置文件为:
1. /etc/nsswitch.conf

服务与配置文件

使用PAM认证的程序怎么找到自己独有的配置文件?
答案: PAM的服务名, PAM的服务名一般编码到代码中, 对应也/etc/pam.d下的文件名.
如samba的PAM服务名为"samba"(被写到代码中), 所以samba的PAM配置文件是: /etc/pam.d/samba, 服务名必须与文件名相同

怎么知道系统中有哪些可用的PAM后端(modules)?

答案: PAM的后端modules被放置在:/lib/security. 例如ldap的ldap后端在ubuntu下对应于包: libpam-ldap, 它的module是: /lib/security/pam_ldap.so

怎么知道PAM后端(modules)可以使用的参数?
不同的modules有自己的使用参数, 这就要查看modules本身的文档. 在ubuntu下, libpam-ldap的文档位置:
* /usr/share/doc/libpam-ldap
提供man 5 pam_ldap online 文档

怎么知道系统中有哪些可用的后端(modules), 和在哪里指定要使用的后端(modules)?
NSS也与PAM相同, 也有服务名. 如下为nsswitch.conf的一行配置:
hosts:          dns  files

其中, dns与files就是服务名, 同时, 它与modules是的关系如下:
/lib/libnss_SERVICE.so.X
 * 当X是1时,  表示glibc是2.0版本
 * 当X是2时, 表示glibc是2.1版本
SERVICE就是服务名, 同时它也是module名的一部分.

例子:
ubuntu下nss的ldap模块对应的包: libnss-ldap, modules的路径为: /lib/libnss_ldap.so.2 -> libnss_ldap-2.8.so (有与没有X都为同一个文件)

不同的nss的后端(modules)使用的配置文件在哪里?
不同的modules有自己的使用参数, 这就要查看modules本身的文档. 在ubuntu下, libnss-ldap的文档位置:
* /usr/share/doc/libnss-ldap
提供man 5 nss_ldap online文档

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.