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 any attribute as	it is available	in the
	      directory.

	      If the NEWATTRIBUTE is presented in quotes (") 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:

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

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

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

       "${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.12			   Nov 2021			 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+14.3.quarterly>

home | help