1SLAPD-CONFIG(5)               File Formats Manual              SLAPD-CONFIG(5)
2
3
4

NAME

6       slapd-config - configuration backend to slapd
7

SYNOPSIS

9       /etc/openldap/slapd.d
10

DESCRIPTION

12       The config backend manages all of the configuration information for the
13       slapd(8) daemon.  This configuration information is also  used  by  the
14       SLAPD tools slapacl(8), slapadd(8), slapauth(8), slapcat(8), slapdn(8),
15       slapindex(8), and slaptest(8).
16
17       The config backend is backward compatible with the older  slapd.conf(5)
18       file  but  provides the ability to change the configuration dynamically
19       at runtime. If slapd is run with only a slapd.conf file dynamic changes
20       will  be  allowed  but  they  will not persist across a server restart.
21       Dynamic changes are only saved when slapd is  running  from  a  slapd.d
22       configuration directory.
23
24       Unlike  other  backends,  there  can only be one instance of the config
25       backend, and most of its structure is predefined. The root of the data‐
26       base is hardcoded to cn=config and this root entry contains global set‐
27       tings for slapd. Multiple child entries underneath the root  entry  are
28       used to carry various other settings:
29
30              cn=Module
31                     dynamically loaded modules
32
33              cn=Schema
34                     schema definitions
35
36              olcBackend=xxx
37                     backend-specific settings
38
39              olcDatabase=xxx
40                     database-specific settings
41
42       The  cn=Module  entries  will only appear in configurations where slapd
43       was built with support for dynamically loaded  modules.  There  can  be
44       multiple  entries,  one  for  each  configured module path. Within each
45       entry there will be values recorded for each module loaded on  a  given
46       path. These entries have no children.
47
48       The cn=Schema entry contains all of the hardcoded schema elements.  The
49       children of this entry contain all user-defined  schema  elements.   In
50       schema  that  were  loaded  from include files, the child entry will be
51       named after the include file from which the schema was  loaded.   Typi‐
52       cally the first child in this subtree will be cn=core,cn=schema,cn=con‐
53       fig.
54
55       olcBackend entries are for storing settings specific to a single  back‐
56       end  type (and thus global to all database instances of that type).  At
57       present there are no backends that implement settings of  this  nature,
58       so usually there will not be any olcBackend entries.
59
60       olcDatabase  entries  store  settings  specific  to  a  single database
61       instance. These entries may have olcOverlay child entries corresponding
62       to  any overlays configured on the database. The olcDatabase and olcOv‐
63       erlay entries may also have miscellaneous child entries for other  set‐
64       tings as needed. There are two special database entries that are prede‐
65       fined - one is an entry for the config database itself, and  the  other
66       is  for  the "frontend" database. Settings in the frontend database are
67       inherited by the other databases, unless they are explicitly overridden
68       in a specific database.
69
70       The specific configuration options available are discussed below in the
71       Global Configuration Options,  General  Backend  Options,  and  General
72       Database Options. Options are set by defining LDAP attributes with spe‐
73       cific values.  In general the names of the LDAP attributes are the same
74       as the corresponding slapd.conf keyword, with an "olc" prefix added on.
75
76       The parser for many of these attributes is the same as used for parsing
77       the slapd.conf keywords. As such, slapd.conf keywords that allow multi‐
78       ple  items  to  be specified on one line, separated by whitespace, will
79       allow multiple items to be specified in one attribute  value.  However,
80       when  reading  the  attribute  via  LDAP, the items will be returned as
81       individual attribute values.
82
83       Backend-specific options are discussed in the slapd-<backend>(5) manual
84       pages.   Refer to the "OpenLDAP Administrator's Guide" for more details
85       on configuring slapd.
86

GLOBAL CONFIGURATION OPTIONS

