Open georgemarselis-nvi opened 6 months ago
[domain/mydomain.on]
# each section can have a 'description' variable description = "The sss daemon session domain configuration section for domain/mydomain.on"
# Options present in a domain configuration section. Said section is named ## [domain/NAME]
# Explicitly enable or disable the domain. If set to "True", the domain is always # "enabled". If "False", the domain is always "disabled". # # If this option is not set, the domain is enabled only if it is listed # in the domains option in the “[sssd]” section. # enabled = True
# Specify whether the domain is meant to be used by POSIX-aware clients,
# such as the NSS (Name Service Switch ), or by applications that do not
# need POSIX data to be present or generated. Only objects from POSIX
# domains are available to the operating system interfaces and utilities.
#
# Allowed values for this option are "posix" and "application". POSIX
# domains are reachable by all services. Application domains are only
# reachable from the InfoPipe responder and the PAM responder. For more
# information, see sssd-ifp(5)
#
# NOTE: The application domains are currently well tested with
# the id_provider
option set to 'ldap', only.
# For an easy way to configure non-POSIX domains, please
# see the "Application domains" section.
#
# Default: posix
domain_type = posix
# UID and GID limits for the domain. If a domain contains an entry that # is outside these limits, it is ignored. For users, this affects the # primary GID limit. The user will not be returned to NSS if either the # UID or the primary GID is outside the range. For non-primary group # memberships, those that are in range will be reported as expected. # # These ID limits affect even saving entries to cache, not only returning # them by name or ID. # # Default: 1 for min_id, 0 (no limit) for max_id min_id = 1 max_id = 0
# Determine if a domain can be enumerated, that is, whether the domain can
# list all the users and group it contains. Note that it is not required
# to enable enumeration in order for secondary groups to be displayed.
# Enumerating a domain requires SSSD to download and store all user and
# group entries from the remote server.
#
# NOTE: Enabling enumeration has a moderate performance impact on
# SSSD while enumeration is running. It may take up to several
# minutes after SSSD startup to fully complete enumerations.
# During this time, individual requests for information will
# go directly to LDAP. Responses may be slow, due to the heavy
# enumeration processing. Saving a large number of entries to
# cache after the enumeration completes might also be CPU
# intensive as the memberships have to be recomputed. This can
# lead to the sssd_be
process becoming unresponsive or even
# restarted by the internal watchdog.
#
# While the first enumeration run is trying to complete, requests for the
# complete user or group lists may return no results until processing is
# finished. Further, enabling enumeration may increase the time necessary
# to detect network disconnection, as longer timeouts are required to
# ensure that enumeration lookups are completed successfully. For more
# information, refer to the man pages for the specific id_provider in use.
# For the reasons cited above, enabling enumeration is not recommended,
# especially in large environments.
#
# This parameter can have one of the following values:
# True
# Users and groups are enumerated
# False
# No enumerations for this domain
#
# Default: False
enumerate = True
# Enable enumeration of any of autodetected trusted domains. The supported # values are: # all # All discovered trusted domains will be enumerated # none # No discovered trusted domains will be enumerated # Optionally, a list of one or more domain names can enable enumeration # just for those specific trusted domains. # # Default: none subdomain_enumerate = none
# Seconds nss_sss should consider entries valid before asking the backend # again. The cache expiration timestamps are stored as attributes of # individual objects in the cache. Changing the cache timeout only has # effect for newly added or expired entries. You should run the # sss_cache(8) tool in order to force refresh of entries that have already # been cached. # # Default: 5400 entry_cache_timeout = 5400
# The time in seconds nss_sss should consider user entries valid before # asking the backend again # # Default: equal to entry_cache_timeout (5400) entry_cache_user_timeout = 5400
# The time in seconds nss_sss should consider group entries valid before # asking the backend again # # Default: equal to entry_cache_timeout (5400) entry_cache_group_timeout = 5400
# The time in seconds nss_sss should consider netgroup entries valid before # asking the backend again # # Default: entry_cache_timeout (5400) entry_cache_netgroup_timeout = 5400
# The time in seconds nss_sss should consider service entries valid before # asking the backend again # # Default: entry_cache_timeout (5400) entry_cache_service_timeout = 5400
# The time in seconds nss_sss should consider hosts and networks entries # valid before asking the backend again # # Default: entry_cache_timeout (5400) entry_cache_resolver_timeout = 5400
# The time in seconds sudo should consider rules valid before asking the # backend again # # Default: entry_cache_timeout (5400) entry_cache_sudo_timeout = 5400
# The time in seconds the autofs service should consider automounter maps # valid before asking the backend again # # Default: entry_cache_timeout (5400) entry_cache_autofs_timeout = 5400
# The time in seconds to cache a host key for # # Default: entry_cache_timeout (5400) entry_cache_ssh_host_timeout = 5400
# The time in seconds to keep the local computer entry before asking the # backend again # # Default: entry_cache_timeout (5400) entry_cache_computer_timeout = 5400
# Specify how many seconds SSSD has to wait before triggering a background # refresh task which will refresh all expired or nearly expired records. # The background refresh will process users, groups and netgroups in the # cache. For users who have performed the initgroups operation in the # past[1], both the user entry and the group membership are updated. # [1] get group membership for user, typically at login # # This option is automatically inherited for all trusted domains. # If you want to set this value, considering setting it to # 3/4 * entry_cache_timeout. # # Cache entry will be refreshed by the background task when 2/3 of cache # timeout has already passed. If there are existing cached entries, the # background task will refer to their original cache timeout values # instead of current configuration value. This may lead to a situation in # which the background refresh task appears to not be working. This is by # design to improve offline mode operation and reuse of existing valid # cache entries. To make this change instant, the user may want to # manually invalidate existing cache. See sss_cache(8) for more details # on how to manipulate the SSSD cache # # Default: 0 (disabled) refresh_expired_interval = 0
# Determine if user credentials are also cached in the local LDB cache. # The cached credentials refer to passwords, includomg the first # (long term) factor of two-factor authentication, but not other # authentication mechanisms. Passkey and Smartcard authentications are # expected to work offline as long as a successful online authentication # is recorded in the cache without additional configuration. # # NOTE: While credentials are stored as a salted SHA512 hash, caching # the credentials can still potentially pose some security risk # in the case an attacker manages to get access to a cache file # and brute force attack a password against the cache. Access to # to a cache file normally requires privileged access. # # Default: False cache_credentials = False
# Determine the minimal length the first authentication factor (long term # password) must have to be saved as SHA512 hash into the cache, provided # 2-Factor-Authentication (2FA) is used and credentials are configured to # be cached. # Setting this value avoids the security trouble that any short PINs in a # PIN-based 2FA scheme are saved in the cache. If they were to be savd, it # would make them easy targets for brute-force attacks. # # Default: 8 cache_credentials_minimal_first_factor_length = 8
# Number of days entries are left in cache after last successful login. # After this limit, entries are removed from the cache. Set to 0 for # unlimited days. The value of this parameter must be greater than or # equal to offline_credentials_expiration. # Default: 0 (unlimited) account_cache_expiration = 0
# Display a warning N days before the password expires. If set set to zero # then this filter is not applied. But, if the expiration warning is # received from a backend server, it will automatically be displayed. # # NOTE: The backend server has to provide information about the # expiration time of the password. If this information is missing, # sssd cannot display a warning. Also, to use this feature, an auth # provider has to be configured for the backend. # # Default: 7 (Kerberos), 0 (LDAP) pwd_expiration_warning = 7
# The identification provider used for the domain. # Supported ID providers are: # proxy: Support a legacy NSS provider. # files: FILES provider. See sssd-files(5) for more information # on how to mirror local users and groups into SSSD. # ldap: LDAP provider. See sssd-ldap(5) for more information on # configuring LDAP as a provider. # ipa: FreeIPA and Red Hat Identity Management provider. See # sssd-ipa(5) for more information on configuring FreeIPA # as a provider. # ad: Active Directory provider. See sssd-ad(5) for more # information on configuring Active Directory as a provider. # # Default: https://github.com/SSSD/sssd/issues/7335 id_provider = ad
# Use the full name and domain as the login name of the user reported to
# NSS. The format of the login name is described by the full_name_format
# option for the specific domain
# If set to True, all requests to this domain must use fully qualified
# names. For example, if used in LOCAL domain that contains a "test" user,
# getent passwd test would not find the user while getent passwd test@LOCAL
# would.
# NOTE: This option has no effect on netgroup lookups due to their # tendency to include nested netgroups without qualified names. # For netgroups, all domains will be searched when an unqualified # name is requested. # # Default: False (True for trusted domain/sub-domains or if default_domain_suffix is used) use_fully_qualified_names = True
# Decide if SSSD return group members for group lookups. # # If set to TRUE, the group membership attribute is not requested from the # ldap server and group members are not returned when processing group # lookup calls, such as getgrnam(3) or getgrgid(3). As a result, # "getent group $groupname" would return the requested group as empty. # # Enabling this option is used for faster access provider checks for group # membership. This is especially true for groups containing many members. # # This option can be also set per subdomain or inherited via subdomain_inherit. # # Default: False ignore_group_members = False
# The authentication provider used for the domain. Supported auth providers # are: # ldap: Used for native LDAP authentication. See sssd-ldap(5) for more # information on configuring this provider. # krb5: Used for Kerberos authentication. See sssd-krb5(5) for more # information on configuring this provider. # ipa: FreeIPA and Red Hat Identity Management provider. See sssd-ipa(5) # for more information on configuring this provider. # ad: Active Directory provider. See sssd-ad(5) for more information on # configuring this provider. # proxy: Used for relaying authentication to some other PAM target. # none: Disables authentication explicitly. # # Default: the value of "id_provider", if set and can handle authentication requests. auth_provider = ad
# The access control provider used for the domain. Supported control
# provider backends are:
#
# permit: Always allow access. This is also the only permitted access
# provider used when connected to a local domain.
# deny: Always deny access.
#
# allow
and deny
are two built-in access providers, in addition to any
# included in installed backends.
#
# ldap: Use the LDAP provider to get access control. See sssd-ldap(5)
# for more information on configuring this provider.
# krb5: .k5login based access control. See sssd-krb5(5) for more
# information on configuring this provider.
# ipa: FreeIPA and Red Hat Identity Management provider. See
# sssd-ipa(5) for more information on configuring this provider.
# ad: Active Directory provider. See sssd-ad(5) for more information
# on configuring this provider.
# simple: Access control based on access or deny lists. See sssd-simple(5)
# for more information on configuring this provider.
# proxy: Access provider for relaying access control to another PAM module.
#
# Default: permit
access_provider = ad
# The provider which should handle change password operations for the
# domain.Supported change password providers are:
#
# none: Disallow password changes explicitly.
# ldap: Use the LDAP provider to change a password stored in a LDAP
# server. See sssd-ldap(5) for more information on configuring
# this provider.
# krb5: Use the Kerberos provider to change the Kerberos password. See
# sssd-krb5(5) for more information on configuring this provider.
# ipa: FreeIPA and Red Hat Identity Management provider. See
# sssd-ipa(5) for more information on configuring this provider.
# ad: Active Directory provider. See sssd-ad(5) for more information
# on configuring this provider.
# proxy: Use this provider to relay password changes to some other PAM
# target.
#
# Default: Use the value of auth_provider
, provided it is set and can
# handle change password requests.
chpass_provider = ad
# The SUDO provider used for the domain. Supported SUDO providers are:
#
# none: Disable users invoking SUDO explicitly.
# ldap: Use the LDAP provider to retrieve rules stored in LDAP. See
# sssd-ldap(5) for more information on configuring LDAP.
# ipa: Use the FreeIPA and Red Hat Identity Management provider to
# retrive sudo rules. See sssd-ipa(5) for more information on
# configuring this provider.
# ad: Active Directory provider. See sssd-ad(5) for more information
# on configuring this provider.
#
# The detailed instructions for configuration of sudo_provider are in
# the manual page sssd-sudo(5). There are many configuration options
# that can be used to adjust the behavior. Please refer to "ldapsudo*" in sssd-ldap(5).
#
# NOTE: Sudo rules are periodically downloaded in the backgroundm
# unless the sudo provider is explicitly disabled.
# Set sudo_provider = none
to disable all sudo-related
# activity in SSSD.
#
# Default: Use the value of id_provider
, if set.
sudo_provider = ad
# The provider which should handle loading of SELinux settings. Supported
# SELinux providers are:
#
# none: disallows fetching SELinux settings explicitly.
# ipa: Load selinux settings from an IPA server. See sssd-ipa(5) for
# more information on configuring this provider.
#
# NOTE: This provider will be called right after the access
# provider.
#
# Default: Use the value of id_provider
, if set and can handle SELinux
# loading requests. https://github.com/SSSD/sssd/issues/7336
## selinux_provider = none
# The provider which should handle fetching of subdomains. Supported
# subdomain providers are:
#
# none: Disallow fetching subdomains explicitly.
# ipa: Load the list of subdomains from a configured IPA server.
# See sssd-ipa(5) for more information on configuring IPA.
# ad: Load the list of subdomains from a configured Active Directory
# server. See sssd-ad(5) for more information on configuring the
# AD provider.
#
# NOTE: This value should be always the same as id_provider.
#
# Default: Use the value of id_provider
, if set.
subdomains_provider = ad
# The provider which configures and manages user session related tasks.
# The only user session task currently provided with this options is the
# integration with Fleet Commander, a tool to manage and deploy desktop
# profiles across large networks under FreeIPA or Active Directory.
# https://fleet-commander.org/ for more information.
# Supported session providers are:
#
# none: does not perform any kind of user session related tasks.
# ipa: Allow performing user session related tasks. See sssd-ipa(5) for more information on configuring IPA.
#
# NOTE: In order to have this feature working as expected,
# SSSD must be running as root.
#
# Default: Use the value of id_provider
, if set and can perform
# session-related tasks.
session_provider = none
# The autofs provider used for the domain. Supported autofs providers are:
#
# none: Disable the autofs provider explicitly.
# ldap: Use the LDAP provider to load maps stored in LDAP. See
# sssd-ldap(5) for more information on configuring LDAP.
# ipa: Use the FreeIPA and Red Hat Identity Management provider to
# load maps stored in an IPA server. See sssd-ipa(5) for more
# information on configuring the IPA provider.
# ad: Use the Active Directory provider to load maps stored in an AD
# server. See sssd-ad(5) for more information on configuring the
# AD provider.
#
# Default: Use the value of id_provider
, if set.
autofs_provider = ad
# The provider used for retrieving host identity information. Supported
# hostid providers are:
#
# none: Disable retrieving hostid information explicitly.
# ipa: Use the FreeIPA and Red Hat Identity Management provider to
# load host identity stored in an IPA server. See sssd-ipa(5)
# for more information on configuring the IPA provider.
#
# Default: Use the value of id_provider
, if set.
hostid_provider = none
# The provider which should handle hosts and networks lookups. Supported
# resolver providers are:
#
# none: Disallow fetching hosts and networks explicitly.
# proxy: Forward lookups to another NSS library.
# See "proxy_resolver_lib_name" !!!! https://github.com/SSSD/sssd/issues/7337 !!!!
# ldap: Use the LDAP provider to fetch hosts and networks stored in
# LDAP. See sssd-ldap(5) for more information on configuring the
# LDAP provider.
# ad: Use the Active Directory provider to fetch hosts and networks
# stored in AD. See sssd-ad(5) for more information on configuring
# the AD provider.
#
# Default: Use the value of id_provider
, if set.
resolver_provider = ad
# Regular expression for this domain that describes how to parse the string
# containing user name and domain into these components. The "domain" can
# match either the SSSD configuration domain name. In the case of IPA use,
# trust subdomains and Active Directory domains or the flat (NetBIOS) name
# of the domain.
#
# Default: ^((?Pname>.+)@(?P<domain[^@])|(?Pre_expression
depends on the type of backend provider used.
## re_expression ==
# A printf(3)-compatible format string that describes how to compose a # fully qualified name from user name and domain name components. # The following expansions are supported: # %1$s: user name # %2$s: domain name as specified in the SSSD config file. # %3$s: domain flat name. Mostly usable for Active Directory # domains, both directly configured or discovered via IPA # trusts. # # Default: %1$s@%2$s full_name_format = %1$s@%2$s
# Choose the preferred address family to use when performing DNS lookups. # Supported values: # # ipv4_first: Try looking up IPv4 address, if that fails, try IPv6 # ipv4_only: Only attempt to resolve hostnames to IPv4 addresses. # ipv6_first: Try looking up IPv6 address, if that fails, try IPv4 # ipv6_only: Only attempt to resolve hostnames to IPv6 addresses. # # Default: ipv4_first lookup_family_order = ipv4_first
# Milliseconds SSSD would try to talk to a DNS server # before trying the next DNS server. # # https://github.com/SSSD/sssd/issues/7340 # # NOTE: If you use the AD provider, it will use this option for the # CLDAP ping timeouts as well # milliseconds are 10^-3 # # See section FAILOVER for more information about service resolution. # # Default: 1000 dns_resolver_server_timeout = 1000
# Seconds to wait to resolve a single DNS query before trying # the next DNS hostname or next DNS server in host # discovery. # # See section FAILOVER for more information about service resolution. # # Default: 3 dns_resolver_op_timeout = 3
# Seconds to wait for a reply from the internal fail over service before # assuming that the service is unreachable. If this timeout is reached, # the domain will continue to operate in offline mode. # # See section FAILOVER for more information about service resolution. # # Default: 6 dns_resolver_timeout = 6
# Configure use of the DNS resolver. The DNS resolver searches the domain # list defined in the "search" directive from the resolv.conf file. This # can lead to delays in environments with improperly configured DNS. # If fully qualified domain names or srv records are used in the SSSD # configuration, setting this option to FALSE will prevent using the # DNS resolver in such environments and prevent delays. # # Default: True dns_resolver_use_search_list = True
# Specify the domain SSSD should use, if service discovery is used in the # back end. # # https://github.com/SSSD/sssd/issues/7341 # # Default: Use the domain part of the hostname of the machine ## dns_discovery_domain =
# Override the primary GID value with the one specified. # # Default: - ## override_gid =
# Treat user and group names as case sensitive. Possible option values are:
# True: Case sensitive. This value is invalid for AD provider.
# Using this provider, user and group names are turned to
# lowercase.
# False: Case insensitive.
# Preserving: Same as False (case insensitive), but does not lowercase
# user and group names as the result of an NSS operation.
#
# NOTE 1: Regardless of the value used, name aliases, services and
# protocol names are lowercased.
#
# NOTE 2: If you have a trusted domain provided by IPA, and you want
# to set this value in any way, you need to set it to the
# same value both in this client and in the SSSD on the IPA
# server.
#
# This option can be also set per subdomain or inherited via
# the option subdomain_inherit
.
#
# Default: False for AD provider, True for all others.
case_sensitive = False
# Comma-seperated list of configuration parameters which should be # inherited by any subdomain. The following parameters are those allowed # to be inherited, currently: # ldap_search_timeout # ldap_network_timeout # ldap_opt_timeout # ldap_offline_timeout # ldap_enumeration_refresh_timeout # ldap_enumeration_refresh_offset # ldap_purge_cache_timeout # ldap_purge_cache_offset # ldap_krb5_keytab FIXME FIXME FIXME (the value of krb5_keytab will be used if ldap_krb5_keytab is not set explicitly) # ldap_krb5_ticket_lifetime # ldap_enumeration_search_timeout # ldap_connection_expire_timeout # ldap_connection_expire_offset # ldap_connection_idle_timeout # ldap_use_tokengroups # ldap_user_principal # ignore_group_members # auto_private_groups # case_sensitive # # Example: # subdomain_inherit = ldap_search_timeout,ldap_network_timeout,\ # ldap_opt_timeout,ldap_offline_timeout,ldap_enumeration_refresh_timeout,\ # ldap_enumeration_refresh_offset,ldap_purge_cache_timeout,\ # ldap_purge_cache_offset,ldap_krb5_keytab,ldap_krb5_ticket_lifetime,\ # ldap_enumeration_search_timeout,ldap_connection_expire_timeout,\ # ldap_connection_expire_offset,ldap_connection_idle_timeout,\ # ldap_use_tokengroups,ldap_user_principal,ignore_group_members,\ # auto_private_groups,case_sensitive # # NOTE: This option is available only if the provider is the IPA or the AD provider. # # Default: none ## subdomain_inherit = ldap_search_timeout,ldap_network_timeout,ldap_opt_timeout,ldap_offline_timeout,ldap_enumeration_refresh_timeout,ldap_enumeration_refresh_offset,ldap_purge_cache_timeout,ldap_purge_cache_offset,ldap_krb5_keytab,ldap_krb5_ticket_lifetime,ldap_enumeration_search_timeout,ldap_connection_expire_timeout,ldap_connection_expire_offset,ldap_connection_idle_timeout,ldap_use_tokengroups,ldap_user_principal,ignore_group_members,auto_private_groups,case_sensitive
# Set the default value for all subdomains within this domain.
# You can either provide an absolute path or printf(3)-like template.
# In the template, the same sequences are substituted, as
# in override_homedir
:
#
# %u : Login name
# %U : UID number
# %d : Domain name
# %f : Fully qualified user name (user@domain)
# %l : The first letter of the login name
# %P : UPN - User Principal Name (user@REALM or user@domain)
# %o : The original home directory retrieved from the identity provider.
# %h : The original home directory retrieved from the identity provider, but in lower case.
# %H : The value of configure option homedir_substring.
# %% : A literal '%'
#
# In subdomain_homedir
, you can additionally use:
# %F : flat (NetBIOS) name of a subdomain.
#
# NOTE: If set, this value can be overwriten by the value of the
# override_homedir
option.
#
# Default: /home/%d/%u
subdomain_homedir = /data/posit/home/%u
# Various tags stored by the realmd configuration service for this domain. # Default: - realmd_tags (string)
# Seconds since last successful online authentication where cached # credentials can be use to authenticate a user, when SSSD is in offline # mode. If the credentials are incorrect, SSSD tries to go back to online # mode and connect upstream to retry retry authenticating the user. # # https://github.com/SSSD/sssd/issues/7351 # # This value is inherited by all trusted domains. At the moment it is not # possible to set a different value per trusted domain. # # Set to 0 to disable # # NOTE: If "cached_auth_timeout" is longer than "pam_id_timeout", the # backend could be called to handle "initgroups." # # Default: 0 (disabled) cached_auth_timeout = 0
# Local-to-this-particular-system user authentication methods policy.
#
# Some backends (LDAP, proxy) support only a password-based authentication
# while others can handle
# PKINIT-based Smartcard authentication (AD, IPA)
# two-factor authentication (IPA)
# * or other methods against a central authority.
#
# In such cases, authentication is only performed with the methods supported by the backend.
#
# There are three possible values for this option
# match: Used to match offline and online states for Kerberos methods.
# only: Ignore the online methods and only offer the local ones.
# enable:
# The following configuration example allows local users to authenticate # locally using any enabled method (i.e. smartcard, passkey). # # [domain/shadowutils] # id_provider = proxy # proxy_lib_name = files # auth_provider = none # local_auth_policy = only # # The "files" provider ignores the local_auth_policy option and supports # Smartcard authentication, by default. # # Default: match local_auth_policy = match
# Handle the way private groups are created for ??? primary description of option missing ??? # There are environments that wish to stop maintaining ??? (this needs fleshing out and rewording) a separate # group objects for the user private groups ??? , but also wish to retain the existing user private groups ??? where do these private groups come from ??? # # There are three available values: # # true: Create the private group of a user ??? unconditionally ???, # using the UID number of the user as the private GID. # Essentially, this creates a seperate group for the specific # user, much like users ??? in Linux ??? have the same uid/gid. # The GID number ??? provided by who ??? is ignored in this case. # ??? Whose GID number ??? # # NOTE: Because the GID number and the user private group are # inferred from the UID number, a user cannot have multiple # ??? entries where ??? entries with the same UID or GID # when using this option: Enabling this option enforces # uniqueness across the ??? which ID ??? ID space. # # false: Always use the primary GID number ??? PROVIDED BY WHO ??? of # the user. The ??? PROVIDED BY WHO? resulting? effective ??? # ??? GID number must refer to a group object in the LDAP database. ??? ??? is this option used in LDAP only? ??? # # hybrid: Autogenerate a primary group for those user entries where UID # and GID numbers must have the same value, but the GID number # does not correspond to a ??? (are there fake group objects) # real ??? group object in LDAP. # If the primary GID of the user matches to a group object in # LDAP, set the primary GID of the user to the LDAP group object # # If the ??? LDAP provided ??? UID and GID of a user are different # then the GID must correspond to a group entry ??? Where ???. # If the GID does not correspond ??? to a group entry in LDAP ??? # then the GID is simply not resolvable ??? what does this mean? What are the consequences ??? # # The value of auto_private_groups can either be set per subdomains in a # seperate subsection, for example: # # [domain/forest.domain/sub.domain] # auto_private_groups = false # # or globally for all subdomains in the main forest domain section using # the subdomain_inherit option: # # [domain/forest.domain] # subdomain_inherit = auto_private_groups # auto_private_groups = false # # Default: False for subdomains which use ??? what are assigned POSIX IDs??? assigned POSIX IDs; True for subdomains which use automatic ID-mapping. auto_private_groups = False
# The proxy target PAM proxies to. ??? please expand and give references ?? # # ??? Under what conditions would one use this option ?? # # If set, you have to assign an existing pam configuration or create a new # one and add the service name here. As an alternative, you can enable local # authentication with the local_auth_policy option. # ??? fleshing out, maybe example? ??? # # Default: Not set by default. ## proxy_pam_target =
# The name of the NSS library to use in proxy domains. The NSS functions
# searched for in the library are in the form of
# _nss_$(libName)_$(function)
. For example, _nss_files_getpwent
.
#
# https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/deployment_guide/domain_configuration_options-configuring_a_proxy_domain\#:~:text=A%20proxy%20with%20SSSD%20is,not%20be%20able%20to%20use .
# Specify which existing NSS library to proxy identity requests through ??? more fleshing out would be nice, even if its from RedHat docs ???
# The proxy library is loaded using the proxy_lib_name parameter. ??? why do we want to do that ???
#
# Default: Not set by default.
## proxy_lib_name =
# The name of the NSS library to use for hosts and networks lookups in
# proxy domains. The NSS functions searched for in the library are in
# the form of _nss_$(libName)_$(function)
, for example _nss_dns_gethostbyname2_r
.
#
# ??? Why would a sysadmin want to set this? what is the use case? what are the consequences ???
# ??? Maybe make a small section to explain? or point to the relevant places in the sssd-proxy ???
#
# Default: Not set by default
## proxy_resolver_lib_name =
# When looking up a user or group by name in the proxy provider, a second # lookup by ??? what type of ??? ID is performed. We ask the provider if # the name of the user or the group submited is the primary name/object or # an alias. If it is an alias, we retried the primary name/object. # Setting this option to true would cause the SSSD to perform the ??? ID # lookup from cache for performance reasons. ??? rewording? expanding? # # Default: False proxy_fast_alias = False
# Specify the number of pre-forked proxy children when using the proxy # provider. Useful for high-load SSSD environments where sssd may run out # of available child slots ??? what is a child slot ???. ??? Allowing too many # forks would cause issues, either due to blocking or resource contention. ??? # # Default: 10 proxy_max_children = 10
# [Application domains]
# each section can have a 'description' variable # description = "The Application domains SSSD daemon configuration section"
# SSSD utilizes the Linux system D-bus[1] , via it's D-bus
# interface ( sssd-ifp(5) ). As such, SSSD can be used to proxy any
# D-bus-enabled application to any of the authentication and authorization
# mechanisms available to SSSD.
#
# SSSD, as a Linux-based application, uses POSIX attributes to match
# users and file ownership, meaning, it utilizes User IDs (uid) and Group
# IDs (gid). For applications which have their own, non-POSIX compliant
# user management system, SSSD can be configured as a bridge between the
# app and POSIX. That is done either by inferring the uid/gid in the case
# of the AD provider or by creating the required POSIX attributes and
# keeping track of them.
#
# This is where application domains come into play: The system administrator
# can configure a section for the specific application and can proxy calls
# to AD or LDAP, for example, even if the original application is unaware
# of such. The administrator can either configure the application by itself
# or have it inherit properties from a domain. Application domain are
# defined as [application/NAME_OF_APPLICATION]
. We will explain domain
# property inheritance through the following example:
#
# [sssd]
# description = "Partial, relevant SSSD configuration"
# domains = appdom, posixdom
#
# [ifp]
# description = "sssd-ipf(5) is the Linux D-Bus provider"
# user_attributes = +phone
#
# [domain/posixdom]
# description = "definition and properties for domain posixdom. This domain uses POSIX attributes such as uid, gid and extended groups the user may be part of"
# id_provider = ldap
# ldap_uri = ldap://ldap.example.com
# ldap_search_base = dc=example,dc=com
#
# [application/appdom]
# description = "definition of the application domain appdom. This appilcation domain inherits the properties of the posixdom domain via the inherit_from property"
# inherit_from = posixdom
# ldap_user_extra_attrs = phone:telephoneNumber
#
# In this setup, we have two domains:
# 1. One authentication domain using LDAP ( [domain/posixdom] )
# 2. One application domain ( [application/appdom] )
#
# SSSD listens?subscribes? to the D-Bus for calls from the appdom
# application, proxies authentication connections
# to ldap://ldap.example.com
and returns the relevant information to the
# application. In addition, SSSD requests the telephoneNumber LDAP attribute
# and stores it as the phone attribute in the ??? which cache ??? cache. SSSD
# then, makes the phone attribute accesible to the application via D-Bus. As
# long as you know what is the name of the property the application requests,
# the application can retrieve the value of the property through the D-Bus
# interface.
#
# NOTE: If you set up an application domain, you must explicitly
# declare it in the [sssd] "domains" parameter. Not declaring
# the application domain will confuse the lookup order between
# the application domain and its POSIX parent domain. ??? is set correctly ??? clarify please
#
# ??? it is unclear how SSSD matches +phone to phone:telephoneNumber, since the two properties do not have the same name . ??? please expand
# ??? is is also unclear how SSSD manages non-POSIX applications, especially the persistance of any translated values ??? please expand
# ??? Also unclear: does SSSD force POSIX translation, or just proxies the connection ???
#
# For more information, see sssd-ifp(5)
#
# All authorization domain properties can be inherited into an application
# domain. That is done via the inherit_from
application domain parameter:
#
# inherit_from (string)
#
# The SSSD authorization domain the application domain inherits all
# settings from. The system administrator can further configure additional
# application domain properties to the application domain. Any application
# domain properties provided will either augment or override the parent
# domain properties.
#
# Default: Not set
#
# References:
# [1] D-Bus: https://www.freedesktop.org/wiki/Software/dbus/
# [2] POSIX standard: https://posix.opengroup.org/docs/base-2003.html
# https://posix.opengroup.org/docs/base-2016.html
# TRUSTED DOMAINS
#
# A trusted domain is an Active Directory domain that establishes trust
# relationships with other AD domains, allowing users in one domain to
# access resources in another. It is Microsoft Windows Server terminology
# and has been a technology available ever since Windows Server ??? 2006 ???.
# Speciffically, an Active Directory forest is the highest-level logical
# container in an Active Directory setup, housing domains, users, computers
# and group policies[1]. SSSD, allows allows you to replicate that behavior
# of Microsoft Server, so that a sysadmin can offer similar authentication
# and authorization services under Linux. Active Directory is LDAP, Kerberos
# and SMB/CIFS combined. In Linux SSSD brings all those protocols together.
# Lets go through an example:
#
# Let us assume you are the system administrator in charge of a media
# company that owns multiple media outlets. Each media outlet is distinct
# but the IT storage is shared between multiple editors and journalists
# in each individual media outlet. Let us name the media company Linux Tech Tips
.
# The media outlets under that company are named idropthings.foo
and
# destroyhardware.bar
. As a system administrator, you can define a
# domain and the individual trusted domains in SSSD for such a media company
# this way:
#
# [domain/linuxtechtips.bom]
# property1 = text1
# property2 = text2
# ...
#
# [domain/linuxtechtips.bom/idropthings.foo]
# property1_for_this_trusted_domain_only = text1
# property2_for_this_trusted_domain_only = text2
# ...
#
# [domain/linuxtechtips.bom/destroyhardware.bar]
# property1_for_this_trusted_domain_only = text1
# property2_for_this_trusted_domain_only = text2
# ...
#
# Most of the options in [domain/linuxtechtips.com]
are inherited both
# by [domain/linuxtechtips.bom/idropthings.foo]
and by
# [domain/linuxtechtips.bom/destroyhardware.bar]
.
# There are options, though, which can be used only in a trusted domain.
# Specifically, those are:
#
# ldap_search_base
# ldap_user_search_base
# ldap_group_search_base
# ldap_netgroup_search_base
# ldap_service_search_base
# ldap_sasl_mech
# ad_server
# ad_backup_server
# ad_site
# use_fully_qualified_names
# pam_gssapi_services
# pam_gssapi_check_upn
#
# There are
#
# For more details about these options see their individual description in this manual page.
#
# [1] For more information: https://learn.microsoft.com/en-us/windows-server/identity/ad-ds/plan/using-the-organizational-domain-forest-model
#
# ??? There needs to be more fleshing out how each trusted domain interacts with each other: do they just inherit properties or can you map the property of one trusted domain to another? ???
# ??? Also, more fleshing out needs to happen about inheritance ???
# ??? Also, all the above mentioned properties: are they specifically used in trusted domains or they are those properties which are explicitelly inherrited from the top/forest/base(?) domain? ???
# [certificate mapping]
# each section can have a 'description' variable # description = "The Certificate Mapping SSSD daemon configuration section"
# SSSD can be configured to allow authentication with smartcards and SSL/PEM
# certificates. In order to use such means of authentication, SSSD must be
# able to map either type of certificate (card, SSL) to a user. This is done
# in two ways:
# 1. Embed the full certificate in the LDAP object of the user
# ??? which attribute, specifically ??? ??? How does SSSD know which attribute to look up???
# 2. Direct SSSD to a certificate on disk or ??? other means ??? ( local override )
#
# When using smartcard authentication, one must use the full certificate. ??? what full certificate? please expand ???
# ??? is there a reason the 'S' in smartcard is capitalized ???
# ??? sss_ssh_authorizedkeys(8) does not exist ???
# ??? how sss_ssh_authorizedkeys(1) has anything to do with certs?
# please expand ???
# When using PAM for authentication, using a certificate might be
# cumbersome or not even possible. ??? How? Why is it mentioned here? what is the relevancy? ???
# ??? if such an ability is given, give reference(s) to relevant guides ???
#
# SSSD provides matching rules to map certificates to their respective
# users. This is done by creating a section
# [certmap/DOMAIN_NAME/RULE_NAME]
# In the case of our example media company, this would be
# [certmap/linuxtechtips.bom/fido_key_for_pod_bay_doors]
,
# given that a FIDO hardware key was required to access the pod bay doors.
#
# ??? What is the order of precedence? must the domain be declared before such a rule ???
# ??? Must the domain be joined for the rule to be applicable? what happens when we join and then leave the domain? is there a relevant error ???
#
# The "files" provider has some built-in special properties:
#
# If maprule
is not set for the specific rule, SSSD assigns the name
# of the matching user to maprule
as RULE_NAME
# If a maprule is used both ??? a single user name or a template like
# "{subject_rfc822_name.short_name}" must be in braces. Example:
# "(username)" or "({subject_rfc822_name.short_name})"
# ??? this makes no sense, please expand. Do you mean the maprule value matches both the username and the template name? ???
# ??? why is subject_rfc822_name
mentioned here? what is short_name
? why does (username)
have no braces? please expand ???
# * The file provider ignores the value of the "domains" option ??? How does that help? what are the side effects? ???
#
# To get an idea of the use cases for certificate matching, please take a
# look at the relevant design document "Matching and Mapping certificates"
# at https://sssd.io/design-pages/matching_and_mapping_certificates.html
#
# ??? Rules can be inherited and prioritized over other rules. For an example of how rules are
# inheritted and priotirized, please see Example sub-section C
in the EXAMPLES
section ???
#
# SSSD certiticate matching sections utilize the following options to
# facilitate matching:
# ??? can these properties be used more than once per section? or one rule per user? ???
# Process only the certificates in the smartcard which match this
# rule(???s???) . All other certificates are ignored.
# Default: KRB5:
# Tell SSSD how to match each user with each certificate. Providers
# supported are either LDAP-based providers (ldap, AD or IPA) or the
# files provider.
#
# For the LDAP-based providers, SSSD searches the provider for a specific
# LDAP value. For the files provider, SSSD searches the disk? path? section?
# for RULE_NAME to match the provided certificate with the user. ??? is this correct ???
#
# Default:
#
# LDAP:(userCertificate;binary={cert!bin}) for the LDAP-based providers
# The RULE_NAME for the "files" provider which tries to find a user with the same name.
# ??? "which tries to find a user with the same name" this needs expanding ???
#
## maprule =
# Comma separated list of domain names the rule should be applied for. # By default, a rule is only valid in the ??? domain | is this supposed to be singular? ??? configured in sssd.conf. # If the provider supports subdomains, this option is inherited to all subdomains, trusted and otherwise ??? check validity of statement ???. # # Default: the configured domain in [sssd], contained in the domains property value ## domains =
# Define rule priority ??? over other rules ???, by assigning an # unsigned integer value. Priority is given to the rule with the smallest # value: The higher the number, the lower the priority. "0" stands for the # highest priority while "4294967295" ( MAX_UINT ) is the lowest. # ??? kind of counter-intuitive, but ok ??? # # Default: the lowest priority ??? expand please: ??? # ??? what happens if sysadmin gives two rules the same priority ??? # ??? what happens if sysadmin forgets to assign a rule priority ??? # priority =
# [prompting configuration]
# each section can have a 'description' variable # description = "The section where we tell the SSSD daemon how to prompt users for authentication"
# You can configure the prompt SSSD presents to the user, both for a password
# prompt and for a two-factor authentication (2FA) prompt. ??? That way you
# can insert unique signatures in your prompt ??? What is the reason to do so?
#
# To configure the prompt for each type of authenentication, you have to set
# either [prompting/password]
or [prompting/2fa]
. Each section supports
# the following options:
#
# [prompting/password]
# # Configure the prompt shown ??? to who? how? ??
# password_prompt =
#
# [prompting/2fa]
# # Change the string of the prompt for the first factor ??? what does that look like to the user? who does the prompting? ???
# first_prompt =
# # Change the string of the prompt for the second factor ??? what does that look like to the user? who does the prompting? ???
# second_prompt =
# # Enable or disable a single, unified prompt for both the first and the
# # second factor. If set to True
, there will be only a single prompt.
# # That prompt will use the value of first_prompt
. The user is
# # expected to enter both factors as a single string.
# ??? EXAMPLE: How will the user do that? What will it look like to the user? how does the user seperate the password from the 2FA token? ???
# single_prompt =
#
# ??? Please note that both factors have to be entered here, even if the second factor is optional. ??? in the boolean value? please expand ???
# ??? If the second factor is optional and it should be possible to log in either only with the password or with both factors two-step prompting has to be used. ??? unclear. Rephrased below, please check validity: ???
# NOTE: When utilizing 2FA, [prompting/2fa].first_prompt
and
# [prompting/2fa].second_prompt
have to be set, regardless
# if the second factor is optional or not.
#
# The sysadmin can further granulize 2FA prompting use to services, by
# adding a subsection with 2FA prompting as
# [prompting/password/PAM_SERVICE_NAME]
# For example:
# [prompting/password/sshd]
# password_prompt = "Password prompting for the SSH daemon"
#
# ??? Check validity: This will change the password prompt for the SSH
# daemon from the PAM prompt "Password:" to
# "Password prompting for the SSH daemon" ???
#
# All services listed under /etc/pam.d/
are valid values.
#
# > If a special file (/var/lib/sss/pubconf/pam_preauth_available) exists SSSD's PAM module pam_sss will ask SSSD to figure out which authentication methods are available for the user trying to log in. Based on the results pam_sss will prompt the user for appropriate credentials. # I have no clue how to fit this in here and if it should even be here. Please help.
# [EXAMPLES]
# each section can have a 'description' variable # description = "The example configuration section"
# In this section we will illustrate examples of various SSSD configurations
# using the built-in SSSD mechanisms and services. Specifically we have:
#
# A. Typical configurations
# Typical configurations include the minimal needed properties to allow
# users in a centrally-managed infastructure to log into the computer the
# SSSD daemon is running on.+
# 1. A typical SSSD configuration using the LDAP provider
# 2. A typical SSSD configuration using the AD provider
# If set to True, all requests to this domain must use fully qualified
# names. For example, if used in LOCAL domain that contains a "test" user,
# getent passwd test would not find the user while getent passwd test@LOCAL
# would.
# ----------------------------------------------------------------------
# Example:
# subdomain_inherit = ldap_search_timeout,ldap_network_timeout,\
# ldap_opt_timeout,ldap_offline_timeout,ldap_enumeration_refresh_timeout,\
# ldap_enumeration_refresh_offset,ldap_purge_cache_timeout,\
# ldap_purge_cache_offset,ldap_krb5_keytab,ldap_krb5_ticket_lifetime,\
# ldap_enumeration_search_timeout,ldap_connection_expire_timeout,\
# ldap_connection_expire_offset,ldap_connection_idle_timeout,\
# ldap_use_tokengroups,ldap_user_principal,ignore_group_members,\
# auto_private_groups,case_sensitive
# ----------------------------------------------------------------------
# The following configuration example allows local users to authenticate
# locally using any enabled method (i.e. smartcard, passkey).
#
# [domain/shadowutils]
# id_provider = proxy
# proxy_lib_name = files
# auth_provider = none
# local_auth_policy = only
# ----------------------------------------------------------------------
# The value of auto_private_groups can either be set per subdomains in a
# seperate subsection, for example:
#
# [domain/forest.domain/sub.domain]
# auto_private_groups = false
#
# or globally for all subdomains in the main forest domain section using
# the subdomain_inherit option:
#
# [domain/forest.domain]
# subdomain_inherit = auto_private_groups
# auto_private_groups = false
# ----------------------------------------------------------------------
# ??? fleshing out, maybe example? ???
# Default: Not set by default.
# proxy_pam_target =
# ----------------------------------------------------------------------
# searched for in the library are in the form of
# _nss_$(libName)_$(function)
. For example, _nss_files_getpwent
.
# proxy_lib_name =
# proxy_resolver_lib_name =
# ----------------------------------------------------------------------
#
# 3. A typical SSSD configuration using the Kerberos provider
# 4. A typical SSSD configuration using the IPA provider
# 5. A typical SSSD configuration using the files provider
#
# B. Extended configurations
# 1. An extended SSSD configuration using the LDAP provider
# 2. A typical SSSD configuration using the AD provider
# 3. An extended SSSD configuration using the Kerberos provider
# Default: ENV:KRB5CCNAME:sudo, ENV:KRB5CCNAME:sudo-i
# Example: -ENV:KRB5CCNAME:sudo-i will remove the filter from the default
# list
# pam_response_filter = ENV:KRB5CCNAME:sudo, ENV:KRB5CCNAME:sudo-i
# 4. An extended SSSD configuration using the IPA provider
# 5. An extended SSSD configuration using the files provider
#
# C. Configurations with inheritance
# 1. SSSD configuration using the LDAP provider
# 2. SSSD configuration using the AD provider
# 3. SSSD configuration using the Kerberos provider
# 4. SSSD configuration using the IPA provider
# 5. SSSD configuration using the files provider
#
# D. Configurations using services
# Example:
## # pam_p11_allowed_services = +my_pam_service, -login
# This allows a custom PAM service name ("my_pam_service") and disables
# ----------------------------------------------------------------------
# # Example:
# p11_uri = pkcs11:slot-description=My%20Smartcard%20Reader
# or
# p11_uri = pkcs11:library-description=OpenSC%20smartcard%20framework;slot-id=2
# ----------------------------------------------------------------------
# Example:
# pam_gssapi_services = sudo, sudo-i
# ----------------------------------------------------------------------
# Example: Require access to SUDO services only for users which
# obtained their Kerberos tickets with a X.509 certificate
# pre-authentication (PKINIT)
# pam_gssapi_indicators_map = sudo:pkinit, sudo-i:pkinit
# ----------------------------------------------------------------------
#
# 1. SSSD services configuration using the LDAP provider
# 2. SSSD services configuration using the AD provider
# 3. SSSD services configuration using the Kerberos provider
# 4. SSSD services configuration using the IPA provider
# The typical example is a FreeIPA domain where 'ldap_user_principal'
# is set to a not existing attribute name.
# 5. SSSD services configuration using the files provider
#
# E. Configuration using Application domains
# 1. SSSD configuration using the LDAP provider
# [sssd]
# description = "Partial, relevant SSSD configuration"
# domains = appdom, posixdom
#
# [ifp]
# description = "sssd-ipf(5) is the Linux D-Bus provider"
# user_attributes = +phone
#
# [domain/posixdom]
# description = "definition and properties for domain posixdom. This domain uses POSIX attributes such as uid, gid and extended groups the user may be part of"
# id_provider = ldap
# ldap_uri = ldap://ldap.example.com
# ldap_search_base = dc=example,dc=com
#
# [application/appdom]
# description = "definition of the application domain appdom. This appilcation domain inherits the properties of the posixdom domain via the inherit_from property"
# inherit_from = posixdom
# ldap_user_extra_attrs = phone:telephoneNumber
# ----------------------------------------------------------------------
#
# 2. SSSD configuration using the AD provider
# 3. SSSD configuration using the Kerberos provider
# 4. SSSD configuration using the IPA provider
# 5. SSSD configuration using the files provider
#
# F. Configurations with Trusted Domains
# 1. SSSD Trusted Domains configuration using the LDAP provider
# 2. SSSD Trusted Domains configuration using the AD provider
# 3. SSSD Trusted Domains configuration using the Kerberos provider
# 4. SSSD Trusted Domains configuration using the IPA provider
# 5. SSSD Trusted Domains configuration using the files provider
#
# G. Configurations with Certificate Mapping
# 0. Small Introduction
# Further resources
# 1. SSSD Trusted Domains configuration using the LDAP provider
# 2. SSSD Trusted Domains configuration using the AD provider
# 3. SSSD Trusted Domains configuration using the Kerberos provider
# 4. SSSD Trusted Domains configuration using the IPA provider
# 5. SSSD Trusted Domains configuration using the files provider
#
# H. Configurations with 2FA and multi-factor authentication
# 0. Small Introduction
# Further resources
# 1. SSSD 2FA configuration using the LDAP provider
# 2. SSSD 2FA configuration using the AD provider
# 3. SSSD 2FA configuration using the Kerberos provider
# 4. SSSD 2FA configuration using the IPA provider
# 5. SSSD 2FA configuration using the files provider
#
#
# ----------------------------------------------------------------------
#
# A.1: A typical SSSD configuration using the LDAP provider
#
# The following example shows a typical SSSD config using the LDAP
# provider.
#
# [sssd]
# domains = LDAP
# services = nss, pam
# config_file_version = 2
#
# [nss]
# filter_groups = root
# filter_users = root
#
# [pam]
#
# [domain/LDAP]
# id_provider = ldap
# ldap_uri = ldap://ldap.example.com
# ldap_search_base = dc=example,dc=com
# auth_provider = krb5
# krb5_server = kerberos.example.com
# krb5_realm = EXAMPLE.COM
# cache_credentials = true
# enumerate = False
# min_id = 10000
# max_id = 20000
#
# In [sssd]
, we define a domain called LDAP
, which has two services.
# We also explicitelly set the version of the config file ??? because why ??? .
#
# In the [nss] section we filter the root user and the root group, so they \# will not be able to log in. The [pam] section has no properties ??? why not ??? \# \# In the domain
[domain/LDAP], we tell SSSD that it will be using the \# LDAP provider to ??? authenticate ??? users. We set the LDAP URI and \# give the string where the search base will take place. For authorization \# to sign into LDAP, we use a Kerberos token, hence the definition of a \# Kerberos server and a Kerberos realm. We instruct SSSD to cache any \# credentials it comes by and we tell it to not pre-enumerate all the \# object IDs in LDAP. Setting enumerate to True will certainly make the \# later access faster, but it will take a long time to go through the \# entire LDAP catalogue, especially since searching in LDAP is O(n) \# Lastly, we set the minimum and maximum user ID, 10000 and 20000, \# respectivelly. \# \# ??? What happens if we need to lower the value of min_id? ??? \# ??? What happens if we need to increase the value of max_id? ??? \# ??? Do we need to do some user renumbering? \# \# ---------------------------------------------------------------------- \# \# F.4: SSSD Trusted Domains configuration using the IPA provider \# In this example we have an AD forest in order to demonstrate a \# parent-child relationship. The forest consists of two domains, \#
ipa.comand
ad.com.
ad.comhas a DNS subdomain,
child.ad.com \# \# We want to use short domain names to save time in
child.ad.com` ??? to save time typing ???
#
# [domain/ipa.com/child.ad.com]
# use_fully_qualified_names = false
#
# ??? This example needs expansion, along with all inherited and trusted domains.
# ??? The following example shows configuration of IPA AD trust ??? not clear, please explain
#
#
# G.0: Configurations with Certificate Mapping
# The following example shows the configuration of a certificate mapping
# rule. The rule is valid for the configured domain "my.domain" and for
# the subdomains "your.domain". It uses the certificate from LDAP in
# the search filter ??? which causes what ???
#
#
# [certmap/my.domain/rule_name]
# matchrule =
# SEE ALSO # # ??? maybe expand here what each man page contains? one line per man page ???? # # sssd(8), sssd.conf(5), sssd-ldap(5), sssd-ldap-attributes(5), sssd-krb5(5), # sssd-simple(5), sssd-ipa(5), sssd-ad(5), sssd-files(5), sssd-sudo(5), # sssd-session-recording(5), sss_cache(8), sss_debuglevel(8), sss_obfuscate(8), # sss_seed(8), sssd_krb5_locator_plugin(8), sss_ssh_authorizedkeys(8), # sss_ssh_knownhostsproxy(8), sssd-ifp(5), pam_sss(8). sss_rpcidmapd(5)
[domain/mydomain.on] default_shell = /bin/bash krb5_store_password_if_offline = True cache_credentials = False krb5_realm = MYDOMAIN.ON realmd_tags = manages-system joined-with-adcli fallback_homedir = /data/posit/home/%u ad_domain = mydomain.on ldap_id_mapping = True #ad_gpo_map_service = +rstudio
Not sure I understand what the problem is but, may this be related to https://github.com/SSSD/sssd/issues/7449 ?
Not sure I understand what the problem is but, may this be related to #7449 ?
it's not a problem per say, but the default sssd distribution does not involve an example sssd.conf, which, I, as a sysadmin, can go through and read and get a quick-ish understanding what is going on and how to configure a domain, before I dive into the man page.
This goes with my other submissions re: man pages (see tag man-pages
): I said that I would come back and we could discuss all the proposed changes after I read through man(5) sssd.conf , which I did and god it was a headache. I also said that I would submit a sample sssd.conf which could be adapted to distribute, so fellow sysadmins can decide at the beginning if they should go through all 1500 lines or hit the man page. Imho, a UI (text or graphical) would help mitigate a lot of of headaches for first time users that want extensive configuration.
Edit: also there are things that need to be discussed in this one, too, with dups, maybe, marked with ???
tl;dr: sample sssd.conf missing, submitted the one I made.
# # /etc/sssd/sssd.conf : Configuration file for sssd and all its subservices # sssd.conf(5) # 2024-02-28 George Marselis george.marselis@vetinst.no
# FILE FORMAT # # The file has an ini-style syntax and consists of sections and parameters. # A section begins with the name of the section in square brackets, # e.g. [sssd] . It continues until the next section begins. Here is an # example of the general BNF syntax of a section, utilizing single # and multi-valued parameters: # # [section] # key = value # key2 = value2,value3 # # DATA TYPES FOR VALUES # # The data types used for the values are string , integer and boolean. # Quoting is not required. # # COMMENTING # # A comment line starts with a hash sign '#' or a # semicolon ';'. Inline comments are not supported. # # CASE SENSITIVE values ? https://github.com/SSSD/sssd/issues/7345 # # All sections can have an optional description parameter, purely as a # label for the section. ???? DISCARDED DURING PARSIN? # # FILE, FILE OWNERSHIP AND FILE PERMISSIONS # # sssd.conf must be a regular file. It must be owned by root:root only, and # read/write by root only. # Incorrect file permissions will prevent the daemon from starting. https://github.com/SSSD/sssd/issues/7346
# File is made up of the following sections: # [sssd] # [nss] # [pam] # [sudo] # [autofs] # [ssh] # [pac] # [rec] # [domain/YOUR_DOMAIN] # # Each section corresponds to the configuraion of an SSSD subprocess. You # can break down each section in sssd/conf.d/ . Only files ending in .conf # are read. Each file under sssd/conf.d/ is lexicographically added to # create the main sssd/sssd.conf file in memory. # # The parameters for each of the subprocesses of SSSD can be found their # relevant man pages: # pam_sss (8) - PAM module for SSSD # pam_sss_gss (8) - PAM module for SSSD GSSAPI authentication # sss-certmap (5) - SSSD Certificate Matching and Mapping Rules # sss_cache (8) - perform cache cleanup # sss_obfuscate (8) - obfuscate a clear text password # sss_override (8) - create local overrides of user and group attributes # sss_rpcidmapd (5) - sss plugin configuration directives for rpc.idmapd # sss_seed (8) - seed the SSSD cache with a user # sss_ssh_authorizedkeys (1) - get OpenSSH authorized keys # sss_ssh_knownhostsproxy (1) - get OpenSSH host keys # sssd-ad (5) - SSSD Active Directory provider # sssd-files (5) - SSSD files provider # sssd-ifp (5) - SSSD InfoPipe responder # sssd-ipa (5) - SSSD IPA provider # sssd-kcm (8) - SSSD Kerberos Cache Manager # sssd-krb5 (5) - SSSD Kerberos provider # sssd-ldap (5) - SSSD LDAP provider # sssd-ldap-attributes (5) - SSSD LDAP Provider: Mapping Attributes # sssd-session-recording (5) - Configuring session recording with SSSD # sssd-simple (5) - the configuration file for the 'simple' access-control provider of SSSD # sssd-sudo (5) - Configuring sudo with the SSSD back end # systemtap (5) - SSSD systemtap information # sssd_krb5_localauth_plugin (8) - Kerberos local authorization plugin # sssd_krb5_locator_plugin (8) - Kerberos locator plugin
# # FIXME FIXME FIXME what happens if a section is duplicate? #
[sssd]
# each section can have a 'description' variable description = "The sss daemon configuration section"
# Output Fatal failures, Critical failures, Serious failures, Minor failures, # Configuration settings, Function data, Trace messages for operation # functions and Trace messages for internal control functions # 0-10, 10 max # Also see sssctl debug-level debug_level = 7
# Indicate what the syntax version of the config file. SSSD 0.6.0 and # later use version 2 config_file_version = 2
# Comma separated list of services that are started when sssd itself starts. # The list of services is optional on platforms where systemd is supported, # as they will either be socket or D-Bus activated when needed. # By default, all services are disabled and the administrator must enable # the ones allowed to be used by executing # for service in $( echo "nss pam sudo autofs ssh pac ifp"); do \ # systemctl enable sssd-$service.socket; done # and # for service in $( echo "nss pam sudo autofs ssh pac ifp"); do \ # systemctl enable sssd-$service.service; done services = nss,pam,sudo,autofs,ssh,pac,ifp
# Number of times services should attempt to reconnect in the event of # a Data Provider crash or restart, before they give up # Default: 3 reconnection_retries = 3
# A domain is a database containing user information. SSSD can use more # domains at the same time, but at least one must be configured or SSSD # won't start. This parameter describes the list of domains in the order # you want them to be queried. A domain name is recommended to contain # only alphanumeric ASCII characters, dashes, dots and underscores. # '/' character is forbidden. domains = vetinst.no
# The default regular expression that describes how to parse the string # containing the user name and the domain into individual components. # Each domain can also have an individual regular expression configured. # For some ID providers there are also default regular expressions. # See sssd.conf(5) DOMAIN SECTIONS for more info on these regular expressions. ## re_expression =
# A printf(3)-compatible format that describes how to compose a fully # qualified name from the user name and domain name components. ## full_name_format =
# Monitor the state of resolv.conf to identify when there is a need to update # the internal DNS resolver. monitor_resolv_conf = True
# SSD will attempt to use inotify to monitor configuration files changes # and will fall back to polling every five seconds if inotify cannot be used. try_inotify = True
# the name of the default replay cache. The default is dfl: (domain functional # level. It is subject to parameter expansion according to platform # it set with a default value in /etc/krb5.conf , so leave this alone # and commented out ##krb5_rcache_dir = # # Default domain name for all names without a domain name component. Used when # the primary domain is intended for managing host policies and all users are # located in a trusted domain # # Setting this option changes default of use_fully_qualified_names to True. # It is not allowed to use this option together with use_fully_qualified_names # set to False. see man(5) sssd.conf for detqails ##default_domain_suffix = # # Replace spaces (space bar) with the given character for user and group # names. Used for compatibility with shell scripts that have difficulty # handling spaces, due to the default field separator in the shell. ## override_space =
# Restrict/tune certificate verification. Options are comma-seperated. # Valid options: # no_ocsp, soft_ocsp, ocsp_dgst=sha1|sha256|sha384|sha512, # no_verification, partial_chain, ocsp_default_responder=URL, # ocsp_default_responder_signing_cert=NAME, # crl_file=/PATH/TO/CRL/FILE, soft_crl # # Default: do not restrict certificate verification ## certificate_verification =
# Monitor changes to routes, addresses, links and trigger appropriate actions # for sssd. Disabling this is desireable when the state should not affect sssd # Default : False disable_netlink = False
# If you enable this option, a small implicit domain, like so: # [domain/files] # id_provider = files # # The implicit domain is prepended before any explicitely ones. # The effect is that local files (/etc/passwd, /etc/group, etc) # are mirrored/ingested into sssd. Also, provides efficient caching of # local users and groups. # Look into sssd-files(5) for more details # # Default : False ## enable_files_domain = False
# Comma separated list of domains and subdomains representing the lookup # order that will be followed. # Order of lookup may be important when the same username/uid exists in # multiple domains, but not the full name format is used to log in the user # # Default: Do not set, unless you need it ## domain_resolution_order = vetinst.no
# A PAC (Privilege Attribute Certificate) is a data structure used in # Microsoft Windows environments for representing a user's security # privileges and group memberships. It contains information such as group # memberships of a user, authorization data, and other security-related # attributes # #
implicit_pac_responder = True
enables the SSSD (System Security Services # Daemon) to automatically respond to requests for PAC data, which is needed # for certain Windows authentication scenarios, such as AD domain # authentication, cross-domain authentication, Kerberos Constrained # Delegation ( allow a service to impersonate a user and access resources on # behalf of that user ) and Authorization and Access Control. # # Defaul: True implicit_pac_responder = True# General system hardening: setting it to 'false' forbids core dumps for all # SSSD processes to avoid leaking plain text passwords # # Default: True core_dumpable = True
[nss]
# each section can have a 'description' variable description = "The sss_nss sub-process configuration section"
# Output Fatal failures, Critical failures, Serious failures, Minor failures, # Configuration settings, Function data, Trace messages for operation # functions and Trace messages for internal control functions # 0-10, 10 max # Also sssctl debug-level debug_level = 7
# Number of times services should attempt to reconnect in the event of a # Data Provider crash or restart before they give up # Default: 3 reconnection_retries = 3
# Maximum number of file descriptors that may be opened at one time by this # SSSD process. # # Default: 8192 (or limits.conf "hard" limit) # Let this be decided dynamically ## fd_limit = 8192
# Seconds that a client of an SSSD process can hold onto a file descriptor # without communicating on it. Limited in order to avoid resource # exhaustion on the system. # # Default = 60 (if lower than 10, it will be reset to 10) # Exception: Kerberos Credential Manager (KCM), time out # is 300 seconds/5 minutes # Discrepancy might be due to different default settings and behaviors # between the SSSD configuration and the KCM component itself. client_idle_timeout = 60
# Seconds that an SSSD responder process can be up without being used. # Limited to avoid resource exhaustion. # # NOTE: Only has effect when SSSD is built with systemd support and # when services are either socket or D-Bus activated. # # Default: 300 responder_idle_timeout = 300
# Specify whether the responder should query all caches before querying # the Data Providers # # NOTE: we do not cache credentials, we proxy from AD. # # Default: False cache_first = False
# Seconds sss_nss should cache enumerations: the requests for info about # all users # # Default: 120 enum_cache_timeout = 120
# Automatically update entries in the background if they are requested # beyond a percentage of the entry_cache_timeout value for the domain. # # Default: 50 | Valid values: 0-99, 0 to disable entry_cache_nowait_percentage = 50
# Seconds sss_nss should cache negative cache hits (queries for invalid # database entries) before asking again. # # Default: 15 entry_negative_timeout = 15
# Seconds sss_nss should keep local users and groups in negative cache # before trying to look them up in the back end again. # # Default: 14400 (4 hours) | 0 disables the feature local_negative_timeout = 14400
# Exclude certain users from being fetched from the NSS database of the # daemon. This is particularly useful for system accounts. This option # can also be set per-domain or include fully-qualified names to filter # only users from the particular domain or by a user principal name (UPN). # # Default: root filter_users = root
# Exclude certain groups from being fetched from the NSS database of the # daemon. This is particularly useful for system groups. This option # can also be set per-domain or include fully-qualified names to filter # only users from the particular domain or by a user principal name (UPN). # # NOTE: The filter_groups option doesn't affect inheritance of nested group # members, since filtering happens after they are propagated for # returning via NSS: a super group having a member group filtered out # will still have the member users of the member group listed. # # Default: root filter_groups = root
# Enable membership of filtered users as group members. Disable if # not desired. # # Default: True filter_users_in_groups = True
# Override the location of the home directory of a user. You can either # provide an absolute value or a template. In the template, the following # sequences are substituted: # # %u : Login name # %U : UID number # %d : Domain name # %f : Fully qualified user name (user@domain) # %l : The first letter of the login name # %P : UPN - User Principal Name (user@REALM or user@domain) # %o : The original home directory retrieved from the identity provider. # %h : The original home directory retrieved from the identity provider, but in lower case. # %H : The value of configure option homedir_substring. # %% : A literal '%' # # This option can also be set per domain and per section. # # NOTE: The home directory from a specific override for the user, either # locally or centrally managed IPA id-overrides, has a higher # precedence. It will be used instead of the value given by # override_homedir. See sss_override(8) for details. # # https://github.com/SSSD/sssd/issues/7348
# Default: Not set (SSSD will use the value retrieved from LDAP) ## override_homedir = /home/%u ## override_homedir = /data/posit/home/%d/%u
# Ssed in expansion of override_homedir if the template contains the format # string %H. An LDAP directory entry can directly contain this template so # this option can be used to expand the home directory path for each client # machine (or operating system). It can be set per-domain or globally in the # [nss] section. # # NOTE: A value specified in a domain section will override one set in this # section. # # This option can also be set per domain and per section # # Default: /home ## homedir_substring = /home
# Set a default template for the home directory of a user, if one is not specified # explicitly by the data provider of the domain. # # The available values for this option are the same as for override_homedir. # # Default: not set (no substitution for unset home directories) ## fallback_homedir =
# The default shell to use if the provider does not return one during # lookup. # # This option can be specified globally in the [nss] section or per domain. # # Default: not set | Returns NULL if no shell is specified and rely on # libc to substitute something sensible, usually /bin/sh ## default_shell = /bin/bash
# The default shell to use if an allowed shell is not installed # on the machine. # Default: /bin/sh ## shell_fallback = /bin/sh
# Override the login shell for all users. This option supersedes # any other shell options. It can be set globally in the [nss] # section or per domain. # # Default: not set (SSSD will use the value retrieved from LDAP) ## override_shell = /bin/bash
# default shell to use if an allowed shell is not installed on the machine. # # Default: /bin/sh ## shell_fallback = /bin/sh
# Restrict user shell to one of the listed values. The order of # evaluation is: # 1. If the shell is present in “/etc/shells”, it is used. # 2. If the shell is in the allowed_shells list but not in “/etc/shells”, use the value of the shell_fallback parameter. # 3. If the shell is not in the allowed_shells list and not in “/etc/shells”, the /usr/sbin/nologin shell is used. # # The wildcard (*) can be used to allow any shell. The wildcard is useful # if you want to use shell_fallback in case the shell of a user is not in # /etc/shells. An empty string for shell is passed as-is to libc. # /etc/shells is only read on SSSD start up. If you change it, restart SSSD # # Default: Not set. The user shell is automatically used. ## allowed_shells =
# Any shell found here will be replaced with the shell_fallback # Default: none ## vetoed_shells =
# Seconds the list of subdomains will be considered valid. # # Default: 60 get_domains_timeout = 60
# Seconds records in the in-memory cache will be valid. # # WARNING: Disabling the in-memory cache will have significant negative # impact on the performance of SSSD abdd should only be # used for testing # # NOTE: If the environment variable SSS_NSS_USE_MEMCACHE is set # to "NO", client applications will not use the fast in-memory # cache. # # Default: 300 memcache_timeout = 300
# Size in megabytes of the data table allocated inside fast in-memory # cache for passwd requests. Setting the size to 0 will disable the passwd # in-memory cache. # # WARNING: Disabled or too small in-memory cache can have significant # negative impact on the performance of SSSD # # NOTE: If the environment variable SSS_NSS_USE_MEMCACHE is set to "NO", # client applications will not use the fast in-memory cache. # # Default: 8 memcache_size_passwd = 8
# Size (in megabytes) of the data table allocated inside fast in-memory # cache for group requests. Setting the size to 0 will disable the group # in-memory cache. # # WARNING: Disabled or too small in-memory cache can have significant # negative impact on the performance of SSSD # # NOTE: If the environment variable SSS_NSS_USE_MEMCACHE is set to "NO", # client applications will not use the fast in-memory cache. # # Default: 6 memcache_size_group = 6
# Size in megabytes of the data table allocated inside the fast in-memory # cache for initgroups requests. Setting the size to 0 will disable the # initgroups in-memory cache. # # WARNING: Disabled or too small in-memory cache can have significant # negative impact on the performance of SSSD # # NOTE: If the environment variable SSS_NSS_USE_MEMCACHE is set to "NO", # client applications will not use the fast in-memory cache. # # Default: 10 memcache_size_initgroups = 10
# Some of the additional NSS responder requests can return more attributes # than just the POSIX ones defined by the NSS interface. That list of # attributes is controlled by this option. It is handled the same way as # the “user_attributes” option of the InfoPipe responder but with no # default values. See sssd-ifp(5) for details. # # NOTE: The InfoPipe responder provides a public D-Bus interface accessible # over the system bus. The interface allows the user to query # information about remote users and groups over the system bus. # # NOTE: To make configuration more easy, the NSS responder will check the # sssd-ifp InfoPipe option if it is not set for the NSS responder. # # Default: not set, fallback to InfoPipe option ## user_attributes =
# The value that NSS operations that return users or groups will return # for the "password" field. # # NOTE: This option can also be set per domain. If set, it will override # the value in [nss] section # # Default: "" # Default: "not set" ( for the remote domains) # "x" ( for the files domain) # "x" (proxy domain with nss_files and sssd-shadowutils target) # ## pwfield = ""
[pam]
# each section can have a 'description' variable description = "The sss_pam sub-process configuration section"
# Output Fatal failures, Critical failures, Serious failures, Minor failures, # Configuration settings, Function data, Trace messages for operation # functions and Trace messages for internal control functions # 0-10, 10 max # Also sssctl debug-level debug_level = 7
# If the authentication provider is offline, define how many days SSSD # allows cached logins (in days since the last successful online login). # # Default: 0 (no limit) offline_credentials_expiration = 1
# How many failed login attempts are allowed, if the authentication # provider is offline # # Default: 0 (No limit) offline_failed_login_attempts = 3
# The time in minutes which has to pass after offline_failed_login_attempts # has been reached before a new login attempt is possible. # If set to 0 the user cannot authenticate offline if offline failed login # attempts has been reached. Only a successful online authentication can # enable offline authentication again. # # Default: 5 offline_failed_login_delay = 15
# Controls what kind of messages are shown to the user during authentication. # Higher verbosity will show more mesages. # Currently sssd supports the following values: # 0: do not show any message # 1: show only important messages # 2: show informational messages # 3: show all messages and debug information # # Default: 1 pam_verbosity = 3
# Comma separated list of strings which allows to remove (filter) data sent # by the PAM responder to sss_pam PAM module. There are different kind of # responses sent to pam_sss e.g. messages displayed to the user or # environment variables which should be set by pam_sss. While messages # already can be controlled with the help of the pam_verbosity option this # option allows to filter out other kind of responses as well. # # Currently the following filters are supported: # ENV Do not send any environment variables to any service. # ENV:var_name Do not send environment variable var_name to any service. # ENV:var_name:service Exclude from sending the environment variable var_name to service. # # The list of strings can either be the list of filters which would set this # list of filters and overwrite the defaults. Or each element of the list # can be prefixed by a '+' or '-' character which would add the filter to # the existing default or remove it from the defaults, respectively. Please # note that either all list elements must have a '+' or '-' prefix or none. # It is considered as an error to mix both styles. # # Default: ENV:KRB5CCNAME:sudo, ENV:KRB5CCNAME:sudo-i # Example: -ENV:KRB5CCNAME:sudo-i will remove the filter from the default # list pam_response_filter = ENV:KRB5CCNAME:sudo, ENV:KRB5CCNAME:sudo-i
# For any PAM request while SSSD is online, the SSSD will attempt to # immediately update the cached identity information for the user in order # to ensure that authentication takes place with the latest information. # A complete PAM conversation may perform multiple PAM requests, such as # account management and session opening. This option controls, on # a per-client-application basis, how long in seconds we can cache the # identity information to avoid excessive round-trips to the identity # provider. # # Default: 5 pam_id_timeout = 5
# Display a warning N days before the password expires. # # NOTE: that the backend server has to provide information about the # expiration time of the password. If this information is missing, sssd # cannot display a warning. # If zero is set, then this filter is not applied: if the expiration # warning was received from backend server, it will automatically be # displayed. # # NOTE: This setting can be overridden by setting pwd_expiration_warning for a particular domain. # # Default: 0 pam_pwd_expiration_warning = 10
# Specifies time in seconds for which the list of subdomains will be # considered valid. # Default: 60 get_domains_timeout = 60
# Specifies the comma-separated list of UID values or user names that are # allowed to run PAM conversations against trusted domains. Users not # included in this list can only access domains marked as public with option # "pam_public_domains". User names are resolved to UIDs at startup. # # NOTE: UID 0 is always allowed to access the PAM responder even if not in # the pam_trusted_users list. # # Default: All users are considered trusted by default ## pam_trusted_users =
# Comma-separated list of domain names that are accessible even to untrusted # users. Two values are defined: # all Untrusted users are allowed to access all domains. # none Untrusted users are not allowed to access any domains. # # Default: none pam_public_domains = none
# Print a custom expiration message, replacing the default 'Permission denied' # message. # # NOTE: Please be aware that message is only printed for the SSH service # unless pam_verbosity is set to 3: show all messages and debug # information. # # Default: none pam_account_expired_message = Account expired, please contact help desk.
# Print a custom lockout message, replacing the default 'Permission denied' # message. # # Default: none pam_account_locked_message = Account locked, please contact help desk.
# Enable certificate based Smartcard authentication. This requires # additional communication with the respective Smartcard stack. Enabling # introduces delays to the authentication process, so this option is # disabled by default. # # Default: False pam_cert_auth = False
# The path to the certificate database. The path points to a file with # trusted CA certificates and all their intermediatery chains. File must # be in PEM format. # # Default: /etc/sssd/pki/sssd_auth_ca_db.pem pam_cert_db_path = /etc/pki/tls/certs/vetinst.pem
# Ways to verify the PAM certificate. Values are the same comma separated # list of values which the "certificate_verification" option has. # Setting this option overrides the "certificate_verification" value in the # "[sssd]" section. When not set, sssd uses the value of the # 'certificate_verification' option defined in the afformentioned section. # # Valid options: # no_ocsp, soft_ocsp, ocsp_dgst=sha1|sha256|sha384|sha512, # no_verification, partial_chain, ocsp_default_responder=URL, # ocsp_default_responder_signing_cert=NAME, # crl_file=/PATH/TO/CRL/FILE, soft_crl # # Look at sssd.conf(5) for details # # Default: not set. ## pam_cert_verification =
# Seconds sss_pam has to wait for p11_child to finish. # # Default: 10 p11_child_timeout = 10
# PAM services which are permitted to contact domains of type "application" # # For more: # https://docs.pagure.org/sssd.sssd/design_pages/non_posix_support.html # # PAM service names are the service names from the contents of /etc/pam.d/ # # Default: Not set ## pam_app_services =
# Comma-separated list of PAM service names which will be allowed to use # Smartcards. # You can add another PAM service name to the default set by using # "+service_name" # or to explicitly remove a PAM service name by using # "-service_name" # even if the service in in the default set of services. # # The default set of PAM service names include: # login # su # su-l # gdm-smartcard # gdm-password # kdm # sudo # sudo-i # * gnome-screensaver # PAM service names are the service names from the contents of /etc/pam.d/ # # Example: ## # pam_p11_allowed_services = +my_pam_service, -login # This allows a custom PAM service name ("my_pam_service") and disables # # Default: Not set ## pam_p11_allowed_services
# Additional extra seconds to p11_child_timeout should the PAM responder # wait, if a Smartcard is inserted and Smartcard authentication is # required # # Default: 60 p11_wait_for_card_timeout = 60
# PKCS#11 URI which can be used to restrict the selection of devices used # for Smartcard authentication. By default, p11_child of SSSD will search # for a PKCS#11 slot or reader where the 'removable' flags is set and read # the certificates from the inserted token from the first slot found. If # multiple readers are connected, p11_uri can be used to tell p11_child to # use a specific reader. # See RFC-7512 for details on PKCS#11 URI # Example: # p11_uri = pkcs11:slot-description=My%20Smartcard%20Reader # or # p11_uri = pkcs11:library-description=OpenSC%20smartcard%20framework;slot-id=2 # # To find a suitable URI, please check the debug output of p11_child. As an # alternative the GnuTLS utility 'p11tool' will show PKCS#11 URIs, with the # '--list-all' option. # # Default: none ## p11_uri =
# Force the PAM responder to perform an online lookup to get the current # group memberships of the user trying to log in. This option controls # when this should be done and the following values are allowed: # always # Always do an online lookup, please note that pam_id_timeout still # applies # no_session # Only do an online lookup if there is no active session of the user, # i.e. if the user is currently not logged in # never # Never force an online lookup, use the data from the cache as long as they are not expired # # Default: no_session pam_initgroups_scheme = no_session
# Comma-separated list of PAM services that are allowed to try GSSAPI # authentication using pam_sss_gss.so module. # To disable GSSAPI authentication, set this option to “-” (dash). # # Note: This option can also be set per-domain which overwrites the value # in [pam] section. It can also be set for trusted domains, which will # overwrite the value in the domain section. # # Example: # pam_gssapi_services = sudo, sudo-i # # Default: - (GSSAPI authentication is disabled) pam_gssapi_services = -
# If True, SSSD will require that the Kerberos user principal that # successfully authenticated through GSSAPI can be associated with the # user who is being authenticated. Authentication will fail if the check # fails. # If False, every user that is able to obtained required service ticket # will be authenticated. # # Note: This option can also be set per-domain which overwrites the value # in the [pam] section. It can also be set for trusted domains which will # overwrite the value in the domain section. # # Default: True pam_gssapi_check_upn = True
# Comma-separated list of authentication indicators required to be present # in a Kerberos ticket to access a PAM service that is allowed to try # GSSAPI authentication using pam_sss_gss.so module. # #
# In GSSAPI, an authentication indicator is a data field that indicates # the authentication mechanism being used for secure communication, such # as Kerberos or NTLM. # # https://web.mit.edu/kerberos/krb5-latest/doc/admin/auth_indicator.html # As of release 1.14, the KDC can be configured to annotate tickets if # the client authenticated using a stronger preauthentication mechanism # such as PKINIT or OTP. These annotations are called "authentication # indicators." Service principals can be configured to require particular # authentication indicators in order to authenticate to that service. An # authentication indicator value can be any string chosen by the KDC # administrator; there are no pre-set values # # Each element of the list can be either an authentication indicator name # or a tupple "service:indicator". Indicators not prefixed with their # respective PAM service name are required to allow access any to any PAM # service configured to be used with pam_gssapi_services. The resulting list # of indicators per PAM service is then checked against indicators in the # Kerberos ticket during authentication by pam_sss_gss.so. Any indicator # from the ticket that matches the resulting list of indicators for the # PAM service is granted access. If none of the indicators in the list # match, access is denied. If the resulting list of indicators for the PAM # service is empty, access is not prevented. # # To disable GSSAPI authentication indicator check, set this option to # "-" ( single dash ) # To disable the check for a specific PAM service, set the service to # "serviceName:-" # # Note: This option can also be set per-domain. In such case, this will # overwrite the value in the [pam] section. It can also be set for each # trusted domain. Again, this will overwrite the value in the relevant # domain section. # # The following authentication indicators are supported by IPA Kerberos # deployments: # # pkinit -- pre-authentication using X.509 certificates -- whether # stored in files or on smart cards. # hardened -- SPAKE pre-authentication or any pre-authentication # wrapped in a FAST channel. # radius -- pre-authentication with the help of a RADIUS server. # otp -- pre-authentication using integrated two-factor authentication # (2FA or one-time password, OTP) in IPA. # * idp -- pre-authentication using external identity provider. # # Example: Require access to SUDO services only for users which # obtained their Kerberos tickets with a X.509 certificate # pre-authentication (PKINIT) # # pam_gssapi_indicators_map = sudo:pkinit, sudo-i:pkinit # # Default: not set (use of authentication indicators is not required) ## pam_gssapi_indicators_map
[sudo]
# each section can have a 'description' variable description = "The sss daemon sudo configuration section"
# Output Fatal failures, Critical failures, Serious failures, Minor failures, # Configuration settings, Function data, Trace messages for operation # functions and Trace messages for internal control functions # 0-10, 10 max # Also see sssctl debug-level debug_level = 7
# These options can be used to configure the sudo service. The detailed # instructions for configuration of sudo(8) to work with sssd(8) are in # the manual page sssd-sudo(5).
# Evaluate the sudoNotBefore and sudoNotAfter attributes that implement # time-dependent sudoers entries. # # Default: false sudo_timed = False
# Maximum number of expired rules that can be refreshed at once. If number # of expired rules is below threshold, those rules are refreshed with # "rules refresh" mechanism. If the threshold is exceeded a "full refresh" # of sudo rules is triggered instead. This threshold number also applies to # IPA sudo command and command group searches. # # Default: 50 sudo_threshold = 50
[autofs]
# each section can have a 'description' variable description = "The sss daemon autofs configuration section"
# Output Fatal failures, Critical failures, Serious failures, Minor failures, # Configuration settings, Function data, Trace messages for operation # functions and Trace messages for internal control functions # 0-10, 10 max # Also see the debug-devel option of sssctl(8) debug_level = 7
# Specify for how many seconds should the autofs responder negative cache # hits (that is, queries for invalid map entries, like nonexistent ones) # before asking the back end again. # # NOTE: the automounter only reads the master map on startup, so if any # autofs-related changes are made to the sssd.conf, you also need to # restart the automounter daemon, after restarting SSSD. # # Default: 15 autofs_negative_timeout = 15
[ssh]
# each section can have a 'description' variable description = "The sss daemon ssh configuration section"
# Output Fatal failures, Critical failures, Serious failures, Minor failures, # Configuration settings, Function data, Trace messages for operation # functions and Trace messages for internal control functions # 0-10, 10 max # Also see sssctl debug-level debug_level = 7
# Hash host names and addresses in the managed known_hosts file. # # Default: false ssh_hash_known_hosts = True
# Seconds to keep a host in the managed known_hosts file after its host # keys were requested. # # Default: 180 ssh_known_hosts_timeout = 180
# If set to True, sssd will use sss_ssh_authorizedkeys(1) to return ssh # keys derived from the public key of X.509 certificates stored in the # user entry as well. # See sss_ssh_authorizedkeys(1) for details. # # Essentially, what the above means is that there is an sssd responder # ( subsystem ) which can go through a X.509 certificate and return any # public ssh keys included in the certificate # https://jhrozek.fedorapeople.org/sssd/2.1.0/man/sss_ssh_authorizedkeys.1.html # https://docs.pagure.org/sssd.sssd/users/relnotes/notes_1_16_2.html # # > If the user entry contains certificates ... or there is a certificate # > in an override entry for the user ... and the certificate is valid, # > SSSD will extract the public key from the certificate and convert it # > into the format expected by sshd. # # Default: True ssh_use_certificate_keys = True
# By default the SSSD ssh responder will use all available certificate # matching rules to filter the certificates, so that ssh keys are only # derived from the matching ones. With this option the used rules can be # further restricted with a comma separated list of mapping and matching # rule names. All other rules will be ignored. # # Available values are 'all_rules' and 'no_rules' . Each will enable all # or no rules, respectively. The latter means that no certificates will # be filtered out and ssh keys will be generated from all valid # certificates. # # If no rules are configured using 'all_rules' will enable a default rule # which enables all certificates suitable for client authentication. This # is the same behavior the SSSD PAM responder uses, if certificate # authentication is enabled. # # A non-existing rule name is considered an error. If no rule is selected # as a result, all certificates will be ignored. # # Default: not set, equivalent to 'all_rules', all found rules or the # default rule are used ssh_use_certificate_matching_rules = all_rules
# Path to file storing trusted CA certificates, in PEM format. The option # is used to validate user certificates before deriving public ssh keys # from them. # # Default: /etc/sssd/pki/sssd_auth_ca_db.pem ca_db = /etc/sssd/pki/sssd_auth_ca_db.pem
[pac]
# each section can have a 'description' variable description = "The sss daemon pac configuration section"
# Output Fatal failures, Critical failures, Serious failures, Minor failures, # Configuration settings, Function data, Trace messages for operation # functions and Trace messages for internal control functions # 0-10, 10 max # Also see sssctl debug-level debug_level = 7
# a PAC (Privilege Attribute Certificate) is a data structure used in # Kerberos authentication to carry additional authorization information, # such as group memberships and other attributes, alongside the regular # Kerberos ticket.
## PAC responder configuration options # The PAC responder works together with the authorization data plugin # for MIT Kerberos sssd_pac_plugin.so and a sub-domain provider. The # plugin sends the PAC data during a GSSAPI authentication to the PAC # responder. The sub-domain provider collects domain SID and ID ranges # of the domain the client is joined to and of remote trusted domains # from the local domain controller. If the PAC is decoded and # evaluated, some of the following operations are done: # # If the remote user does not exist in the cache, user is created. The # UID is determined with the help of the SID. Trusted domains will have # UPGs and the GID will have the same value as the UID. The home # directory is set based on the subdomain_homedir parameter. The shell # will be empty by default, i.e. the system defaults are used, but can # be overwritten with the default_shell parameter. # # If there are SIDs of groups from domains which sssd knows about, the # user will be added to those groups. #
# Specify a comma-separated list of UID values or user names that are # allowed to access the PAC responder. User names are resolved to UIDs at # startup. Please note that although the UID 0 is used as the default, the # default value can be overwritten, if this option is set. If overwrite the # default, but you still want to allow the root user to have access to the # PAC responder, which would be the typical case, you have to add 0 to the # list of allowed UIDs as well. # # Default: 0 - only the root user is allowed to access the PAC responder allowed_uids = 0
# Lifetime of the PAC entry in seconds. As long as the PAC is valid, the # PAC data can be used to determine the group memberships of a user. # # Default: 300 pac_lifetime = 300
# Apply additional checks on the PAC of the Kerberos ticket which is # available in Active Directory and FreeIPA domains. # # NOTE: Kerberos ticket validation must be enabled to be able to check # the PAC ( krb5_validate option must be set to 'True' ) . This # is the default for the IPA and AD provider. If krb5_validate # is set to 'False', the PAC checks will be skipped. # # The following options are the accepted values. They can be used alone # or in a comma-separated list: # # no_check # The PAC must not be present. Even if present, no additional checks # will be performed. # # pac_present # The PAC must be present in the service ticket which SSSD will # request, with the help of the user's TGT. If the PAC is not # available, the authentication will fail. # # check_upn # If the PAC is present, check if the user principal name (UPN) # information is consistent. # # check_upn_allow_missing # This option should be used together with 'check_upn'. It handles # the case where a UPN is set on the server-side but is not read by # SSSD. # # The typical example is a FreeIPA domain where 'ldap_user_principal' # is set to a not existing attribute name. # # This was typically done to work-around issues in the handling of # enterprise principals by FreeIPA. The issue has been fixed and # there should not be a need to set 'ldap_user_principal'. The info # is maintained in the case it is needed, though. # # Currently, this option is set by default to avoid regressions in # such environments. A log message will be added to the system log # and SSSD's debug log in case a UPN is found in the PAC but not in # SSSD's cache. To avoid this log message it would be best to # evaluate if the 'ldap_user_principal' option can be removed. If # this is not possible, removing 'check_upn' will skip the test and # avoid the log message. # # upn_dns_info_present # The PAC must contain the UPN-DNS-INFO buffer, implies 'check_upn'. # # check_upn_dns_info_ex # If the PAC is present and the extension to the UPN-DNS-INFO buffer # is available check if the information in the extension is consistent. # # * upn_dns_info_ex_present # The PAC must contain the extension of the UPN-DNS-INFO buffer, # implies 'check_upn_dns_info_ex', 'upn_dns_info_present' and 'check_upn'. # # Default: no_check (AD and IPA provider 'check_upn, check_upn_allow_missing, check_upn_dns_info_ex') pac_check = no_check #
[rec]
# each section can have a 'description' variable description = "The sss daemon Session recording configuration section"
# Output Fatal failures, Critical failures, Serious failures, Minor failures, # Configuration settings, Function data, Trace messages for operation # functions and Trace messages for internal control functions # 0-10, 10 max # Also see sssctl debug-level debug_level = 7
# The following options can be used to configure session recording. Session # recording works in conjunction with tlog-rec-session(8), a part of the # tlog package, to log what users see and type when they log in on a text # terminal. See also: sssd-session-recording(5).
# Specify the scope of session recording: # none # No users are recorded. # some # Users/groups specified by users and groups options are recorded. # * all # All users are recorded. # # Default: none scope = none
# Comma-separated list of users to have session recording enabled. Matches # user names as returned by NSS, meaning after the possible space # replacement, case or any other sort of NSS changes. # # Default: Empty. Matches no users. ## users =
# Comma-separated list of user groups, members of which should have session # recording enabled. user names as returned by NSS, meaning after the # possible space replacement, case or any other sort of NSS changes. # # NOTE: Setting this option to anything has a considerable performance # cost, as each uncached request for a user requires retrieving # and matching of the groups the user is a member of. # # Default: Empty. Matches no groups. ## groups =
# Comma-separated list of users to be excluded from recording. Only # applicable if 'scope = all'. # # Default: Empty. No users excluded. ## exclude_users =
# Comma-separated list of groups, members of which should be excluded from # recording. Only applicable if 'scope = all'. # # NOTE: Setting this option to anything has a considerable performance # cost, as each uncached request for a user requires retrieving # and matching the groups the user is a member of. # # Default: Empty. No groups excluded. ## exclude_groups =