4.5. PAM 和 NSS

现代的类 Unix 系统(例如 Debian 系统)提供 PAM (Pluggable Authentication Modules,插入式验证模块)NSS(Name Service Switch,名称服务切换) 机制给本地系统管理员,使他们能够配置自己的系统。它们的功能可以概括为以下几点。

  • PAM 给应用软件提供了一个灵活的认证机制,因此涉及到了密码数据的交换。

  • NSS 提供了一个灵活的名称服务机制,它经常被 C 标准库使用,使例如 ls(1) 和 id(1) 这样的程序获得用户和组名称。

PAM 和 NSS 系统必须保持配置一致。

PAM 和 NSS 系统中重要的软件包如下。

表 4.5. PAM 和 NSS 系统中重要的软件包

软件包流行度大小说明
libpam-modulesV:842, I:9991059插入式验证模块(基础服务)
libpam-ldapV:1, I:14244允许 LDAP 接口的插入式验证模块
libpam-cracklibI:16116启用 cracklib 支持的插入式验证模块
libpam-systemdV:454, I:760393用于 logind 注册用户会话的插入式验证模块(PAM)
libpam-docI:11031插入式验证模块(html 和 文本文档)
libc6V:937, I:99912333GNU C 库:同样提供“名称服务切换”服务的共享库
glibc-docI:132995GNU C 库:帮助页面
glibc-doc-referenceI:513278GNU C 库:参考手册,有 info、pdf 和 html 格式(non-free)
libnss-mdnsI:557119用于解析组播 DNS 名称的 NSS 模块
libnss-ldapI:12255NSS 模块,用于使用 LDAP 作为一个名称服务的
libnss-ldapdI:19152NSS 模块,用于使用 LDAP 作为一个名称服务的(libnss-ldap 的新 fork)
  • libpam-doc 中 “The Linux-PAM System Administrators’ Guide” 是了解 PAM 配置的必要文档。

  • glibc-doc-reference 中的 “System Databases and Name Service Switch” 是了解 NSS 配置的重要文档。

[注意]注意

你可以使用 “aptitude search ‘libpam-|libnss-‘” 命令查看更多的相关软件包。NSS 缩写也可能意味着 “Network Security Service,网络安全服务”,它不同于 “Name Service Switch,名称服务切换”。

[注意]注意

PAM 是为每个程序初始化环境变量为系统默认值的最基础方法。

systemd 下, libpam-systemd 软件包被安装用来管理用户登录,通过在 systemd 控制组层,为 logind 注册用户会话来实现。参见 systemd-logind(8), logind.conf(5), 和 pam_systemd(8).