88       Options described in this section apply  to  the  server  as  a  whole.
89       Arguments  that should be replaced by actual text are shown in brackets
90       <>.
91
92       These options may only be specified in the cn=config entry. This  entry
93       must have an objectClass of olcGlobal.
94
95
96       olcAllows: <features>
97              Specify  a  set  of  features  to allow (default none).  bind_v2
98              allows acceptance of LDAPv2 bind requests.  Note  that  slapd(8)
99              does  not  truly  implement LDAPv2 (RFC 1777), now Historic (RFC
100              3494).  bind_anon_cred allows anonymous  bind  when  credentials
101              are  not  empty  (e.g.   when DN is empty).  bind_anon_dn allows
102              unauthenticated  (anonymous)  bind  when  DN   is   not   empty.
103              update_anon allows unauthenticated (anonymous) update operations
104              to be processed (subject to access controls and  other  adminis‐
105              trative   limits).    proxy_authz_anon   allows  unauthenticated
106              (anonymous) proxy authorization control to be processed (subject
107              to  access controls, authorization and other administrative lim‐
108              its).
109
110       olcArgsFile: <filename>
111              The (absolute) name of a file that will hold the slapd  server's
112              command line (program name and options).
113
114       olcAttributeOptions: <option-name>...
115              Define  tagging  attribute options or option tag/range prefixes.
116              Options must not end with `-', prefixes must end with `-'.   The
117              `lang-'  prefix  is  predefined.  If you use the olcAttributeOp‐
118              tions directive, `lang-' will no longer be defined and you  must
119              specify it explicitly if you want it defined.
120
121              An  attribute  description with a tagging option is a subtype of
122              that attribute description without the option.  Except for that,
123              options  defined  this  way have no special semantics.  Prefixes
124              defined this way work like the `lang-' options:  They  define  a
125              prefix  for  tagging options starting with the prefix.  That is,
126              if you define the  prefix  `x-foo-',  you  can  use  the  option
127              `x-foo-bar'.   Furthermore,  in a search or compare, a prefix or
128              range name (with a trailing `-') matches  all  options  starting
129              with  that  name, as well as the option with the range name sans
130              the trailing `-'.  That is, `x-foo-bar-' matches `x-foo-bar' and
131              `x-foo-bar-baz'.
132
133              RFC 4520 reserves options beginning with `x-' for private exper‐
134              iments.  Other options should be registered with IANA,  see  RFC
135              4520  section  3.5.  OpenLDAP also has the `binary' option built
136              in, but this is a transfer option, not a tagging option.
137
138       olcAuthIDRewrite: <rewrite-rule>
139              Used by the authentication  framework  to  convert  simple  user
140              names  to  an LDAP DN used for authorization purposes.  Its pur‐
141              pose is analogous to that of olcAuthzRegexp  (see  below).   The
142              rewrite-rule  is  a set of rules analogous to those described in
143              slapo-rwm(5) for data rewriting (after stripping the  rwm-  pre‐
144              fix).   olcAuthIDRewrite and olcAuthzRegexp should not be inter‐
145              mixed.
146
147       olcAuthzPolicy: <policy>
148              Used to specify which rules  to  use  for  Proxy  Authorization.
149              Proxy  authorization  allows  a  client  to  authenticate to the
150              server using one user's credentials,  but  specify  a  different
151              identity  to  use for authorization and access control purposes.
152              It essentially allows user A to login as user B, using user  A's
153              password.   The  none flag disables proxy authorization. This is
154              the default setting.  The  from  flag  will  use  rules  in  the
155              authzFrom  attribute  of the authorization DN.  The to flag will
156              use rules in the authzTo attribute  of  the  authentication  DN.
157              The  any  flag,  an alias for the deprecated value of both, will
158              allow any of the above, whatever succeeds first (checked in  to,
159              from  sequence.   The  all  flag requires both authorizations to
160              succeed.
161
162              The rules are mechanisms to specify which identities are allowed
163              to  perform  proxy authorization.  The authzFrom attribute in an
164              entry specifies which other users are allowed to proxy login  to
165              this  entry.  The  authzTo attribute in an entry specifies which
166              other users this user can authorize as.  Use  of  authzTo  rules
167              can  be  easily  abused  if users are allowed to write arbitrary
168              values to this attribute.  In general the authzTo attribute must
169              be  protected with ACLs such that only privileged users can mod‐
170              ify it.  The value of authzFrom and authzTo describes  an  iden‐
171              tity or a set of identities; it can take five forms:
172
173                     ldap:///<base>??[<scope>]?<filter>
174                     dn[.<dnstyle>]:<pattern>
175                     u[<mech>[<realm>]]:<pattern>
176                     group[/objectClass[/attributeType]]:<pattern>
177                     <pattern>
178
179                     <dnstyle>:={exact|onelevel|children|subtree|regex}
180
181              The  first form is a valid LDAP URI where the <host>:<port>, the
182              <attrs> and the <extensions> portions must be  absent,  so  that
183              the  search  occurs locally on either authzFrom or authzTo.  The
184              second form is a DN, with the optional  style  modifiers  exact,
185              onelevel,  children,  and  subtree for exact, onelevel, children
186              and subtree matches, which  cause  <pattern>  to  be  normalized
187              according  to  the  DN normalization rules, or the special regex
188              style, which causes the <pattern>  to  be  treated  as  a  POSIX
189              (''extended'')  regular  expression,  as  discussed  in regex(7)
190              and/or re_format(7).  A pattern of * means any non-anonymous DN.
191              The third form is a SASL id, with the optional fields <mech> and
192              <realm> that allow to specify a SASL mechanism, and eventually a
193              SASL  realm, for those mechanisms that support one.  The need to
194              allow the specification of a mechanism  is  still  debated,  and
195              users are strongly discouraged to rely on this possibility.  The
196              fourth form is a group specification, consisting of the  keyword
197              group,  optionally  followed  by  the specification of the group
198              objectClass and member attributeType.  The group with  DN  <pat‐
199              tern>  is  searched  with  base scope, and in case of match, the
200              values of the member attributeType are searched for the asserted
201              DN.   For  backwards  compatibility, if no identity type is pro‐
202              vided, i.e. only <pattern> is present, an exact DN  is  assumed;
203              as  a  consequence,  <pattern> is subjected to DN normalization.
204              Since the interpretation of authzFrom  and  authzTo  can  impact
205              security,  users  are  strongly encouraged to explicitly set the
206              type of identity specification that is being used.  A subset  of
207              these  rules  can  be  used  as  third arg in the olcAuthzRegexp
208              statement  (see  below);  significantly,   the   URI   and   the
209              dn.exact:<dn> forms.
210
211       olcAuthzRegexp: <match> <replace>
212              Used  by  the  authentication  framework  to convert simple user
213              names, such as provided by SASL subsystem, to an  LDAP  DN  used
214              for authorization purposes.  Note that the resultant DN need not
215              refer to an existing entry to  be  considered  valid.   When  an
216              authorization  request  is received from the SASL subsystem, the
217              SASL USERNAME, REALM, and MECHANISM are taken,  when  available,
218              and combined into a name of the form
219
220                     UID=<username>[[,CN=<realm>],CN=<mechanism>],CN=auth
221
222              This   name   is   then   compared   against   the  match  POSIX
223              (''extended'') regular expression, and if the match is  success‐
224              ful, the name is replaced with the replace string.  If there are
225              wildcard strings  in  the  match  regular  expression  that  are
226              enclosed in parenthesis, e.g.
227
228                     UID=([^,]*),CN=.*
229
230              then  the  portion of the name that matched the wildcard will be
231              stored in the numbered placeholder variable  $1.  If  there  are
232              other wildcard strings in parenthesis, the matching strings will
233              be in $2, $3, etc. up to $9. The placeholders can then  be  used
234              in the replace string, e.g.
235
236                     UID=$1,OU=Accounts,DC=example,DC=com
237
238              The  replaced name can be either a DN, i.e. a string prefixed by
239              "dn:", or an LDAP URI.  If the latter, the server will  use  the
240              URI  to  search  its  own database(s) and, if the search returns
241              exactly one entry, the name is replaced by the DN of that entry.
242              The  LDAP URI must have no hostport, attrs, or extensions compo‐
243              nents, but the filter is mandatory, e.g.
244
245                     ldap:///OU=Accounts,DC=example,DC=com??one?(UID=$1)
246
247              The protocol portion of the URI must  be  strictly  ldap.   Note
248              that  this  search is subject to access controls.  Specifically,
249              the authentication identity must have "auth" access in the  sub‐
250              ject.
251
252              Multiple  olcAuthzRegexp  values  can  be specified to allow for
253              multiple matching and replacement patterns.  The  matching  pat‐
254              terns  are  checked  in  the order they appear in the attribute,
255              stopping at the first successful match.
256
257
258       olcConcurrency: <integer>
259              Specify a desired level of concurrency.  Provided to the  under‐
260              lying  thread  system  as a hint.  The default is not to provide
261              any hint. This setting is  only  meaningful  on  some  platforms
262              where  there  is  not  a  one to one correspondence between user
263              threads and kernel threads.
264
265       olcConnMaxPending: <integer>
266              Specify the maximum number of pending requests for an  anonymous
267              session.   If  requests are submitted faster than the server can
268              process them, they will be queued up to this limit. If the limit
269              is exceeded, the session is closed. The default is 100.
270
271       olcConnMaxPendingAuth: <integer>
272              Specify  the maximum number of pending requests for an authenti‐
273              cated session.  The default is 1000.
274
275       olcDisallows: <features>
276              Specify a set of features to disallow (default none).  bind_anon
277              disables  acceptance of anonymous bind requests.  Note that this
278              setting  does  not  prohibit  anonymous  directory  access  (See
279              "require  authc").  bind_simple disables simple (bind) authenti‐
280              cation.  tls_2_anon disables forcing session to anonymous status
281              (see also tls_authc) upon StartTLS operation receipt.  tls_authc
282              disallows the StartTLS  operation  if  authenticated  (see  also
283              tls_2_anon).
284
285       olcGentleHUP: { TRUE | FALSE }
286              A  SIGHUP  signal  will  only cause a 'gentle' shutdown-attempt:
287              Slapd will stop listening for  new  connections,  but  will  not
288              close  the  connections  to  the  current clients.  Future write
289              operations return unwilling-to-perform,  though.   Slapd  termi‐
290              nates  when  all  clients have closed their connections (if they
291              ever do), or - as before - if  it  receives  a  SIGTERM  signal.
292              This can be useful if you wish to terminate the server and start
293              a new slapd server with another database, without disrupting the
294              currently  active  clients.  The default is FALSE.  You may wish
295              to use olcIdleTimeout along with this option.
296
297       olcIdleTimeout: <integer>
298              Specify the number of seconds to wait before forcibly closing an
299              idle  client  connection.  A setting of 0 disables this feature.
300              The default is 0. You may also want to set  the  olcWriteTimeout
301              option.
302
303       olcIndexIntLen: <integer>
304              Specify  the  key  length  for ordered integer indices. The most
305              significant bytes of the binary integer will be used  for  index
306              keys.  The default value is 4, which provides exact indexing for
307              31 bit values.  A floating point representation is used to index
308              too large values.
309
310       olcIndexSubstrIfMaxlen: <integer>
311              Specify  the maximum length for subinitial and subfinal indices.
312              Only this many characters of an attribute  value  will  be  pro‐
313              cessed  by  the  indexing  functions;  any excess characters are
314              ignored. The default is 4.
315
316       olcIndexSubstrIfMinlen: <integer>
317              Specify the minimum length for subinitial and subfinal  indices.
318              An  attribute  value  must have at least this many characters in
319              order to be processed by the indexing functions. The default  is
320              2.
321
322       olcIndexSubstrAnyLen: <integer>
323              Specify  the  length used for subany indices. An attribute value
324              must have at least this many characters  in  order  to  be  pro‐
325              cessed.  Attribute  values  longer than this length will be pro‐
326              cessed in segments of this length. The default is 4. The  subany
327              index will also be used in subinitial and subfinal index lookups
328              when the filter string is longer than the olcIndexSubstrIfMaxlen
329              value.
330
331       olcIndexSubstrAnyStep: <integer>
332              Specify  the steps used in subany index lookups. This value sets
333              the offset for the segments of a filter  string  that  are  pro‐
334              cessed for a subany index lookup. The default is 2. For example,
335              with the default values, a search using this filter  "cn=*abcde‐
336              fgh*"  would  generate  index  lookups  for  "abcd", "cdef", and
337              "efgh".
338
339
340       Note: Indexing support depends on the particular backend in use.  Also,
341       changing  these  settings  will  generally require deleting any indices
342       that depend on these parameters and recreating them with slapindex(8).
343
344
345       olcLocalSSF: <SSF>
346              Specifies the Security Strength Factor (SSF) to be  given  local
347              LDAP  sessions,  such  as those to the ldapi:// listener.  For a
348              description of SSF values, see olcSaslSecProps's  minssf  option
349              description.  The default is 71.
350
351       olcLogFile: <filename>
352              Specify  a  file  for  recording  debug log messages. By default
353              these messages only go to stderr and are not  recorded  anywhere
354              else.  Specifying  a  logfile copies messages to both stderr and
355              the logfile.
356
357       olcLogLevel: <integer> [...]
358              Specify the level at which debugging  statements  and  operation
359              statistics  should  be  syslogged  (currently logged to the sys‐
360              logd(8) LOG_LOCAL4 facility).  They must be  considered  subsys‐
361              tems rather than increasingly verbose log levels.  Some messages
362              with higher priority are logged  regardless  of  the  configured
363              loglevel  as  soon as any logging is configured.  Log levels are
364              additive, and available levels are:
365                     1      (0x1 trace) trace function calls
366                     2      (0x2 packets) debug packet handling
367                     4      (0x4 args) heavy trace debugging (function args)
368                     8      (0x8 conns) connection management
369                     16     (0x10 BER) print out packets sent and received
370                     32     (0x20 filter) search filter processing
371                     64     (0x40 config) configuration file processing
372                     128    (0x80 ACL) access control list processing
373                     256    (0x100   stats)   stats   log   connections/opera‐
374                            tions/results
375                     512    (0x200 stats2) stats log entries sent
376                     1024   (0x400 shell) print communication with shell back‐
377                            ends
378                     2048   (0x800 parse) entry parsing
379
380
381
382
383
384
385
386
387                     16384  (0x4000 sync) LDAPSync replication
388                     32768  (0x8000 none) only messages that get logged  what‐
389                            ever log level is set
390              The desired log level can be input as a single integer that com‐
391              bines the (ORed) desired levels, both in decimal or in hexadeci‐
392              mal  notation, as a list of integers (that are ORed internally),
393              or as a list of the names that are shown between brackets,  such
394              that
395
396                  olcLogLevel: 129
397                  olcLogLevel: 0x81
398                  olcLogLevel: 128 1
399                  olcLogLevel: 0x80 0x1
400                  olcLogLevel: acl trace
401
402              are  equivalent.   The  keyword any can be used as a shortcut to
403              enable logging at all levels (equivalent to  -1).   The  keyword
404              none,  or  the  equivalent  integer representation, causes those
405              messages  that  are  logged   regardless   of   the   configured
406              olcLogLevel  to  be  logged.  In fact, if no olcLogLevel (or a 0
407              level) is defined, no logging occurs, so at least the none level
408              is required to have high priority messages logged.
409
410       olcPasswordCryptSaltFormat: <format>
411              Specify  the format of the salt passed to crypt(3) when generat‐
412              ing {CRYPT} passwords (see olcPasswordHash) during processing of
413              LDAP Password Modify Extended Operations (RFC 3062).
414
415              This string needs to be in sprintf(3) format and may include one
416              (and only one) %s conversion.  This conversion will  be  substi‐
417              tuted  with  a  string  of random characters from [A-Za-z0-9./].
418              For example, "%.2s" provides a two character salt and  "$1$%.8s"
419              tells some versions of crypt(3) to use an MD5 algorithm and pro‐
420              vides 8 random characters of salt.  The default is  "%s",  which
421              provides 31 characters of salt.
422
423       olcPidFile: <filename>
424              The  (absolute) name of a file that will hold the slapd server's
425              process ID (see getpid(2)).
426
427       olcPluginLogFile: <filename>
428              The ( absolute ) name of a file that will contain  log  messages
429              from SLAPI plugins. See slapd.plugin(5) for details.
430
431       olcReferral: <url>
432              Specify  the  referral  to pass back when slapd(8) cannot find a
433              local database to handle a  request.   If  multiple  values  are
434              specified, each url is provided.
435
436       olcReverseLookup: TRUE | FALSE
437              Enable/disable client name unverified reverse lookup (default is
438              FALSE if compiled with --enable-rlookups).
439
440       olcRootDSE: <file>
441              Specify the name of an  LDIF(5)  file  containing  user  defined
442              attributes  for  the root DSE.  These attributes are returned in
443              addition to the attributes normally produced by slapd.
444
445              The root DSE is an entry with information about the  server  and
446              its  capabilities,  in operational attributes.  It has the empty
447              DN, and can be read with e.g.:
448                  ldapsearch -x -b "" -s base "+"
449              See RFC 4512 section 5.1 for details.
450
451       olcSaslAuxprops: <plugin> [...]
452              Specify which auxprop plugins to use for authentication lookups.
453              The  default is empty, which just uses slapd's internal support.
454              Usually no other auxprop plugins are needed.
455
456       olcSaslHost: <fqdn>
457              Used to specify the fully qualified domain name  used  for  SASL
458              processing.
459
460       olcSaslRealm: <realm>
461              Specify SASL realm.  Default is empty.
462
463       olcSaslSecProps: <properties>
464              Used  to  specify Cyrus SASL security properties.  The none flag
465              (without  any  other  properties)  causes  the  flag  properties
466              default, "noanonymous,noplain", to be cleared.  The noplain flag
467              disables mechanisms susceptible to simple passive attacks.   The
468              noactive flag disables mechanisms susceptible to active attacks.
469              The nodict flag disables mechanisms susceptible to passive  dic‐
470              tionary attacks.  The noanonymous flag disables mechanisms which
471              support anonymous login.  The forwardsec  flag  require  forward
472              secrecy between sessions.  The passcred require mechanisms which
473              pass client credentials (and allow  mechanisms  which  can  pass
474              credentials  to  do so).  The minssf=<factor> property specifies
475              the minimum acceptable security strength factor  as  an  integer
476              approximate  to  effective  key  length  used for encryption.  0
477              (zero) implies no protection,  1  implies  integrity  protection
478              only, 56 allows DES or other weak ciphers, 112 allows triple DES
479              and other strong ciphers, 128 allows  RC4,  Blowfish  and  other
480              modern  strong  ciphers.  The default is 0.  The maxssf=<factor>
481              property specifies the maximum acceptable security strength fac‐
482              tor  as  an  integer  (see  minssf description).  The default is
483              INT_MAX.  The maxbufsize=<size> property specifies  the  maximum
484              security layer receive buffer size allowed.  0 disables security
485              layers.  The default is 65536.
486
487       olcServerID: <integer> [<URL>]
488              Specify an integer ID from 0 to 4095 for this server (limited to
489              3  hexadecimal digits).  The ID may also be specified as a hexa‐
490              decimal ID by prefixing the value  with  "0x".   These  IDs  are
491              required when using multimaster replication and each master must
492              have a unique ID. Note that this  requirement  also  applies  to
493              separate  masters  contributing to a glued set of databases.  If
494              the URL is provided, this directive may  be  specified  multiple
495              times,  providing  a  complete list of participating servers and
496              their IDs. The fully qualified hostname of each server should be
497              used  in the supplied URLs. The IDs are used in the "replica id"
498              field of all CSNs generated by the specified server. The default
499              value is zero.  Example:
500
501            olcServerID: 1 ldap://ldap1.example.com
502            olcServerID: 2 ldap://ldap2.example.com
503
504       olcSockbufMaxIncoming: <integer>
505              Specify  the  maximum  incoming LDAP PDU size for anonymous ses‐
506              sions.  The default is 262143.
507
508       olcSockbufMaxIncomingAuth: <integer>
509              Specify the maximum incoming LDAP  PDU  size  for  authenticated
510              sessions.  The default is 4194303.
511
512       olcTCPBuffer [listener=<URL>] [{read|write}=]<size>
513              Specify  the  size  of  the TCP buffer.  A global value for both
514              read and write TCP buffers related to any listener  is  defined,
515              unless  the listener is explicitly specified, or either the read
516              or write qualifiers are used.  See  tcp(7)  for  details.   Note
517              that some OS-es implement automatic TCP buffer tuning.
518
519       olcThreads: <integer>
520              Specify  the  maximum  size  of  the  primary  thread pool.  The
521              default is 16; the minimum value is 2.
522
523       olcToolThreads: <integer>
524              Specify the maximum number of threads to use in tool mode.  This
525              should  not  be  greater  than the number of CPUs in the system.
526              The default is 1.
527
528       olcWriteTimeout: <integer>
529              Specify the number of seconds to wait before forcibly closing  a
530              connection with an outstanding write.  This allows recovery from
531              various network hang conditions.  A setting of 0  disables  this
532              feature.  The default is 0.
533

TLS OPTIONS

535       If  slapd is built with support for Transport Layer Security, there are
536       more options you can specify.
537
538       olcTLSCipherSuite: <cipher-suite-spec>
539              Permits configuring what ciphers will be accepted and the  pref‐
540              erence order.  <cipher-suite-spec> should be a cipher specifica‐
541              tion for OpenSSL.  Example:
542
543              olcTLSCipherSuite: HIGH:MEDIUM:+SSLv2
544
545              To check what ciphers a given spec selects in OpenSSL, use:
546
547                   openssl ciphers -v <cipher-suite-spec>
548
549              To obtain the list of ciphers in GNUtls use:
550
551                   gnutls-cli -l
552
553       olcTLSCACertificateFile: <filename>
554              Specifies the file that contains certificates  for  all  of  the
555              Certificate Authorities that slapd will recognize.
556
557       olcTLSCACertificatePath: <path>
558              Specifies  the  path  of  a  directory that contains Certificate
559              Authority certificates in  separate  individual  files.  Usually
560              only  one  of this or the olcTLSCACertificateFile is defined. If
561              both are specified, both locations will be used. This  directive
562              is not supported when using GNUtls.
563
564       olcTLSCertificateFile: <filename>
565              Specifies the file that contains the slapd server certificate.
566
567       olcTLSCertificateKeyFile: <filename>
568              Specifies  the  file  that contains the slapd server private key
569              that matches the certificate stored in the olcTLSCertificateFile
570              file. If the private key is protected with a password, the pass‐
571              word must be manually typed in when slapd starts.   Usually  the
572              private  key is not protected with a password, to allow slapd to
573              start without manual intervention, so it is of  critical  impor‐
574              tance that the file is protected carefully.
575
576       olcTLSDHParamFile: <filename>
577              This  directive  specifies the file that contains parameters for
578              Diffie-Hellman ephemeral key  exchange.   This  is  required  in
579              order  to  use a DSA certificate on the server. If multiple sets
580              of parameters are present in the file, all of them will be  pro‐
581              cessed.  Note that setting this option may also enable Anonymous
582              Diffie-Hellman  key  exchanges  in  certain  non-default  cipher
583              suites.   You  should append "!ADH" to your cipher suites if you
584              have changed them from the  default,  otherwise  no  certificate
585              exchanges  or verification will be done. When using GNUtls these
586              parameters are always generated randomly so  this  directive  is
587              ignored.
588
589       olcTLSRandFile: <filename>
590              Specifies  the file to obtain random bits from when /dev/[u]ran‐
591              dom is  not  available.   Generally  set  to  the  name  of  the
592              EGD/PRNGD socket.  The environment variable RANDFILE can also be
593              used to specify the filename.  This directive  is  ignored  with
594              GNUtls.
595
596       olcTLSVerifyClient: <level>
597              Specifies  what  checks  to perform on client certificates in an
598              incoming TLS session, if any.  The <level> can be  specified  as
599              one of the following keywords:
600
601              never  This is the default.  slapd will not ask the client for a
602                     certificate.
603
604              allow  The client certificate is requested.  If  no  certificate
605                     is  provided,  the  session  proceeds normally.  If a bad
606                     certificate is provided, it will be ignored and the  ses‐
607                     sion proceeds normally.
608
609              try    The  client  certificate is requested.  If no certificate
610                     is provided, the session proceeds  normally.   If  a  bad
611                     certificate  is provided, the session is immediately ter‐
612                     minated.
613
614              demand | hard | true
615                     These keywords are all equivalent, for compatibility rea‐
616                     sons.   The  client certificate is requested.  If no cer‐
617                     tificate is provided, or a bad certificate  is  provided,
618                     the session is immediately terminated.
619
620                     Note that a valid client certificate is required in order
621                     to use the SASL EXTERNAL authentication mechanism with  a
622                     TLS  session.   As such, a non-default olcTLSVerifyClient
623                     setting must be chosen to enable SASL EXTERNAL  authenti‐
624                     cation.
625
626       olcTLSCRLCheck: <level>
627              Specifies  if  the  Certificate  Revocation List (CRL) of the CA
628              should be used to verify if the  client  certificates  have  not
629              been revoked. This requires olcTLSCACertificatePath parameter to
630              be set. This parameter is ignored with GNUtls.  <level>  can  be
631              specified as one of the following keywords:
632
633              none   No CRL checks are performed
634
635              peer   Check the CRL of the peer certificate
636
637              all    Check the CRL for a whole certificate chain
638
639       olcTLSCRLFile: <filename>
640              Specifies  a file containing a Certificate Revocation List to be
641              used for verifying that certificates have not been revoked. This
642              parameter is only valid when using GNUtls.
643

DYNAMIC MODULE OPTIONS

645       If  slapd  is  compiled  with  --enable-modules then the module-related
646       entries will be available. These entries are named cn=module{x},cn=con‐
647       fig  and  must  have the olcModuleList objectClass. One entry should be
648       created per olcModulePath.  Normally the config  engine  generates  the
649       "{x}"  index  in  the RDN automatically, so it can be omitted when ini‐
650       tially loading these entries.
651
652       olcModuleLoad: <filename>
653              Specify the name of a dynamically loadable module to  load.  The
654              filename may be an absolute path name or a simple filename. Non-
655              absolute names are searched for in the directories specified  by
656              the olcModulePath option.
657
658       olcModulePath: <pathspec>
659              Specify  a  list  of directories to search for loadable modules.
660              Typically the path is colon-separated but this  depends  on  the
661              operating  system.  The default is /usr/lib64/openldap, which is
662              where the standard OpenLDAP install will place its modules.
663

SCHEMA OPTIONS

665       Schema definitions are created as entries  in  the  cn=schema,cn=config
666       subtree.  These  entries must have the olcSchemaConfig objectClass.  As
667       noted above, the actual cn=schema,cn=config entry is predefined and any
668       values specified for it are ignored.
669
670
671       olcAttributetypes:     ( <oid>    [NAME <name>]    [DESC <description>]
672              [OBSOLETE]   [SUP <oid>]    [EQUALITY <oid>]    [ORDERING <oid>]
673              [SUBSTR <oid>]   [SYNTAX <oidlen>]  [SINGLE-VALUE]  [COLLECTIVE]
674              [NO-USER-MODIFICATION] [USAGE <attributeUsage>] )
675              Specify an attribute type using the LDAPv3 syntax defined in RFC
676              4512.   The  slapd  parser  extends  the  RFC 4512 definition by
677              allowing string forms as well as numeric OIDs to be used for the
678              attribute    OID   and   attribute   syntax   OID.    (See   the
679              olcObjectIdentifier description.)
680
681
682       olcDitContentRules:    ( <oid>    [NAME <name>]    [DESC <description>]
683              [OBSOLETE]      [AUX <oids>]      [MUST <oids>]     [MAY <oids>]
684              [NOT <oids>] )
685              Specify an DIT Content Rule using the LDAPv3 syntax  defined  in
686              RFC  4512.   The slapd parser extends the RFC 4512 definition by
687              allowing string forms as well as numeric OIDs to be used for the
688              attribute    OID   and   attribute   syntax   OID.    (See   the
689              olcObjectIdentifier description.)
690
691
692       olcObjectClasses: ( <oid> [NAME <name>] [DESC <description>] [OBSOLETE]
693              [SUP <oids>]   [{   ABSTRACT   |   STRUCTURAL   |  AUXILIARY  }]
694              [MUST <oids>] [MAY <oids>] )
695              Specify an objectclass using the LDAPv3 syntax  defined  in  RFC
696              4512.   The  slapd  parser  extends  the  RFC 4512 definition by
697              allowing string forms as well as numeric OIDs to be used for the
698              object  class  OID.   (See the olcObjectIdentifier description.)
699              Object classes are "STRUCTURAL" by default.
700
701       olcObjectIdentifier: <name> { <oid> | <name>[:<suffix>] }
702              Define a string name that equates to the given OID.  The  string
703              can  be  used  in  place  of  the numeric OID in objectclass and
704              attribute definitions. The name can also be used with  a  suffix
705              of the form ":xx" in which case the value "oid.xx" will be used.
706
707

GENERAL BACKEND OPTIONS

709       Options  in  these  entries only apply to the configuration of a single
710       type of backend. All backends may support this class of  options.   The
711       entry  must  be named olcBackend=<databasetype>,cn=config and must have
712       the olcBackendConfig objectClass.  <databasetype> should be one of bdb,
713       config,  dnssrv,  hdb,  ldap,  ldif, meta, monitor, null, passwd, perl,
714       relay, shell, or sql.  At present, no backend implements any options of
715       this type.
716
717

DATABASE OPTIONS

719       Database      options      are      set      in      entries      named
720       olcDatabase={x}<databasetype>,cn=config    and    must     have     the
721       olcDatabaseConfig objectClass. Normally the config engine generates the
722       "{x}" index in the  RDN  automatically,  so  it  can  be  omitted  when
723       initially loading these entries.
724
725       The  special frontend database is always numbered "{-1}" and the config
726       database is always numbered "{0}".
727
728

GLOBAL DATABASE OPTIONS

730       Options in this section may be set in the special  "frontend"  database
731       and  inherited in all the other databases. These options may be altered
732       by further settings in each specific database. The frontend entry  must
733       be    named    olcDatabase=frontend,cn=config   and   must   have   the
734       olcFrontendConfig objectClass.
735
736       olcAccess: to <what> [ by <who> <access> <control> ]+
737              Grant access (specified by <access>) to a set of entries  and/or
738              attributes  (specified  by  <what>)  by  one  or more requestors
739              (specified by <who>).  If no access controls  are  present,  the
740              default  policy  allows anyone and everyone to read anything but
741              restricts updates to rootdn.   (e.g.,  "olcAccess:  to  *  by  *
742              read").   See  slapd.access(5) and the "OpenLDAP Administrator's
743              Guide" for details.
744
745              Access controls set in the frontend are appended to  any  access
746              controls  set  on  the  specific  databases.   The  rootdn  of a
747              database can always read and write EVERYTHING in that database.
748
749              Extra special care must be taken with the access controls on the
750              config  database. Unlike other databases, the default policy for
751              the config database is to  only  allow  access  to  the  rootdn.
752              Regular  users  should  not  have  read access, and write access
753              should be granted very carefully to privileged administrators.
754
755
756       olcDefaultSearchBase: <dn>
757              Specify a default search base to use when client submits a  non-
758              base  search  request with an empty base DN.  Base scoped search
759              requests with an empty base DN are not affected.   This  setting
760              is only allowed in the frontend entry.
761
762       olcPasswordHash: <hash> [<hash>...]
763              This  option  configures  one  or  more  hashes  to  be  used in
764              generation  of  user  passwords  stored  in   the   userPassword
765              attribute  during  processing  of  LDAP Password Modify Extended
766              Operations (RFC 3062).  The <hash> must be one of {SSHA}, {SHA},
767              {SMD5}, {MD5}, {CRYPT}, and {CLEARTEXT}.  The default is {SSHA}.
768
769              {SHA}  and  {SSHA}  use  the  SHA-1  algorithm (FIPS 160-1), the
770              latter with a seed.
771
772              {MD5} and {SMD5} use the MD5 algorithm (RFC  1321),  the  latter
773              with a seed.
774
775              {CRYPT} uses the crypt(3).
776
777              {CLEARTEXT}  indicates  that the new password should be added to
778              userPassword as clear text.
779
780              Note  that  this  option  does  not  alter   the   normal   user
781              applications  handling  of userPassword during LDAP Add, Modify,
782              or other LDAP operations.  This setting is only allowed  in  the
783              frontend entry.
784
785       olcReadOnly: TRUE | FALSE
786              This  option  puts  the  database  into  "read-only"  mode.  Any
787              attempts to modify the database will  return  an  "unwilling  to
788              perform"  error.   By  default,  olcReadOnly is FALSE. Note that
789              when this option is set TRUE on the frontend, it cannot be reset
790              without  restarting  the  server,  since  further  writes to the
791              config database will be rejected.
792
793       olcRequires: <conditions>
794              Specify a set of conditions  to  require  (default  none).   The
795              directive   may   be  specified  globally  and/or  per-database;
796              databases   inherit   global   conditions,    so    per-database
797              specifications are additive.  bind requires bind operation prior
798              to directory operations.  LDAPv3 requires session  to  be  using
799              LDAP   version   3.   authc  requires  authentication  prior  to
800              directory operations.  SASL requires SASL  authentication  prior
801              to  directory operations.  strong requires strong authentication
802              prior  to  directory  operations.   The  strong  keyword  allows
803              protected    "simple"    authentication    as   well   as   SASL
804              authentication.  none may  be  used  to  require  no  conditions
805              (useful to clear out globally set conditions within a particular
806              database); it must occur first in the list of conditions.
807
808       olcRestrict: <oplist>
809              Specify a list of operations that are restricted.   Restrictions
810              on   a   specific   database   override  any  frontend  setting.
811              Operations  can  be  any  of   add,   bind,   compare,   delete,
812              extended[=<OID>], modify, rename, search, or the special pseudo-
813              operations read and write, which respectively summarize read and
814              write  operations.   The  use of restrict write is equivalent to
815              olcReadOnly: TRUE (see above).  The extended keyword  allows  to
816              indicate the OID of the specific operation to be restricted.
817
818       olcSchemaDN: <dn>
819              Specify  the  distinguished name for the subschema subentry that
820              controls  the  entries  on  this   server.    The   default   is
821              "cn=Subschema".
822
823       olcSecurity: <factors>
824              Specify  a  set of security strength factors (separated by white
825              space) to require (see olcSaslSecprops's  minssf  option  for  a
826              description of security strength factors).  The directive may be
827              specified globally and/or per-database.  ssf=<n>  specifies  the
828              overall  security  strength factor.  transport=<n> specifies the
829              transport security strength factor.  tls=<n> specifies  the  TLS
830              security  strength factor.  sasl=<n> specifies the SASL security
831              strength factor.  update_ssf=<n> specifies the overall  security
832              strength    factor    to    require   for   directory   updates.
833              update_transport=<n> specifies the transport  security  strength
834              factor   to   require  for  directory  updates.   update_tls=<n>
835              specifies the  TLS  security  strength  factor  to  require  for
836              directory  updates.  update_sasl=<n> specifies the SASL security
837              strength   factor   to   require    for    directory    updates.
838              simple_bind=<n>  specifies the security strength factor required
839              for simple  username/password  authentication.   Note  that  the
840              transport   factor  is  measure  of  security  provided  by  the
841              underlying transport, e.g. ldapi:// (and eventually IPSEC).   It
842              is not normally used.
843
844       olcSizeLimit: {<integer>|unlimited}
845
846       olcSizeLimit: size[.{soft|hard|unchecked}]=<integer> [...]
847              Specify  the  maximum  number of entries to return from a search
848              operation.  The default size limit is  500.   Use  unlimited  to
849              specify  no  limits.   The  second  format  allows  a fine grain
850              setting of the size limits.  Extra args can be added in the same
851              value or as additional values.  See olcLimits for an explanation
852              of the different flags.
853
854       olcSortVals: <attr> [...]
855              Specify a list of  multi-valued  attributes  whose  values  will
856              always  be  maintained  in  sorted order. Using this option will
857              allow  Modify,  Compare,  and  filter   evaluations   on   these
858              attributes  to be performed more efficiently. The resulting sort
859              order depends on the attributes' syntax and matching  rules  and
860              may  not  correspond  to lexical order or any other recognizable
861              order.  This setting is only allowed in the frontend entry.
862
863       olcTimeLimit: {<integer>|unlimited}
864
865       olcTimeLimit: time[.{soft|hard}]=<integer> [...]
866              Specify the maximum number of seconds (in real time) slapd  will
867              spend  answering  a  search  request.  The default time limit is
868              3600.  Use unlimited to specify no limits.   The  second  format
869              allows  a fine grain setting of the time limits.  Extra args can
870              be added in  the  same  value  or  as  additional  values.   See
871              olcLimits for an explanation of the different flags.
872
873

GENERAL DATABASE OPTIONS

875       Options  in  this section only apply to the specific database for which
876       they are defined.  They are supported by every type of backend. All  of
877       the Global Database Options may also be used here.
878
879       olcAddContentAcl: TRUE | FALSE
880              Controls  whether  Add operations will perform ACL checks on the
881              content of the entry being added. This check is off by  default.
882              See  the  slapd.access(5)  manual  page  for more details on ACL
883              requirements for Add operations.
884
885       olcHidden: TRUE | FALSE
886              Controls whether the database will be used to answer queries.  A
887              database  that  is  hidden  will never be selected to answer any
888              queries, and any suffix  configured  on  the  database  will  be
889              ignored  in  checks  for  conflicts  with  other  databases.  By
890              default, olcHidden is FALSE.
891
892       olcLastMod: TRUE | FALSE
893              Controls  whether  slapd   will   automatically   maintain   the
894              modifiersName,      modifyTimestamp,      creatorsName,      and
895              createTimestamp attributes for entries.  It  also  controls  the
896              entryCSN  and  entryUUID  attributes,  which  are  needed by the
897              syncrepl provider. By default, olcLastMod is TRUE.
898
899       olcLimits: <selector> <limit> [<limit> [...]]
900              Specify time and size limits based on the operation's  initiator
901              or base DN.  The argument <selector> can be any of
902
903                     anonymous    |    users    |    [<dnspec>=]<pattern>    |
904                     group[/oc[/at]]=<pattern>
905
906              with
907
908                     <dnspec> ::= dn[.<type>][.<style>]
909
910                     <type>  ::= self | this
911
912                     <style> ::= exact | base | onelevel | subtree |  children
913                     | regex | anonymous
914
915              DN type self is the default and means the bound user, while this
916              means the base DN of the operation.  The term anonymous  matches
917              all   unauthenticated  clients.   The  term  users  matches  all
918              authenticated clients; otherwise an exact dn pattern is  assumed
919              unless  otherwise  specified  by  qualifying  the (optional) key
920              string dn with exact or base (which are synonyms), to require an
921              exact  match;  with  onelevel,  to  require exactly one level of
922              depth match; with subtree, to allow any level  of  depth  match,
923              including  the exact match; with children, to allow any level of
924              depth match, not including the  exact  match;  regex  explicitly
925              requires  the  (default)  match  based  on  POSIX (''extended'')
926              regular expression pattern.  Finally, anonymous matches  unbound
927              operations;  the pattern field is ignored.  The same behavior is
928              obtained by using the anonymous form of the  <selector>  clause.
929              The   term   group,   with   the  optional  objectClass  oc  and
930              attributeType at fields, followed by pattern,  sets  the  limits
931              for  any  DN  listed  in the values of the at attribute (default
932              member) of the oc group objectClass (default groupOfNames) whose
933              DN exactly matches pattern.
934
935              The currently supported limits are size and time.
936
937              The  syntax  for  time  limits  is time[.{soft|hard}]=<integer>,
938              where  integer  is  the  number  of  seconds  slapd  will  spend
939              answering  a  search  request.   If  no time limit is explicitly
940              requested by  the  client,  the  soft  limit  is  used;  if  the
941              requested  time  limit  exceeds the hard limit, the value of the
942              limit is used instead.  If the hard limit is set to the  keyword
943              soft, the soft limit is used in either case; if it is set to the
944              keyword unlimited, no hard limit is enforced.  Explicit requests
945              for  time limits smaller or equal to the hard limit are honored.
946              If no limit specifier is set, the value is assigned to the  soft
947              limit,  and  the  hard  limit  is  set  to soft, to preserve the
948              original behavior.
949
950              The        syntax        for        size        limits        is
951              size[.{soft|hard|unchecked}]=<integer>,  where  integer  is  the
952              maximum number of entries slapd will return answering  a  search
953              request.   If  no  size  limit  is  explicitly  requested by the
954              client, the soft limit is used;  if  the  requested  size  limit
955              exceeds  the hard limit, the value of the limit is used instead.
956              If the hard limit is set to the keyword soft, the soft limit  is
957              used  in  either case; if it is set to the keyword unlimited, no
958              hard limit is  enforced.   Explicit  requests  for  size  limits
959              smaller  or  equal to the hard limit are honored.  The unchecked
960              specifier sets a limit on the  number  of  candidates  a  search
961              request  is allowed to examine.  The rationale behind it is that
962              searches for non-properly indexed attributes may result in large
963              sets  of  candidates,  which  must  be  examined  by slapd(8) to
964              determine whether they match the  search  filter  or  not.   The
965              unchecked  limit provides a means to drop such operations before
966              they are even started.  If the selected  candidates  exceed  the
967              unchecked  limit,  the  search  will  abort  with  Unwilling  to
968              perform.  If it is set to the keyword  unlimited,  no  limit  is
969              applied  (the  default).  If it is set to disable, the search is
970              not even performed; this can be used to disallow searches for  a
971              specific  set of users.  If no limit specifier is set, the value
972              is assigned to the soft limit, and the  hard  limit  is  set  to
973              soft, to preserve the original behavior.
974
975              In  case  of  no match, the global limits are used.  The default
976              values are the same as for  olcSizeLimit  and  olcTimeLimit;  no
977              limit is set on unchecked.
978
979              If  pagedResults  control  is  requested, the hard size limit is
980              used by default, because the request of a specific page size  is
981              considered an explicit request for a limitation on the number of
982              entries to be returned.  However, the size limit applies to  the
983              total  count of entries returned within the search, and not to a
984              single page.  Additional size limits may be enforced; the syntax
985              is  size.pr={<integer>|noEstimate|unlimited},  where  integer is
986              the max page size if no  explicit  limit  is  set;  the  keyword
987              noEstimate inhibits the server from returning an estimate of the
988              total number of  entries  that  might  be  returned  (note:  the
989              current  implementation  does  not  return  any  estimate).  The
990              keyword unlimited indicates that no  limit  is  applied  to  the
991              pagedResults      control     page     size.      The     syntax
992              size.prtotal={<integer>|unlimited|disabled}  allows  to  set   a
993              limit on the total number of entries that a pagedResults control
994              allows to return.  By default it is set to the hard limit.  When
995              set,  integer is the max number of entries that the whole search
996              with pagedResults control can return.  Use  unlimited  to  allow
997              unlimited  number  of  entries to be returned, e.g. to allow the
998              use of the pagedResults control as a means  to  circumvent  size
999              limitations  on  regular searches; the keyword disabled disables
1000              the control, i.e. no paged results can be returned.   Note  that
1001              the  total  number  of  entries  returned  when the pagedResults
1002              control is requested  cannot  exceed  the  hard  size  limit  of
1003              regular searches unless extended by the prtotal switch.
1004
1005       olcMaxDerefDepth: <depth>
1006              Specifies  the  maximum  number  of  aliases to dereference when
1007              trying to resolve an entry, used to avoid infinite alias  loops.
1008              The default is 15.
1009
1010       olcMirrorMode: TRUE | FALSE
1011              This  option puts a replica database into "mirror" mode.  Update
1012              operations  will  be  accepted  from  any  user,  not  just  the
1013              updatedn.   The  database must already be configured as syncrepl
1014              consumer before  this  keyword  may  be  set.   This  mode  also
1015              requires  a  olcServerID  (see  above)  to  be  configured.   By
1016              default, this setting is FALSE.
1017
1018       olcPlugin: <plugin_type> <lib_path> <init_function> [<arguments>]
1019              Configure a SLAPI plugin. See the  slapd.plugin(5)  manpage  for
1020              more details.
1021
1022       olcRootDN: <dn>
1023              Specify  the  distinguished  name  that is not subject to access
1024              control or administrative limit restrictions for  operations  on
1025              this  database.   This  DN  may or may not be associated with an
1026              entry.  An empty root DN (the default) specifies no root  access
1027              is  to  be  granted.   It is recommended that the rootdn only be
1028              specified when needed  (such  as  when  initially  populating  a
1029              database).   If the rootdn is within a namingContext (suffix) of
1030              the database, a simple bind password may also be provided  using
1031              the  olcRootPW  directive. Note that the rootdn is always needed
1032              when using syncrepl.  The olcRootDN of  the  cn=config  database
1033              defaults to cn=config itself.
1034
1035       olcRootPW: <password>
1036              Specify  a  password  (or  hash of the password) for the rootdn.
1037              The password can only  be  set  if  the  rootdn  is  within  the
1038              namingContext (suffix) of the database.  This option accepts all
1039              RFC  2307  userPassword  formats  known  to  the   server   (see
1040              olcPasswordHash    description)    as    well    as   cleartext.
1041              slappasswd(8) may be used to generate  a  hash  of  a  password.
1042              Cleartext  and  {CRYPT} passwords are not recommended.  If empty
1043              (the default), authentication of the root DN is by  other  means
1044              (e.g. SASL).  Use of SASL is encouraged.
1045
1046       olcSubordinate: [TRUE | FALSE | advertise]
1047              Specify  that  the  current backend database is a subordinate of
1048              another backend database. A subordinate  database may have  only
1049              one  suffix.  This option may be used to glue multiple databases
1050              into a single namingContext.   If  the  suffix  of  the  current
1051              database  is  within  the  namingContext of a superior database,
1052              searches against the superior database will be propagated to the
1053              subordinate  as  well.  All  of  the databases associated with a
1054              single namingContext should have identical rootdns.  Behavior of
1055              other   LDAP  operations  is  unaffected  by  this  setting.  In
1056              particular, it is not possible to use moddn  to  move  an  entry
1057              from   one   subordinate   to  another  subordinate  within  the
1058              namingContext.
1059
1060              If the optional advertise flag is supplied, the  naming  context
1061              of  this  database is advertised in the root DSE. The default is
1062              to hide this database context, so that only the superior context
1063              is visible.
1064
1065              If  the  slap  tools slapcat(8), slapadd(8), or slapindex(8) are
1066              used on the  superior  database,  any  glued  subordinates  that
1067              support these tools are opened as well.
1068
1069              Databases  that  are glued together should usually be configured
1070              with the same indices (assuming they support indexing), even for
1071              attributes  that  only  exist  in  some  of  these databases. In
1072              general, all of the glued  databases  should  be  configured  as
1073              similarly  as  possible,  since  the  intent  is  to provide the
1074              appearance of a single directory.
1075
1076              Note  that  the   subordinate   functionality   is   implemented
1077              internally  by  the  glue  overlay and as such its behavior will
1078              interact with other  overlays  in  use.  By  default,  the  glue
1079              overlay  is  automatically configured as the last overlay on the
1080              superior  database.  Its  position  on  the  database   can   be
1081              explicitly  configured  by  setting an overlay glue directive at
1082              the desired position. This explicit configuration  is  necessary
1083              e.g.   when  using  the  syncprov overlay, which needs to follow
1084              glue in order to work over all of the glued databases. E.g.
1085                   dn: olcDatabase={1}bdb,cn=config
1086                   olcSuffix: dc=example,dc=com
1087                   ...
1088
1089                   dn: olcOverlay={0}glue,olcDatabase={1}bdb,cn=config
1090                   ...
1091
1092                   dn: olcOverlay={1}syncprov,olcDatabase={1}bdb,cn=config
1093                   ...
1094       See the Overlays section below for more details.
1095
1096       olcSuffix: <dn suffix>
1097              Specify the DN suffix of queries that will  be  passed  to  this
1098              backend  database.   Multiple  suffix  lines can be given and at
1099              least one is required for each database definition.
1100
1101              If the suffix of one database is "inside" that of  another,  the
1102              database   with   the  inner  suffix  must  come  first  in  the
1103              configuration file.  You may also want to  glue  such  databases
1104              together with the olcSubordinate attribute.
1105
1106       olcSyncUseSubentry: TRUE | FALSE
1107              Store  the  syncrepl  contextCSN  in  a  subentry instead of the
1108              context entry of  the  database.  The  subentry's  RDN  will  be
1109              "cn=ldapsync".  The  default is FALSE, meaning the contextCSN is
1110              stored in the context entry.
1111
1112       olcSyncrepl:  rid=<replica   ID>   provider=ldap[s]://<hostname>[:port]
1113              searchbase=<base     DN>    [type=refreshOnly|refreshAndPersist]
1114              [interval=dd:hh:mm:ss]   [retry=[<retry    interval>    <#    of
1115              retries>]+]  [filter=<filter  str>]  [scope=sub|one|base|subord]
1116              [attrs=<attr   list>]    [exattrs=<attr    list>]    [attrsonly]
1117              [sizelimit=<limit>]  [timelimit=<limit>] [schemachecking=on|off]
1118              [network-timeout=<seconds>]                  [timeout=<seconds>]
1119              [bindmethod=simple|sasl]     [binddn=<dn>]     [saslmech=<mech>]
1120              [authcid=<identity>] [authzid=<identity>] [credentials=<passwd>]
1121              [realm=<realm>]                          [secprops=<properties>]
1122              [keepalive=<idle>:<probes>:<interval>]   [starttls=yes|critical]
1123              [tls_cert=<file>]      [tls_key=<file>]      [tls_cacert=<file>]
1124              [tls_cacertdir=<path>]      [tls_reqcert=never|allow|try|demand]
1125              [tls_ciphersuite=<ciphers>]         [tls_crlcheck=none|peer|all]
1126              [logbase=<base       DN>]        [logfilter=<filter        str>]
1127              [syncdata=default|accesslog|changelog]
1128              Specify  the  current database as a replica which is kept up-to-
1129              date  with  the  master  content  by  establishing  the  current
1130              slapd(8)  as  a  replication  consumer  site  running a syncrepl
1131              replication engine.  The replica content is kept synchronized to
1132              the  master  content  using  the  LDAP  Content  Synchronization
1133              protocol. Refer to  the  "OpenLDAP  Administrator's  Guide"  for
1134              detailed  information on setting up a replicated slapd directory
1135              service using the syncrepl replication engine.
1136
1137              rid  identifies  the  current  syncrepl  directive  within   the
1138              replication  consumer site.  It is a non-negative integer having
1139              no more than three decimal digits.
1140
1141              provider specifies the replication provider site containing  the
1142              master  content  as  an  LDAP  URI.  If <port> is not given, the
1143              standard LDAP port number (389 or 636) is used.
1144
1145              The content of the syncrepl replica is defined  using  a  search
1146              specification  as  its  result set. The consumer slapd will send
1147              search requests to the provider slapd according  to  the  search
1148              specification.  The  search  specification  includes searchbase,
1149              scope,  filter,  attrs,  attrsonly,  sizelimit,  and   timelimit
1150              parameters  as  in  the normal search specification. The exattrs
1151              option may also be used to specify  attributes  that  should  be
1152              omitted  from  incoming entries.  The scope defaults to sub, the
1153              filter defaults to (objectclass=*),  and  there  is  no  default
1154              searchbase.  The attrs list defaults to "*,+" to return all user
1155              and operational attributes, and attrsonly and exattrs are  unset
1156              by default.  The sizelimit and timelimit only accept "unlimited"
1157              and positive integers, and both default to  "unlimited".   Note,
1158              however,  that  any  provider-side  limits  for  the replication
1159              identity will be enforced by  the  provider  regardless  of  the
1160              limits  requested by the LDAP Content Synchronization operation,
1161              much like for any other search operation.
1162
1163              The LDAP Content  Synchronization  protocol  has  two  operation
1164              types.   In  the refreshOnly operation, the next synchronization
1165              search operation is periodically rescheduled at an interval time
1166              (specified  by  interval parameter; 1 day by default) after each
1167              synchronization operation finishes.   In  the  refreshAndPersist
1168              operation,  a  synchronization  search remains persistent in the
1169              provider slapd.  Further updates  to  the  master  replica  will
1170              generate  searchResultEntry  to the consumer slapd as the search
1171              responses to the persistent synchronization search.
1172
1173              If an error occurs during replication, the consumer will attempt
1174              to reconnect according to the retry parameter which is a list of
1175              the <retry interval> and <# of  retries>  pairs.   For  example,
1176              retry="60 10 300 3" lets the consumer retry every 60 seconds for
1177              the first 10 times and then retry every 300 seconds for the next
1178              3  times  before  stop retrying. The `+' in <# of retries> means
1179              indefinite number of retries until success.
1180
1181              The schema checking can be enforced at the  LDAP  Sync  consumer
1182              site  by turning on the schemachecking parameter. The default is
1183              off.
1184
1185              The network-timeout parameter sets how long  the  consumer  will
1186              wait  to  establish a network connection to the provider. Once a
1187              connection is established, the timeout parameter determines  how
1188              long  the  consumer  will  wait  for the initial Bind request to
1189              complete.  The  defaults  for   these   parameters   come   from
1190              ldap.conf(5).
1191
1192              A   bindmethod   of  simple  requires  the  options  binddn  and
1193              credentials and should  only  be  used  when  adequate  security
1194              services (e.g. TLS or IPSEC) are in place.  A bindmethod of sasl
1195              requires the option saslmech.  Depending on  the  mechanism,  an
1196              authentication  identity  and/or  credentials  can  be specified
1197              using authcid and credentials.  The  authzid  parameter  may  be
1198              used  to  specify  an authorization identity.  Specific security
1199              properties (as with the sasl-secprops keyword above) for a  SASL
1200              bind  can  be  set  with the secprops option. A non default SASL
1201              realm can be set with the realm  option.   The  provider,  other
1202              than allow authentication of the syncrepl identity, should grant
1203              that identity appropriate access privileges to the data that  is
1204              being  replicated  (access  directive), and appropriate time and
1205              size limits (limits directive).
1206
1207              The keepalive parameter sets the values  of  idle,  probes,  and
1208              interval  used  to  check whether a socket is alive; idle is the
1209              number of seconds a connection needs to remain idle  before  TCP
1210              starts sending keepalive probes; probes is the maximum number of
1211              keepalive probes TCP should send before dropping the connection;
1212              interval  is  interval  in  seconds between individual keepalive
1213              probes.  Only some systems support the  customization  of  these
1214              values;  the  keepalive  parameter  is  ignored  otherwise,  and
1215              system-wide settings are used.
1216
1217              The starttls parameter specifies use of  the  StartTLS  extended
1218              operation  to  establish  a  TLS  session  before Binding to the
1219              provider. If the critical argument is supplied, the session will
1220              be aborted if the StartTLS request fails. Otherwise the syncrepl
1221              session continues without TLS. The tls_reqcert setting  defaults
1222              to  "demand"  and  the other TLS settings default to the same as
1223              the main slapd TLS settings.
1224
1225              Rather than replicating whole entries, the  consumer  can  query
1226              logs  of  data modifications. This mode of operation is referred
1227              to as delta syncrepl. In addition to the above  parameters,  the
1228              logbase  and  logfilter parameters must be set appropriately for
1229              the log that will be used. The syncdata parameter must be set to
1230              either "accesslog" if the log conforms to the slapo-accesslog(5)
1231              log format, or "changelog" if the log conforms to  the  obsolete
1232              changelog format. If the syncdata parameter is omitted or set to
1233              "default" then the log parameters are ignored.
1234
1235       olcUpdateDN: <dn>
1236              This  option  is  only  applicable  in  a  slave  database.   It
1237              specifies   the  DN  permitted  to  update  (subject  to  access
1238              controls) the replica.  It is only needed in  certain  push-mode
1239              replication  scenarios.   Generally,  this  DN should not be the
1240              same as the rootdn used at the master.
1241
1242       olcUpdateRef: <url>
1243              Specify the referral to pass back  when  slapd(8)  is  asked  to
1244              modify  a  replicated  local  database.   If multiple values are
1245              specified, each url is provided.
1246
1247

