Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
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  re-
	      quests  and  perform LDAP	queries.  Each thread opens a separate
	      connection 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 de-
	      bug. The default log level is info.  All messages	with the spec-
	      ified loglevel or	higher are logged.  This option	 can  be  sup-
	      plied  multiple 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 di-
	      rectory 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
	      option 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
	      described	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  re-
	      verse  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
	      otherwise	supported for base values and not all LDAP server con-
	      figurations 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 chil-
	      dren).  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
	      policy 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
	      available	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
	      below 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: user-
	      Password,	gidNumber, gecos, homeDirectory	and  loginShell.   For
	      shadow  entries  the  following attributes may be	mapped with an
	      expression: userPassword,	shadowLastChange,  shadowMin,  shadow-
	      Max, shadowWarning, 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  un-
	      matchable	 password ("*")	to avoid accidentally leaking password
	      information.

   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
	      specified	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 seconds.

       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  de-
	      fault, 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  sim-
       pler  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
	      returned 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 unavailabil-
	      ity 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 nu-
	      meric user ids.  This can	be used	to avoid  user	id  collisions
	      with  local  users or, when using	objectSid attributes, for com-
	      patibility reasons.

	      The value	from the nss_min_uid option is evaluated after	apply-
	      ing the offset.

       nss_gid_offset NUMBER
	      This  option  specifies  an offset that is added to all LDAP nu-
	      meric group ids.	This can be used to avoid user	id  collisions
	      with  local groups or, when using	objectSid attributes, for com-
	      patibility 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  informa-
	      tion about group membership which	may confuse some applications.
	      This option 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  de-
	      pend  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
	      typically	used in	situations where user/program access  to  enu-
	      merate the entire	directory is undesirable, and changing the be-
	      havior  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,
	      netgroup,	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 ser-
	      vice.  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
	      authentication.	By default the controls	are requested and han-
	      dled 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,
	      $domain, $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
	      alternative 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
	      incorrect	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  re-
	      member that a particular entry was not found.  If	the second pa-
	      rameter 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
	      remember	DN  to	username lookups that are used when the	member
	      attribute	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
	      interface	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.
       Instead of variable substitution, attribute lookups  are	 done  on  the
       current	entry  and  the	attribute value	is substituted.	 The following
       expressions 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
       attributes  from	 LDAP.	Some examples to demonstrate how these expres-
       sions 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, re-
	      turning 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)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=nslcd.conf&sektion=5&manpath=FreeBSD+Ports+15.0>

home | help