SSSD (System Security Services Daemon) is a multi-daemon suite that connects Linux systems to remote identity and authentication providers, presenting their data through the standard Linux identity interfaces — NSS (Name Service Switch) for identity lookups (user names, UIDs, GIDs, group membership) and PAM (Pluggable Authentication Modules) for authentication and session management — without creating local user accounts. It was originally developed as a component of the FreeIPA project at Red Hat, introduced in Fedora 11 (2009), and quickly became the standard identity integration layer across RHEL, Fedora, Ubuntu, Debian, and most enterprise Linux distributions. Before SSSD, integrating a Linux host with LDAP or AD required configuring nss_ldap, pam_ldap, pam_krb5, and pam_winbind independently — each with its own caching (or lack thereof), its own reconnection logic, and its own configuration syntax. SSSD replaced this collection with a single, unified daemon providing caching, offline authentication, multi-domain support, and access control in one place.
SSSD’s architecture is built around providers — loadable modules that implement the connection to a specific backend type — and responders — protocol-specific daemons that answer NSS and PAM queries from the system. The providers supported include: ad (native Active Directory integration using LDAP for identity data and Kerberos 5 for authentication, with SID-to-UID mapping, PAC validation from Kerberos tickets, and automatic detection of AD sites and domain controllers via DNS SRV records — the recommended provider for AD-joined hosts); ldap (generic LDAP integration for OpenLDAP, 389 Directory Server, and other RFC 2307-compliant directories, with Kerberos or simple bind authentication); ipa (FreeIPA/Red Hat Identity Management integration, using the IPA-extended LDAP schema for HBAC rules, sudo rules, SSH key distribution, and certificate-based authentication); krb5 (standalone Kerberos authentication without LDAP identity lookup, for environments where identity comes from a separate source); and idp (OIDC/OAuth 2.0 integration for cloud identity providers supporting the device authorisation grant, available since SSSD 2.7). The sss NSS module (registered in /etc/nsswitch.conf as passwd: sss files, group: sss files) intercepts getpwnam(), getgrnam(), and related libc calls and forwards them to the SSSD responder, which either serves them from its local lmdb cache (sub-millisecond) or fetches them from the backend provider. The cache stores complete user entries, group memberships, and — when cache_credentials = true — Kerberos or password credentials, enabling offline authentication: a user who has logged in at least once can continue to authenticate while the network or identity provider is unavailable, using the cached credential hash.
SSSD’s access control and security features make it the correct integration point for several security patterns in this glossary. HBAC (Host-Based Access Control) rules — defined centrally in FreeIPA or emulated via LDAP group membership in the simple_allow_groups SSSD option — restrict which users and groups may log in to which hosts, enforced in the PAM stack before the session is opened. sudo rule distribution (via sudo_provider = sssd) fetches sudo rules from the LDAP/IPA directory, enabling centralised privilege management without distributing /etc/sudoers files across a fleet — changes to sudo rules in the directory propagate to all hosts at the next SSSD cache refresh. SSH public key distribution (ssh_authorised_keys_command /usr/bin/sss_ssh_authorizedkeys) retrieves public keys from the sshPublicKey LDAP attribute or IPA user record, allowing central SSH key management without authorized_keys files on individual hosts. Certificate-based authentication (pam_cert_auth = true with certificate_verification) allows users to authenticate with a smartcard or FIDO2 token presenting an X.509 certificate whose subject matches their LDAP entry, verified against the CA configured in SSSD — tying PKI, FIDO2, and LDAP-based identity into a single authentication flow. SSSD integrates with realmd (realm join, realm permit) for automated AD and IPA domain joining, and with SELinux via the selinux_provider which fetches per-user SELinux context mappings from the IPA server, enabling domain users to receive different SELinux user mappings than local accounts. Diagnostics are via sssctl (sssctl user-checks, sssctl cache-expire, sssctl domain-status) and journalctl -u sssd with debug_level = 7 in sssd.conf for verbose provider tracing.