DATABASE-SPECIFIC OPTIONS

1249       Each database  may  allow  specific  configuration  options;  they  are
1250       documented   separately   in   the  backends'  manual  pages.  See  the
1251       slapd.backends(5) manual page for an overview of available backends.
1252

OVERLAYS

1254       An overlay is a piece of code that intercepts  database  operations  in
1255       order  to  extend or change them. Overlays are pushed onto a stack over
1256       the database, and so they will execute in the reverse of the  order  in
1257       which they were configured and the database itself will receive control
1258       last of all.
1259
1260       Overlays must be configured as child entries of  a  specific  database.
1261       The entry's RDN must be of the form olcOverlay={x}<overlaytype> and the
1262       entry must have the olcOverlayConfig objectClass. Normally  the  config
1263       engine generates the "{x}" index in the RDN automatically, so it can be
1264       omitted when initially loading these entries.
1265
1266       See the slapd.overlays(5) manual page  for  an  overview  of  available
1267       overlays.
1268

EXAMPLES

1270       Here  is  a  short  example of a configuration in LDIF suitable for use
1271       with slapadd(8) :
1272
1273              dn: cn=config
1274              objectClass: olcGlobal
1275              cn: config
1276              olcPidFile: /var/run/slapd.pid
1277              olcAttributeOptions: x-hidden lang-
1278
1279              dn: cn=schema,cn=config
1280              objectClass: olcSchemaConfig
1281              cn: schema
1282
1283              include: /etc/openldap/schema/core.ldif
1284
1285              dn: olcDatabase=frontend,cn=config
1286              objectClass: olcDatabaseConfig
1287              objectClass: olcFrontendConfig
1288              olcDatabase: frontend
1289              # Subtypes of "name" (e.g. "cn" and "ou") with the
1290              # option ";x-hidden" can be searched for/compared,
1291              # but are not shown.  See slapd.access(5).
1292              olcAccess: to attrs=name;x-hidden by * =cs
1293              # Protect passwords.  See slapd.access(5).
1294              olcAccess: to attrs=userPassword  by * auth
1295              # Read access to other attributes and entries.
1296              olcAccess: to * by * read
1297
1298              # set a rootpw for the config database so we can bind.
1299              # deny access to everyone else.
1300              dn: olcDatabase=config,cn=config
1301              objectClass: olcDatabaseConfig
1302              olcDatabase: config
1303              olcRootPW: {SSHA}XKYnrjvGT3wZFQrDD5040US592LxsdLy
1304              olcAccess: to * by * none
1305
1306              dn: olcDatabase=bdb,cn=config
1307              objectClass: olcDatabaseConfig
1308              objectClass: olcBdbConfig
1309              olcDatabase: bdb
1310              olcSuffix: "dc=our-domain,dc=com"
1311              # The database directory MUST exist prior to
1312              # running slapd AND should only be accessible
1313              # by the slapd/tools. Mode 0700 recommended.
1314              olcDbDirectory: /var/openldap-data
1315              # Indices to maintain
1316              olcDbIndex:     objectClass  eq
1317              olcDbIndex:     cn,sn,mail   pres,eq,approx,sub
1318
1319              # We serve small clients that do not handle referrals,
1320              # so handle remote lookups on their behalf.
1321              dn: olcDatabase=ldap,cn=config
1322              objectClass: olcDatabaseConfig
1323              objectClass: olcLdapConfig
1324              olcDatabase: ldap
1325              olcSuffix: ""
1326              olcDbUri: ldap://ldap.some-server.com/
1327
1328       Assuming the above data was saved in a file named "config.ldif" and the
1329       /etc/openldap/slapd.d  directory  has  been  created, this command will
1330       initialize the configuration:
1331              slapadd -F /etc/openldap/slapd.d -n 0 -l config.ldif
1332
1333
1334       "OpenLDAP Administrator's Guide" contains a longer annotated example of
1335       a slapd configuration.
1336
1337       Alternatively,  an existing slapd.conf file can be converted to the new
1338       format using slapd or any of the slap tools:
1339              slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
1340
1341

FILES

1343       /etc/openldap/slapd.conf
1344              default slapd configuration file
1345
1346       /etc/openldap/slapd.d
1347              default slapd configuration directory
1348

SEE ALSO

1350       ldap(3), ldif(5),  slapd.access(5),  slapd.backends(5),  slapd.conf(5),
1351       slapd.overlays(5),  slapd.plugin(5),  slapd(8), slapacl(8), slapadd(8),
1352       slapauth(8),  slapcat(8),   slapdn(8),   slapindex(8),   slappasswd(8),
1353       slaptest(8).
1354
1355       "OpenLDAP Administrator's Guide" (http://www.OpenLDAP.org/doc/admin/)
1356

ACKNOWLEDGEMENTS

1358       OpenLDAP  Software  is developed and maintained by The OpenLDAP Project
1359       <http://www.openldap.org/>.   OpenLDAP   Software   is   derived   from
1360       University of Michigan LDAP 3.3 Release.
1361
1362
1363
1364OpenLDAP 2.4.23                   2010/06/30                   SLAPD-CONFIG(5)
Impressum