dwww Home | Manual pages | Find package

nslcd.conf(5)               System Manager's Manual               nslcd.conf(5)

NAME
       nslcd.conf - configuration file for LDAP nameservice daemon

DESCRIPTION
       The  nss-pam-ldapd package allows LDAP directory servers to be used as a
       primary source of name service information.  (Name  service  information
       typically  includes  users,  hosts, groups, and other such data histori-
       cally stored in flat files or NIS.)

       The file nslcd.conf contains the configuration information  for  running
       nslcd  (see  nslcd(8)).   The  file  contains options, one on each line,
       defining the way NSS lookups and PAM actions are mapped to LDAP lookups.

OPTIONS
   RUNTIME OPTIONS
       threads NUM
              Specifies the number of threads to start that can handle requests
              and perform LDAP queries.  Each thread opens a  separate  connec-
              tion to the LDAP server.  The default is to start 5 threads.

       uid UID
              This  specifies  the user id with which the daemon should be run.
              This can be a numerical id or a symbolic value.   If  no  uid  is
              specified  no attempt to change the user will be made.  Note that
              you should use values that don't need LDAP to resolve.

       gid GID
              This specifies the group id with which the daemon should be  run.
              This  can  be  a  numerical id or a symbolic value.  If no gid is
              specified no attempt to change the group will be made.  Note that
              you should use values that don't need LDAP to resolve.

       log SCHEME [LEVEL]
              This option controls the way logging is done.  The  SCHEME  argu-
              ment  may  either  be none, syslog or an absolute file name.  The
              LEVEL argument is optional and specifies the log level.  The  log
              level may be one of: crit, error, warning, notice, info or debug.
              The  default  log level is info.  All messages with the specified
              loglevel or higher are logged.  This option can be supplied  mul-
              tiple times.  If this option is omitted syslog info is assumed.

   GENERAL CONNECTION OPTIONS
       uri URI ...
              Specifies  the  LDAP  URI  of  the server to connect to.  The URI
              scheme may be ldap, ldapi or ldaps, specifying LDAP over TCP, ICP
              or SSL respectively (if supported by the LDAP library).

              Alternatively, the value DNS may be used to  try  to  lookup  the
              server  using  DNS SRV records.  By default the current domain is
              used but another domain can be queried by  using  the  DNS:DOMAIN
              syntax.   To  convert  SRV  records for port 389 into an ldaps://
              URI, DNSLDAPS can be used.

              When using the ldapi scheme, %2f should be used to escape slashes
              (e.g. ldapi://%2fvar%2frun%2fslapd%2fldapi/),  although  most  of
              the time this should not be needed.

              This option may be specified multiple times and/or with more URIs
              on the line, separated by spaces. Normally, only the first server
              will  be  used  with  the  following  servers  as  fall-back (see
              bind_timelimit below).

              If LDAP lookups are used for host name resolution, any host names
              should be specified as an IP address or name that can be resolved
              without using LDAP.

       ldap_version VERSION
              Specifies the version of the LDAP protocol to use.   The  default
              is to use the maximum version supported by the LDAP library.

       binddn DN
              Specifies the distinguished name with which to bind to the direc-
              tory server for lookups.  The default is to bind anonymously.

       bindpw PASSWORD
              Specifies  the  credentials  with  which to bind.  This option is
              only applicable when used with binddn above.  If you set this op-
              tion  you  should  consider  changing  the  permissions  of   the
              nslcd.conf file to only grant access to the root user.

       rootpwmoddn DN
              Specifies  the distinguished name to use when the root user tries
              to modify a user's password using the PAM module.

              Note that currently this DN needs to exist as a real entry in the
              LDAP directory.

       rootpwmodpw PASSWORD
              Specifies the credentials with which to bind  if  the  root  user
              tries  to change a user's password.  This option is only applica-
              ble when used with rootpwmoddn above.   If  this  option  is  not
              specified  the PAM module prompts the user for this password.  If
              you set this option you should consider changing the  permissions
              of the nslcd.conf file to only grant access to the root user.

   SASL AUTHENTICATION OPTIONS
       sasl_mech MECHANISM
              Specifies  the SASL mechanism to be used when performing SASL au-
              thentication.

       sasl_realm REALM
              Specifies the SASL realm to be used when performing SASL  authen-
              tication.

       sasl_authcid AUTHCID
              Specifies  the authentication identity to be used when performing
              SASL authentication.

       sasl_authzid AUTHZID
              Specifies the authorization identity to be used  when  performing
              SASL  authentication.   Must  be specified in one of the formats:
              dn:<distinguished name> or u:<username>.

       sasl_secprops PROPERTIES
              Specifies Cyrus SASL security properties.  Allowed values are de-
              scribed in the ldap.conf(5) manual page.

       sasl_canonicalize yes|no
              Determines whether the LDAP server host name  should  be  canoni-
              calised. If this is set to yes the LDAP library will do a reverse
              host  name lookup.  By default, it is left up to the LDAP library
              whether this check is performed or not.

   KERBEROS AUTHENTICATION OPTIONS
       krb5_ccname NAME
              Set the name for the GSS-API Kerberos credentials cache.

   SEARCH/MAPPING OPTIONS
       base [MAP] DN
              Specifies the distinguished name (DN)  to  use  as  search  base.
              This  option  may  be  supplied  multiple times and all specified
              bases will be searched.

              A global search base may be specified or a MAP-specific one.   If
              no  MAP-specific  search  bases  are  defined the global ones are
              used.

              If, instead of a DN, the value DOMAIN is  specified,  the  host's
              DNS domain is used to construct a search base.  A value of "" can
              be  used  to indicate an empty search base (quotes are not other-
              wise supported for base values and not all LDAP server configura-
              tions support this).

              If this value is not defined an attempt is made to look it up  in
              the  configured  LDAP  server.  If the LDAP server is unavailable
              during start-up nslcd will not start.

       scope [MAP] sub[tree]|one[level]|base|children
              Specifies the search scope (subtree, onelevel, base or children).
              The default scope is subtree; base scope is almost  never  useful
              for  name service lookups; children scope is not supported on all
              servers.

       deref never|searching|finding|always
              Specifies the policy for dereferencing aliases.  The default pol-
              icy is to never dereference aliases.

       referrals yes|no
              Specifies whether automatic referral chasing should  be  enabled.
              The default behaviour is to chase referrals.

       filter MAP FILTER
              The  FILTER  is  an LDAP search filter to use for a specific map.
              The default filter is a basic search on the objectClass  for  the
              map (e.g. (objectClass=posixAccount)).

       map MAP ATTRIBUTE NEWATTRIBUTE
              This  option allows for custom attributes to be looked up instead
              of the default RFC 2307 attributes.  The MAP may be  one  of  the
              supported  maps  below.   The ATTRIBUTE is the one as used in RFC
              2307 (e.g. userPassword, ipProtocolNumber, macAddress, etc.).

              The NEWATTRIBUTE may be the name of any attribute as it is avail-
              able in the directory.

              If the NEWATTRIBUTE is quoted (") as "EXPRESSION" it  is  treated
              as  an  expression which will be evaluated to build up the actual
              value used.  See the section on attribute mapping expressions be-
              low for more details.

              Only some attributes for group, passwd and shadow entries may  be
              mapped  with  an expression (because other attributes may be used
              in search filters).  For group entries only the userPassword  at-
              tribute may be mapped with an expression.  For passwd entries the
              following  attributes may be mapped with an expression: userPass-
              word, gidNumber, gecos, homeDirectory and loginShell.  For shadow
              entries the following attributes may be mapped  with  an  expres-
              sion: userPassword, shadowLastChange, shadowMin, shadowMax, shad-
              owWarning, shadowInactive, shadowExpire and shadowFlag.

              The  uidNumber  and  gidNumber attributes in the passwd and group
              maps may be mapped to the objectSid followed by the domain SID to
              derive numeric user and group ids  from  the  SID  (e.g.  object-
              Sid:S-1-5-21-3623811015-3361044348-30300820).

              By default all userPassword attributes are mapped to the unmatch-
              able password ("*") to avoid accidentally leaking password infor-
              mation.

   TIMING/RECONNECT OPTIONS
       bind_timelimit SECONDS
              Specifies  the  time limit (in seconds) to use when connecting to
              the directory server.  This is distinct from the time limit spec-
              ified in timelimit and affects the set-up of the connection only.
              Note that not all LDAP client libraries have support for  setting
              the  connection  time out.  The default bind_timelimit is 10 sec-
              onds.

       timelimit SECONDS
              Specifies the time limit (in seconds) to wait for a response from
              the LDAP server.  A value of zero (0), which is the  default,  is
              to wait indefinitely for searches to be completed.

       idle_timelimit SECONDS
              Specifies  the  period of inactivity (in seconds) after which the
              connection to the LDAP server will be closed.  The default is not
              to time out connections.

       reconnect_sleeptime SECONDS
              Specifies the number of seconds to sleep when connecting  to  all
              LDAP  servers  fails.   By default 1 second is waited between the
              first failure and the first retry.

       reconnect_retrytime SECONDS
              Specifies the time after which the LDAP server is  considered  to
              be  permanently  unavailable.   Once this time is reached retries
              will be done only once per this time period.  The  default  value
              is 10 seconds.

       Note  that  the reconnect logic as described above is the mechanism that
       is used between nslcd and the LDAP server. The mechanism between the NSS
       and PAM client libraries on one end and nslcd on the  other  is  simpler
       with  a  fixed compiled-in time out of a 10 seconds for writing to nslcd
       and a time out of 60 seconds for reading answers.  nslcd  itself  has  a
       read time out of 0.5 seconds and a write time out of 60 seconds.

   SSL/TLS OPTIONS
       ssl on|off|start_tls
              Specifies  whether to use SSL/TLS or not (the default is not to).
              If start_tls is specified then StartTLS is used rather  than  raw
              LDAP  over  SSL.  Not all LDAP client libraries support both SSL,
              StartTLS and all related configuration options.

       tls_reqcert never|allow|try|demand|hard
              Specifies what checks to perform on  a  server-supplied  certifi-
              cate.  The meaning of the values is described in the ldap.conf(5)
              manual page.  At least one of tls_cacertdir and tls_cacertfile is
              required if peer verification is enabled.

       tls_cacertdir PATH
              Specifies  the  directory  containing X.509 certificates for peer
              authentication.  This parameter is ignored when using GnuTLS.  On
              Debian OpenLDAP is linked against GnuTLS.

       tls_cacertfile PATH
              Specifies the path to the X.509 certificate for peer  authentica-
              tion.

       tls_randfile PATH
              Specifies  the  path to an entropy source.  This parameter is ig-
              nored when using GnuTLS.  On Debian OpenLDAP  is  linked  against
              GnuTLS.

       tls_ciphers CIPHERS
              Specifies  the  ciphers to use for TLS.  See your TLS implementa-
              tion's documentation for further information.

       tls_cert PATH
              Specifies the path to the file containing the  local  certificate
              for client TLS authentication.

       tls_key PATH
              Specifies  the  path  to  the file containing the private key for
              client TLS authentication.

       tls_reqsan never|allow|try|demand|hard
              Specifies the  way  server  Subject  Alternative  Name  (SAN)  is
              checked  in  the server-supplied certificate.  The meaning of the
              values is described in the ldap.conf(5) manual page.

       tls_crlcheck none|peer|all
              Specifies if the Certificate Revocation  List  (CRL)  of  the  CA
              should be used to verify if the server certificates have not been
              revoked.    The  meaning  of  the  values  is  described  in  the
              ldap.conf(5) manual page.

       tls_crlfile PATH
              Specifies the path to the file containing a  Certificate  Revoca-
              tion  List  to be used to verify if the server certificates.  The
              meaning of the values is described  in  the  ldap.conf(5)  manual
              page.

   OTHER OPTIONS
       pagesize NUMBER
              Set this to a number greater than 0 to request paged results from
              the  LDAP  server in accordance with RFC2696.  The default (0) is
              to not request paged results.

              This is useful for LDAP servers that contain  a  lot  of  entries
              (e.g. more than 500) and limit the number of entries that are re-
              turned  with  one  request.  For OpenLDAP servers you may need to
              set sizelimit size.prtotal=unlimited for allowing more entries to
              be returned over multiple pages.

       nss_initgroups_ignoreusers user1,user2,...
              This option prevents group membership lookups  through  LDAP  for
              the specified users. This can be useful in case of unavailability
              of the LDAP server.  This option may be specified multiple times.

              Alternatively,  the  value  ALLLOCAL may be used. With that value
              nslcd builds a full list of non-LDAP users on startup.

       nss_min_uid UID
              This option ensures that LDAP users with a numeric user id  lower
              than  the  specified  value  are ignored. Also requests for users
              with a lower user id are ignored.

       nss_uid_offset NUMBER
              This option specifies an offset that is added to all LDAP numeric
              user ids.  This can be used to avoid user id collisions with  lo-
              cal  users or, when using objectSid attributes, for compatibility
              reasons.

              The value from the nss_min_uid option is evaluated after applying
              the offset.

       nss_gid_offset NUMBER
              This option specifies an offset that is added to all LDAP numeric
              group ids.  This can be used to avoid user id collisions with lo-
              cal groups or, when using objectSid attributes, for compatibility
              reasons.

       nss_nested_groups yes|no
              If this option is set, the member attribute of a group may  point
              to  another group.  Members of nested groups are also returned in
              the higher level group and parent groups are returned when  find-
              ing  groups  for  a specific user.  The default is not to perform
              extra searches for nested groups.

       nss_getgrent_skipmembers yes|no
              If this option is set, the group member  list  is  not  retrieved
              when  looking up groups.  Lookups for finding which groups a user
              belongs to will remain functional so the user will  likely  still
              get the correct groups assigned on login.

              This can offer a speed-up on systems that have very large groups.
              It  has  the downside of returning inconsistent information about
              group membership which may confuse some applications.   This  op-
              tion is not recommended for most configurations.

       nss_disable_enumeration yes|no
              If  this  option is set, functions which cause all user/group en-
              tries to be loaded (getpwent(), getgrent(), setspent()) from  the
              directory will not succeed in doing so.  Applications that depend
              on  being  able  to sequentially read all users and/or groups may
              fail to operate correctly.

              This can dramatically reduce LDAP server load in situations where
              there are a great number of users and/or groups.  This  is  typi-
              cally  used  in situations where user/program access to enumerate
              the entire directory is undesirable, and changing the behavior of
              the user/program is not possible.  This option is not recommended
              for most configurations.

       validnames REGEX
              This option can be used to specify how user and group  names  are
              verified  within  the  system.  This pattern is used to check all
              user and group names that are requested and returned from LDAP.

              The regular expression should be specified as  a  POSIX  extended
              regular  expression.  The expression itself needs to be separated
              by slash (/) characters and the 'i' flag may be appended  at  the
              end  to  indicate that the match should be case-insensitive.  The
              default       value       is       /^[a-z0-9._@$()]([a-z0-9._@$()
              \\~-]*[a-z0-9._@$()~-])?$/i

       ignorecase yes|no
              This specifies whether or not to perform searches for group, net-
              group,  passwd,  protocols,  rpc,  services and shadow maps using
              case-insensitive matching.  Setting this to yes could open up the
              system to authorisation bypass vulnerabilities and introduce nscd
              cache poisoning vulnerabilities which allow  denial  of  service.
              The default is to perform case-sensitive filtering of LDAP search
              results for the above maps.

       pam_authc_ppolicy yes|no
              This  option  specifies  whether password policy controls are re-
              quested and handled from the LDAP server when performing user au-
              thentication.  By default the controls are requested and  handled
              if available.

       pam_authc_search FILTER
              By  default nslcd performs an LDAP search with the user's creden-
              tials after BIND (authentication) to ensure that the BIND  opera-
              tion was successful.  The default search is a simple check to see
              if the user's DN exists.

              A  search filter can be specified that will be used instead.  The
              same substitutions as with the pam_authz_search  option  will  be
              performed and the search should at least return one entry.

              The  value  BASE  may be used to force the default search for the
              user DN.

              The value NONE may be used to indicate that no search  should  be
              performed  after BIND.  Note that some LDAP servers do not always
              return a correct error code as a result of a failed  BIND  opera-
              tion (e.g. when an empty password is supplied).

       pam_authz_search FILTER
              This  option  allows  flexible  fine  tuning of the authorisation
              check that should be performed. The search  filter  specified  is
              executed  and  if any entries match, access is granted, otherwise
              access is denied.

              The search filter can contain the following variable  references:
              $username, $service, $ruser, $rhost, $tty, $hostname, $fqdn, $do-
              main,  $dn,  and  $uid.   These references are substituted in the
              search filter using the same syntax as described in  the  section
              on attribute mapping expressions below.

              For  example,  to check that the user has a proper authorizedSer-
              vice value if the attribute is present (this almost emulates  the
              pam_check_service_attr option in PADL's pam_ldap):

              (&(objectClass=posixAccount)(uid=$username)(|(authorizedService=$service)(!(authorizedService=*))))

              The pam_check_host_attr option can be emulated with:

              (&(objectClass=posixAccount)(uid=$username)(|(host=$hostname)(host=$fqdn)(host=\\*)))

              This  option  may  be  specified multiple times and all specified
              searches should at least  return  one  entry  for  access  to  be
              granted.

       pam_password_prohibit_message "MESSAGE"
              If  this  option is set password modification using pam_ldap will
              be denied and the specified message will be presented to the user
              instead.  The message can be used to direct the user to an alter-
              native means of changing their password.

       reconnect_invalidate DB,DB,...
              If this option is set, nslcd will try to flush the specified  ex-
              ternal  caches  on start-up and whenever a connection to the LDAP
              server is re-established after an error.

              DB can refer to one of the nsswitch maps, in which case  nscd  is
              contacted  to  flush its cache for the specified database.  If DB
              is nfsidmap, nfsidmap is contacted to clear its cache.

              Using this option ensures that external caches are cleared of in-
              correct information (typically the absence of users) that may  be
              present due to unavailability of the LDAP server.

       cache CACHE TIME [TIME]
              Configure  the  time  entries  are kept in the specified internal
              cache.

              The first TIME value specifies the time to keep found entries  in
              the cache.  The second TIME value specifies to the time to remem-
              ber that a particular entry was not found.  If the second parame-
              ter is absent, it is assumed to be the same as the first.

              Time  values  are specified as a number followed by an s for sec-
              onds, m for minutes, h for hours or d for days.  Use 0 or off  to
              disable the cache.

              Currently, only the dn2uid cache is supported that is used to re-
              member  DN  to username lookups that are used when the member at-
              tribute is used.  The default time value for this cache is 15m.

SUPPORTED MAPS
       The following maps are supported. They are referenced as MAP in the  op-
       tions above.

       alias[es]
              Mail aliases.  Note that most mail servers do not use the NSS in-
              terface  for  requesting  mail  aliases and parse /etc/aliases on
              their own.

       ether[s]
              Ethernet numbers (mac addresses).

       group  Posix groups.

       host[s]
              Host names.

       netgroup
              Host and user groups used for access control.

       network[s]
              Network numbers.

       passwd Posix users.

       protocol[s]
              Protocol definitions (like in /etc/protocols).

       rpc    Remote procedure call names and numbers.

       service[s]
              Network service names and numbers.

       shadow Shadow user password information.

ATTRIBUTE MAPPING EXPRESSIONS
       For some attributes a mapping expression may be used  to  construct  the
       resulting value.  This is currently only possible for attributes that do
       not  need to be used in search filters.  The expressions are a subset of
       the double quoted string expressions in the Bourne (POSIX)  shell.   In-
       stead  of  variable substitution, attribute lookups are done on the cur-
       rent entry and the attribute value is substituted.   The  following  ex-
       pressions are supported:

       "${attr}" (or "$attr" for short)
              will substitute the value of the attribute

       "${attr:-word}"
              (use  default)  will substitute the value of the attribute or, if
              the attribute is not set or empty substitute the word

       "${attr:+word}"
              (use alternative) will substitute word if attribute is set,  oth-
              erwise substitute the empty string

       "${attr:offset:length}"
              will  substitute length characters (actually bytes) starting from
              position offset (which is counted starting at zero); the  substi-
              tuted  string  is  truncated if it is too long; in particular, it
              can be of length zero (if length is zero or offset falls  out  of
              the original string)

       "${attr#word}"
              remove  the  shortest possible match of word from the left of the
              attribute value

       "${attr##word}"
              remove the longest possible match of word from the  left  of  the
              attribute value (pynslcd only)

       "${attr%word}"
              remove  the shortest possible match of word from the right of the
              attribute value (pynslcd only)

       "${attr%%word}"
              remove the longest possible match of word from the right  of  the
              attribute value (pynslcd only)

       Only the # matching expression is supported in nslcd and only with the ?
       wildcard symbol. The pynslcd implementation supports full matching.

       Quote  ("),  dollar  ($)  and backslash (\) characters should be escaped
       with a backslash (\).

       The expressions are inspected to automatically fetch the appropriate at-
       tributes from LDAP.  Some examples to demonstrate how these  expressions
       may be used in attribute mapping:

       map shadow shadowFlag "${shadowFlag:-0}"
              use the shadowFlag attribute, using the value 0 as default

       map passd homeDirectory "${homeDirectory:-/home/$uid}"
              use  the uid attribute to build a homeDirectory value if that at-
              tribute is missing

       map shadow shadowExpire "${isDisabled:+100}"
              if the isDisabled attribute is set, return 100,  otherwise  leave
              value empty

       map shadow userPassword "${userPassword#{crypt\}}"
              strip the {crypt} prefix from the userPassword attribute, return-
              ing the raw hash value

FILES
       /etc/nslcd.conf
              the main configuration file

       /etc/nsswitch.conf
              Name Service Switch configuration file

SEE ALSO
       nslcd(8), nsswitch.conf(5)

AUTHOR
       This  manual was written by Arthur de Jong <arthur@arthurdejong.org> and
       is based on the nss_ldap(5) manual developed by PADL Software Pty Ltd.

Version 0.9.13                      Feb 2025                      nslcd.conf(5)

Generated by dwww version 1.16 on Tue Dec 16 05:46:17 CET 2025.