Linux 系统认证相关

发布时间: 更新时间: 总字数:1100 阅读时间:3m 作者: IP上海 分享 网址

Linux 系统认证相关

Linux SSSD, NSS, PAM 关系区别

核心区别

组件 全称 (Full Name) 核心功能 (Core Function) 作用对象 (Target/Focus) 本质 (Nature)
NSS Name Service Switch (名称服务切换) 身份信息查找:将名称(如用户名、组名、主机名)解析为 ID 或其他配置信息(如 UID、GID、Home 目录、Shell)。 系统数据库 (如 passwd, group, hosts, services)。 身份/数据查找 框架。
PAM Pluggable Authentication Modules (可插拔认证模块) 身份验证和授权:处理用户登录、更改密码、会话管理等操作,决定用户是否可以执行某个操作。 应用服务 (如 login, su, ssh, sudo)。 认证/授权 框架。
SSSD System Security Services Daemon (系统安全服务守护进程) 整合与缓存:作为 NSS 和 PAM 的后端代理,用于从远程身份存储(如 AD, LDAP, FreeIPA)获取数据,并提供本地缓存和离线登录支持。 远程身份/认证源。 守护进程/服务

关系总结

SSSD、NSS 和 PAM 协同工作,形成一个分层的、可配置的身份管理架构:

  1. 最外层:应用服务

    • 当一个应用(如 loginsshidgetent)需要身份信息或验证用户时,它会调用标准的 NSSPAM 库函数。
  2. 中间层:NSS 和 PAM 框架

    • NSS:根据配置文件 /etc/nsswitch.conf,决定查找用户/组信息的顺序和来源(例如:先查 files,然后查 sss)。
    • PAM:根据配置文件 /etc/pam.d/*,决定认证、授权、账户和会话管理的步骤和模块链(例如:先检查密码,再检查用户是否在允许的组中)。
  3. 底层:SSSD 守护进程

    • 如果 NSS 或 PAM 的配置指向 sss 模块 (nss_sss.sopam_sss.so),那么请求就会被转发给 SSSD 守护进程(sssd)。
    • SSSD 充当一个透明代理
      • 它首先检查本地缓存(这是 SSSD 的核心优势)。
      • 如果缓存中没有或已过期,它会代表系统连接远程身份源(如 Active Directory, LDAP)获取数据或进行认证。
      • 获取结果后,SSSD 会更新缓存,并将信息返回给 NSS/PAM 模块,最终回到应用。

简而言之:

  • NSS 负责你是谁?你的信息是什么?
  • PAM 负责你被允许做什么?请证明是你。
  • SSSD 负责从远程服务器获取/验证身份信息,并进行缓存以提高速度和支持离线操作。

深入思考

  1. 架构定位
  • NSS/PAM 是 Linux 操作系统的核心 API/框架,它们定义了系统如何查找身份信息和进行认证。
  • SSSD 是一个增强型服务,它使用 NSS 和 PAM 提供的接口,将远程身份管理功能带入本地系统,解决了传统方法(如 nss_ldap/pam_ldap)中缺乏缓存、离线支持和多域管理的问题。
  1. 独立性
  • NSS 和 PAM 可以独立于 SSSD 运行,它们可以配置为只使用本地文件 (files) 或直接连接其他后端(如旧的 ldap 模块)。
  • SSSD 不能独立于 NSS 和 PAM 运行,它必须通过配置 NSS 和 PAM 框架(使用 sss 模块)才能将自己的功能提供给系统上的应用程序。

总而言之,SSSD 是一个现代的、健壮的、基于缓存的解决方案,它利用 NSS 来解决身份查找问题,利用 PAM 来解决身份验证问题,从而实现对远程身份源的无缝集成。

本文总阅读量 次 本站总访问量 次 本站总访客数
Home Archives Categories Tags Statistics