]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blob - src/patches/openldap-2.6.5-consolidated-1.patch
backup(.pl): Replace OpenVPN DH parameter with ffdhe4096
[people/pmueller/ipfire-2.x.git] / src / patches / openldap-2.6.5-consolidated-1.patch
1 diff -Naurp openldap-2.6.2.orig/doc/man/man5/slapd.conf.5 openldap-2.6.2/doc/man/man5/slapd.conf.5
2 --- openldap-2.6.2.orig/doc/man/man5/slapd.conf.5 2022-05-04 16:55:23.000000000 +0200
3 +++ openldap-2.6.2/doc/man/man5/slapd.conf.5 2022-05-05 12:05:53.309727745 +0200
4 @@ -2122,7 +2122,7 @@ suffix "dc=our\-domain,dc=com"
5 # The database directory MUST exist prior to
6 # running slapd AND should only be accessible
7 # by the slapd/tools. Mode 0700 recommended.
8 -directory LOCALSTATEDIR/openldap\-data
9 +directory LOCALSTATEDIR/lib/openldap
10 # Indices to maintain
11 index objectClass eq
12 index cn,sn,mail pres,eq,approx,sub
13 diff -Naurp openldap-2.6.2.orig/doc/man/man5/slapd.conf.5.orig openldap-2.6.2/doc/man/man5/slapd.conf.5.orig
14 --- openldap-2.6.2.orig/doc/man/man5/slapd.conf.5.orig 1970-01-01 01:00:00.000000000 +0100
15 +++ openldap-2.6.2/doc/man/man5/slapd.conf.5.orig 2022-05-04 16:55:23.000000000 +0200
16 @@ -0,0 +1,2167 @@
17 +.TH SLAPD.CONF 5 "RELEASEDATE" "OpenLDAP LDVERSION"
18 +.\" Copyright 1998-2022 The OpenLDAP Foundation All Rights Reserved.
19 +.\" Copying restrictions apply. See COPYRIGHT/LICENSE.
20 +.\" $OpenLDAP$
21 +.SH NAME
22 +slapd.conf \- configuration file for slapd, the stand-alone LDAP daemon
23 +.SH SYNOPSIS
24 +ETCDIR/slapd.conf
25 +.SH DESCRIPTION
26 +The file
27 +.B ETCDIR/slapd.conf
28 +contains configuration information for the
29 +.BR slapd (8)
30 +daemon. This configuration file is also used by the SLAPD tools
31 +.BR slapacl (8),
32 +.BR slapadd (8),
33 +.BR slapauth (8),
34 +.BR slapcat (8),
35 +.BR slapdn (8),
36 +.BR slapindex (8),
37 +.BR slapmodify (8),
38 +and
39 +.BR slaptest (8).
40 +.LP
41 +The
42 +.B slapd.conf
43 +file consists of a series of global configuration options that apply to
44 +.B slapd
45 +as a whole (including all backends), followed by zero or more database
46 +backend definitions that contain information specific to a backend
47 +instance.
48 +The configuration options are case-insensitive;
49 +their value, on a case by case basis, may be case-sensitive.
50 +.LP
51 +The general format of
52 +.B slapd.conf
53 +is as follows:
54 +.LP
55 +.nf
56 + # comment - these options apply to every database
57 + <global configuration options>
58 + # first database definition & configuration options
59 + database <backend 1 type>
60 + <configuration options specific to backend 1>
61 + # subsequent database definitions & configuration options
62 + ...
63 +.fi
64 +.LP
65 +As many backend-specific sections as desired may be included. Global
66 +options can be overridden in a backend (for options that appear more
67 +than once, the last appearance in the
68 +.B slapd.conf
69 +file is used).
70 +.LP
71 +If a line begins with white space, it is considered a continuation
72 +of the previous line. No physical line should be over 2000 bytes
73 +long.
74 +.LP
75 +Blank lines and comment lines beginning with
76 +a `#' character are ignored. Note: continuation lines are unwrapped
77 +before comment processing is applied.
78 +.LP
79 +Arguments on configuration lines are separated by white space. If an
80 +argument contains white space, the argument should be enclosed in
81 +double quotes. If an argument contains a double quote (`"') or a
82 +backslash character (`\\'), the character should be preceded by a
83 +backslash character.
84 +.LP
85 +The specific configuration options available are discussed below in the
86 +Global Configuration Options, General Backend Options, and General Database
87 +Options. Backend-specific options are discussed in the
88 +.B slapd\-<backend>(5)
89 +manual pages. Refer to the "OpenLDAP Administrator's Guide" for more
90 +details on the slapd configuration file.
91 +.SH GLOBAL CONFIGURATION OPTIONS
92 +Options described in this section apply to all backends, unless specifically
93 +overridden in a backend definition. Arguments that should be replaced by
94 +actual text are shown in brackets <>.
95 +.TP
96 +.B access to <what> "[ by <who> <access> <control> ]+"
97 +Grant access (specified by <access>) to a set of entries and/or
98 +attributes (specified by <what>) by one or more requestors (specified
99 +by <who>).
100 +If no access controls are present, the default policy
101 +allows anyone and everyone to read anything but restricts
102 +updates to rootdn. (e.g., "access to * by * read").
103 +The rootdn can always read and write EVERYTHING!
104 +See
105 +.BR slapd.access (5)
106 +and the "OpenLDAP's Administrator's Guide" for details.
107 +.TP
108 +.B allow <features>
109 +Specify a set of features (separated by white space) to
110 +allow (default none).
111 +.B bind_v2
112 +allows acceptance of LDAPv2 bind requests. Note that
113 +.BR slapd (8)
114 +does not truly implement LDAPv2 (RFC 1777), now Historic (RFC 3494).
115 +.B bind_anon_cred
116 +allows anonymous bind when credentials are not empty (e.g.
117 +when DN is empty).
118 +.B bind_anon_dn
119 +allows unauthenticated (anonymous) bind when DN is not empty.
120 +.B update_anon
121 +allows unauthenticated (anonymous) update operations to be processed
122 +(subject to access controls and other administrative limits).
123 +.B proxy_authz_anon
124 +allows unauthenticated (anonymous) proxy authorization control to be processed
125 +(subject to access controls, authorization and other administrative limits).
126 +.TP
127 +.B argsfile <filename>
128 +The (absolute) name of a file that will hold the
129 +.B slapd
130 +server's command line (program name and options).
131 +.TP
132 +.B attributeoptions [option-name]...
133 +Define tagging attribute options or option tag/range prefixes.
134 +Options must not end with `\-', prefixes must end with `\-'.
135 +The `lang\-' prefix is predefined.
136 +If you use the
137 +.B attributeoptions
138 +directive, `lang\-' will no longer be defined and you must specify it
139 +explicitly if you want it defined.
140 +
141 +An attribute description with a tagging option is a subtype of that
142 +attribute description without the option.
143 +Except for that, options defined this way have no special semantics.
144 +Prefixes defined this way work like the `lang\-' options:
145 +They define a prefix for tagging options starting with the prefix.
146 +That is, if you define the prefix `x\-foo\-', you can use the option
147 +`x\-foo\-bar'.
148 +Furthermore, in a search or compare, a prefix or range name (with
149 +a trailing `\-') matches all options starting with that name, as well
150 +as the option with the range name sans the trailing `\-'.
151 +That is, `x\-foo\-bar\-' matches `x\-foo\-bar' and `x\-foo\-bar\-baz'.
152 +
153 +RFC 4520 reserves options beginning with `x\-' for private experiments.
154 +Other options should be registered with IANA, see RFC 4520 section 3.5.
155 +OpenLDAP also has the `binary' option built in, but this is a transfer
156 +option, not a tagging option.
157 +.HP
158 +.hy 0
159 +.B attributetype "(\ <oid>\
160 + [NAME\ <name>]\
161 + [DESC\ <description>]\
162 + [OBSOLETE]\
163 + [SUP\ <oid>]\
164 + [EQUALITY\ <oid>]\
165 + [ORDERING\ <oid>]\
166 + [SUBSTR\ <oid>]\
167 + [SYNTAX\ <oidlen>]\
168 + [SINGLE\-VALUE]\
169 + [COLLECTIVE]\
170 + [NO\-USER\-MODIFICATION]\
171 + [USAGE\ <attributeUsage>]\ )"
172 +.RS
173 +Specify an attribute type using the LDAPv3 syntax defined in RFC 4512.
174 +The slapd parser extends the RFC 4512 definition by allowing string
175 +forms as well as numeric OIDs to be used for the attribute OID and
176 +attribute syntax OID.
177 +(See the
178 +.B objectidentifier
179 +description.)
180 +.RE
181 +.TP
182 +.B authid\-rewrite<cmd> <args>
183 +Used by the authentication framework to convert simple user names
184 +to an LDAP DN used for authorization purposes.
185 +Its purpose is analogous to that of
186 +.BR authz-regexp
187 +(see below).
188 +The prefix \fIauthid\-\fP is followed by a set of rules analogous
189 +to those described in
190 +.BR slapo\-rwm (5)
191 +for data rewriting (replace the \fIrwm\-\fP prefix with \fIauthid\-\fP).
192 +.B authid\-rewrite<cmd>
193 +and
194 +.B authz\-regexp
195 +rules should not be intermixed.
196 +.TP
197 +.B authz\-policy <policy>
198 +Used to specify which rules to use for Proxy Authorization. Proxy
199 +authorization allows a client to authenticate to the server using one
200 +user's credentials, but specify a different identity to use for authorization
201 +and access control purposes. It essentially allows user A to login as user
202 +B, using user A's password.
203 +The
204 +.B none
205 +flag disables proxy authorization. This is the default setting.
206 +The
207 +.B from
208 +flag will use rules in the
209 +.I authzFrom
210 +attribute of the authorization DN.
211 +The
212 +.B to
213 +flag will use rules in the
214 +.I authzTo
215 +attribute of the authentication DN.
216 +The
217 +.B any
218 +flag, an alias for the deprecated value of
219 +.BR both ,
220 +will allow any of the above, whatever succeeds first (checked in
221 +.BR to ,
222 +.B from
223 +sequence.
224 +The
225 +.B all
226 +flag requires both authorizations to succeed.
227 +.LP
228 +.RS
229 +The rules are mechanisms to specify which identities are allowed
230 +to perform proxy authorization.
231 +The
232 +.I authzFrom
233 +attribute in an entry specifies which other users
234 +are allowed to proxy login to this entry. The
235 +.I authzTo
236 +attribute in
237 +an entry specifies which other users this user can authorize as. Use of
238 +.I authzTo
239 +rules can be easily
240 +abused if users are allowed to write arbitrary values to this attribute.
241 +In general the
242 +.I authzTo
243 +attribute must be protected with ACLs such that
244 +only privileged users can modify it.
245 +The value of
246 +.I authzFrom
247 +and
248 +.I authzTo
249 +describes an
250 +.B identity
251 +or a set of identities; it can take five forms:
252 +.RS
253 +.TP
254 +.B ldap:///<base>??[<scope>]?<filter>
255 +.RE
256 +.RS
257 +.B dn[.<dnstyle>]:<pattern>
258 +.RE
259 +.RS
260 +.B u[.<mech>[/<realm>]]:<pattern>
261 +.RE
262 +.RS
263 +.B group[/objectClass[/attributeType]]:<pattern>
264 +.RE
265 +.RS
266 +.B <pattern>
267 +.RE
268 +.RS
269 +
270 +.B <dnstyle>:={exact|onelevel|children|subtree|regex}
271 +
272 +.RE
273 +The first form is a valid LDAP
274 +.B URI
275 +where the
276 +.IR <host>:<port> ,
277 +the
278 +.I <attrs>
279 +and the
280 +.I <extensions>
281 +portions must be absent, so that the search occurs locally on either
282 +.I authzFrom
283 +or
284 +.IR authzTo .
285 +
286 +.LP
287 +The second form is a
288 +.BR DN .
289 +The optional
290 +.B dnstyle
291 +modifiers
292 +.IR exact ,
293 +.IR onelevel ,
294 +.IR children ,
295 +and
296 +.I subtree
297 +provide exact, onelevel, children and subtree matches, which cause
298 +.I <pattern>
299 +to be normalized according to the DN normalization rules.
300 +The special
301 +.B dnstyle
302 +modifier
303 +.I regex
304 +causes the
305 +.I <pattern>
306 +to be treated as a POSIX (''extended'') regular expression, as
307 +discussed in
308 +.BR regex (7)
309 +and/or
310 +.BR re_format (7).
311 +A pattern of
312 +.I *
313 +means any non-anonymous DN.
314 +
315 +.LP
316 +The third form is a SASL
317 +.BR id .
318 +The optional fields
319 +.I <mech>
320 +and
321 +.I <realm>
322 +allow specification of a SASL
323 +.BR mechanism ,
324 +and eventually a SASL
325 +.BR realm ,
326 +for those mechanisms that support one.
327 +The need to allow the specification of a mechanism is still debated,
328 +and users are strongly discouraged to rely on this possibility.
329 +
330 +.LP
331 +The fourth form is a group specification.
332 +It consists of the keyword
333 +.BR group ,
334 +optionally followed by the specification of the group
335 +.B objectClass
336 +and
337 +.BR attributeType .
338 +The
339 +.B objectClass
340 +defaults to
341 +.IR groupOfNames .
342 +The
343 +.B attributeType
344 +defaults to
345 +.IR member .
346 +The group with DN
347 +.B <pattern>
348 +is searched with base scope, filtered on the specified
349 +.BR objectClass .
350 +The values of the resulting
351 +.B attributeType
352 +are searched for the asserted DN.
353 +
354 +.LP
355 +The fifth form is provided for backwards compatibility. If no identity
356 +type is provided, i.e. only
357 +.B <pattern>
358 +is present, an
359 +.I exact DN
360 +is assumed; as a consequence,
361 +.B <pattern>
362 +is subjected to DN normalization.
363 +
364 +.LP
365 +Since the interpretation of
366 +.I authzFrom
367 +and
368 +.I authzTo
369 +can impact security, users are strongly encouraged
370 +to explicitly set the type of identity specification that is being used.
371 +A subset of these rules can be used as third arg in the
372 +.B authz\-regexp
373 +statement (see below); significantly, the
374 +.IR URI ,
375 +provided it results in exactly one entry,
376 +and the
377 +.I dn.exact:<dn>
378 +forms.
379 +.RE
380 +.TP
381 +.B authz\-regexp <match> <replace>
382 +Used by the authentication framework to convert simple user names,
383 +such as provided by SASL subsystem, or extracted from certificates
384 +in case of cert-based SASL EXTERNAL, or provided within the RFC 4370
385 +"proxied authorization" control, to an LDAP DN used for
386 +authorization purposes. Note that the resulting DN need not refer
387 +to an existing entry to be considered valid. When an authorization
388 +request is received from the SASL subsystem, the SASL
389 +.BR USERNAME ,
390 +.BR REALM ,
391 +and
392 +.B MECHANISM
393 +are taken, when available, and combined into a name of the form
394 +.RS
395 +.RS
396 +.TP
397 +.B UID=<username>[[,CN=<realm>],CN=<mechanism>],CN=auth
398 +
399 +.RE
400 +This name is then compared against the
401 +.B match
402 +POSIX (''extended'') regular expression, and if the match is successful,
403 +the name is replaced with the
404 +.B replace
405 +string. If there are wildcard strings in the
406 +.B match
407 +regular expression that are enclosed in parenthesis, e.g.
408 +.RS
409 +.TP
410 +.B UID=([^,]*),CN=.*
411 +
412 +.RE
413 +then the portion of the name that matched the wildcard will be stored
414 +in the numbered placeholder variable $1. If there are other wildcard strings
415 +in parenthesis, the matching strings will be in $2, $3, etc. up to $9. The
416 +placeholders can then be used in the
417 +.B replace
418 +string, e.g.
419 +.RS
420 +.TP
421 +.B UID=$1,OU=Accounts,DC=example,DC=com
422 +
423 +.RE
424 +The replaced name can be either a DN, i.e. a string prefixed by "dn:",
425 +or an LDAP URI.
426 +If the latter, the server will use the URI to search its own database(s)
427 +and, if the search returns exactly one entry, the name is
428 +replaced by the DN of that entry. The LDAP URI must have no
429 +hostport, attrs, or extensions components, but the filter is mandatory,
430 +e.g.
431 +.RS
432 +.TP
433 +.B ldap:///OU=Accounts,DC=example,DC=com??one?(UID=$1)
434 +
435 +.RE
436 +The protocol portion of the URI must be strictly
437 +.BR ldap .
438 +Note that this search is subject to access controls. Specifically,
439 +the authentication identity must have "auth" access in the subject.
440 +
441 +Multiple
442 +.B authz\-regexp
443 +options can be given in the configuration file to allow for multiple matching
444 +and replacement patterns. The matching patterns are checked in the order they
445 +appear in the file, stopping at the first successful match.
446 +
447 +.\".B Caution:
448 +.\"Because the plus sign + is a character recognized by the regular expression engine,
449 +.\"and it will appear in names that include a REALM, be careful to escape the
450 +.\"plus sign with a backslash \\+ to remove the character's special meaning.
451 +.RE
452 +.TP
453 +.B concurrency <integer>
454 +Specify a desired level of concurrency. Provided to the underlying
455 +thread system as a hint. The default is not to provide any hint. This setting
456 +is only meaningful on some platforms where there is not a one to one
457 +correspondence between user threads and kernel threads.
458 +.TP
459 +.B conn_max_pending <integer>
460 +Specify the maximum number of pending requests for an anonymous session.
461 +If requests are submitted faster than the server can process them, they
462 +will be queued up to this limit. If the limit is exceeded, the session
463 +is closed. The default is 100.
464 +.TP
465 +.B conn_max_pending_auth <integer>
466 +Specify the maximum number of pending requests for an authenticated session.
467 +The default is 1000.
468 +.TP
469 +.B defaultsearchbase <dn>
470 +Specify a default search base to use when client submits a
471 +non-base search request with an empty base DN.
472 +Base scoped search requests with an empty base DN are not affected.
473 +.TP
474 +.B disallow <features>
475 +Specify a set of features (separated by white space) to
476 +disallow (default none).
477 +.B bind_anon
478 +disables acceptance of anonymous bind requests. Note that this setting
479 +does not prohibit anonymous directory access (See "require authc").
480 +.B bind_simple
481 +disables simple (bind) authentication.
482 +.B tls_2_anon
483 +disables forcing session to anonymous status (see also
484 +.BR tls_authc )
485 +upon StartTLS operation receipt.
486 +.B tls_authc
487 +disallows the StartTLS operation if authenticated (see also
488 +.BR tls_2_anon ).
489 +.B proxy_authz_non_critical
490 +disables acceptance of the proxied authorization control (RFC4370)
491 +with criticality set to FALSE.
492 +.B dontusecopy_non_critical
493 +disables acceptance of the dontUseCopy control (a work in progress)
494 +with criticality set to FALSE.
495 +.HP
496 +.hy 0
497 +.B ditcontentrule "(\ <oid>\
498 + [NAME\ <name>]\
499 + [DESC\ <description>]\
500 + [OBSOLETE]\
501 + [AUX\ <oids>]\
502 + [MUST\ <oids>]\
503 + [MAY\ <oids>]\
504 + [NOT\ <oids>]\ )"
505 +.RS
506 +Specify an DIT Content Rule using the LDAPv3 syntax defined in RFC 4512.
507 +The slapd parser extends the RFC 4512 definition by allowing string
508 +forms as well as numeric OIDs to be used for the attribute OID and
509 +attribute syntax OID.
510 +(See the
511 +.B objectidentifier
512 +description.)
513 +.RE
514 +.TP
515 +.B gentlehup { on | off }
516 +A SIGHUP signal will only cause a 'gentle' shutdown-attempt:
517 +.B Slapd
518 +will stop listening for new connections, but will not close the
519 +connections to the current clients. Future write operations return
520 +unwilling-to-perform, though. Slapd terminates when all clients
521 +have closed their connections (if they ever do), or \- as before \-
522 +if it receives a SIGTERM signal. This can be useful if you wish to
523 +terminate the server and start a new
524 +.B slapd
525 +server
526 +.B with another database,
527 +without disrupting the currently active clients.
528 +The default is off. You may wish to use
529 +.B idletimeout
530 +along with this option.
531 +.TP
532 +.B idletimeout <integer>
533 +Specify the number of seconds to wait before forcibly closing
534 +an idle client connection. A setting of 0 disables this
535 +feature. The default is 0. You may also want to set the
536 +.B writetimeout
537 +option.
538 +.TP
539 +.B include <filename>
540 +Read additional configuration information from the given file before
541 +continuing with the next line of the current file.
542 +.TP
543 +.B index_hash64 { on | off }
544 +Use a 64 bit hash for indexing. The default is to use 32 bit hashes.
545 +These hashes are used for equality and substring indexing. The 64 bit
546 +version may be needed to avoid index collisions when the number of
547 +indexed values exceeds ~64 million. (Note that substring indexing
548 +generates multiple index values per actual attribute value.)
549 +Indices generated with 32 bit hashes are incompatible with the 64 bit
550 +version, and vice versa. Any existing databases must be fully reloaded
551 +when changing this setting. This directive is only supported on 64 bit CPUs.
552 +.TP
553 +.B index_intlen <integer>
554 +Specify the key length for ordered integer indices. The most significant
555 +bytes of the binary integer will be used for index keys. The default
556 +value is 4, which provides exact indexing for 31 bit values.
557 +A floating point representation is used to index too large values.
558 +.TP
559 +.B index_substr_if_maxlen <integer>
560 +Specify the maximum length for subinitial and subfinal indices. Only
561 +this many characters of an attribute value will be processed by the
562 +indexing functions; any excess characters are ignored. The default is 4.
563 +.TP
564 +.B index_substr_if_minlen <integer>
565 +Specify the minimum length for subinitial and subfinal indices. An
566 +attribute value must have at least this many characters in order to be
567 +processed by the indexing functions. The default is 2.
568 +.TP
569 +.B index_substr_any_len <integer>
570 +Specify the length used for subany indices. An attribute value must have
571 +at least this many characters in order to be processed. Attribute values
572 +longer than this length will be processed in segments of this length. The
573 +default is 4. The subany index will also be used in subinitial and
574 +subfinal index lookups when the filter string is longer than the
575 +.I index_substr_if_maxlen
576 +value.
577 +.TP
578 +.B index_substr_any_step <integer>
579 +Specify the steps used in subany index lookups. This value sets the offset
580 +for the segments of a filter string that are processed for a subany index
581 +lookup. The default is 2. For example, with the default values, a search
582 +using this filter "cn=*abcdefgh*" would generate index lookups for
583 +"abcd", "cdef", and "efgh".
584 +
585 +.LP
586 +Note: Indexing support depends on the particular backend in use. Also,
587 +changing these settings will generally require deleting any indices that
588 +depend on these parameters and recreating them with
589 +.BR slapindex (8).
590 +
591 +.HP
592 +.hy 0
593 +.B ldapsyntax "(\ <oid>\
594 + [DESC\ <description>]\
595 + [X\-SUBST <substitute-syntax>]\ )"
596 +.RS
597 +Specify an LDAP syntax using the LDAPv3 syntax defined in RFC 4512.
598 +The slapd parser extends the RFC 4512 definition by allowing string
599 +forms as well as numeric OIDs to be used for the syntax OID.
600 +(See the
601 +.B objectidentifier
602 +description.)
603 +The slapd parser also honors the
604 +.B X\-SUBST
605 +extension (an OpenLDAP-specific extension), which allows one to use the
606 +.B ldapsyntax
607 +statement to define a non-implemented syntax along with another syntax,
608 +the extension value
609 +.IR substitute-syntax ,
610 +as its temporary replacement.
611 +The
612 +.I substitute-syntax
613 +must be defined.
614 +This allows one to define attribute types that make use of non-implemented syntaxes
615 +using the correct syntax OID.
616 +Unless
617 +.B X\-SUBST
618 +is used, this configuration statement would result in an error,
619 +since no handlers would be associated to the resulting syntax structure.
620 +.RE
621 +
622 +.TP
623 +.B listener-threads <integer>
624 +Specify the number of threads to use for the connection manager.
625 +The default is 1 and this is typically adequate for up to 16 CPU cores.
626 +The value should be set to a power of 2.
627 +.TP
628 +.B localSSF <SSF>
629 +Specifies the Security Strength Factor (SSF) to be given local LDAP sessions,
630 +such as those to the ldapi:// listener. For a description of SSF values,
631 +see
632 +.BR sasl-secprops 's
633 +.B minssf
634 +option description. The default is 71.
635 +.TP
636 +.B logfile <filename>
637 +Specify a file for recording slapd debug messages. By default these messages
638 +only go to stderr, are not recorded anywhere else, and are unrelated to
639 +messages exposed by the
640 +.B loglevel
641 +configuration parameter. Specifying a logfile copies messages to both stderr
642 +and the logfile.
643 +.TP
644 +.B logfile-format debug | syslog-utc | syslog-localtime
645 +Specify the prefix format for messages written to the logfile. The debug
646 +format is the normal format used for slapd debug messages, with a timestamp
647 +in hexadecimal, followed by a thread ID. The other options are to
648 +use syslog(3) style prefixes, with timestamps either in UTC or in the
649 +local timezone. The default is debug format.
650 +.TP
651 +.B logfile-only on | off
652 +Specify that debug messages should only go to the configured logfile, and
653 +not to stderr.
654 +.TP
655 +.B logfile-rotate <max> <Mbytes> <hours>
656 +Specify automatic rotation for the configured logfile as the maximum
657 +number of old logfiles to retain, a maximum size in megabytes to allow a
658 +logfile to grow before rotation, and a maximum age in hours for a logfile
659 +to be used before rotation. The maximum number must be in the range 1-99.
660 +Setting Mbytes or hours to zero disables the size or age check, respectively.
661 +At least one of Mbytes or hours must be non-zero. By default no automatic
662 +rotation will be performed.
663 +.TP
664 +.B loglevel <integer> [...]
665 +Specify the level at which debugging statements and operation
666 +statistics should be syslogged (currently logged to the
667 +.BR syslogd (8)
668 +LOG_LOCAL4 facility).
669 +They must be considered subsystems rather than increasingly verbose
670 +log levels.
671 +Some messages with higher priority are logged regardless
672 +of the configured loglevel as soon as any logging is configured.
673 +Log levels are additive, and available levels are:
674 +.RS
675 +.RS
676 +.PD 0
677 +.TP
678 +.B 1
679 +.B (0x1 trace)
680 +trace function calls
681 +.TP
682 +.B 2
683 +.B (0x2 packets)
684 +debug packet handling
685 +.TP
686 +.B 4
687 +.B (0x4 args)
688 +heavy trace debugging (function args)
689 +.TP
690 +.B 8
691 +.B (0x8 conns)
692 +connection management
693 +.TP
694 +.B 16
695 +.B (0x10 BER)
696 +print out packets sent and received
697 +.TP
698 +.B 32
699 +.B (0x20 filter)
700 +search filter processing
701 +.TP
702 +.B 64
703 +.B (0x40 config)
704 +configuration file processing
705 +.TP
706 +.B 128
707 +.B (0x80 ACL)
708 +access control list processing
709 +.TP
710 +.B 256
711 +.B (0x100 stats)
712 +connections, LDAP operations, results (recommended)
713 +.TP
714 +.B 512
715 +.B (0x200 stats2)
716 +stats2 log entries sent
717 +.TP
718 +.B 1024
719 +.B (0x400 shell)
720 +print communication with shell backends
721 +.TP
722 +.B 2048
723 +.B (0x800 parse)
724 +entry parsing
725 +\".TP
726 +\".B 4096
727 +\".B (0x1000 cache)
728 +\"caching (unused)
729 +\".TP
730 +\".B 8192
731 +\".B (0x2000 index)
732 +\"data indexing (unused)
733 +.TP
734 +.B 16384
735 +.B (0x4000 sync)
736 +LDAPSync replication
737 +.TP
738 +.B 32768
739 +.B (0x8000 none)
740 +only messages that get logged whatever log level is set
741 +.PD
742 +.RE
743 +The desired log level can be input as a single integer that combines
744 +the (ORed) desired levels, both in decimal or in hexadecimal notation,
745 +as a list of integers (that are ORed internally),
746 +or as a list of the names that are shown between parentheses, such that
747 +.LP
748 +.nf
749 + loglevel 129
750 + loglevel 0x81
751 + loglevel 128 1
752 + loglevel 0x80 0x1
753 + loglevel acl trace
754 +.fi
755 +.LP
756 +are equivalent.
757 +The keyword
758 +.B any
759 +can be used as a shortcut to enable logging at all levels (equivalent to \-1).
760 +The keyword
761 +.BR none ,
762 +or the equivalent integer representation, causes those messages
763 +that are logged regardless of the configured loglevel to be logged.
764 +In fact, if loglevel is set to 0, no logging occurs,
765 +so at least the
766 +.B none
767 +level is required to have high priority messages logged.
768 +
769 +Note that the
770 +.BR packets ,
771 +.BR BER ,
772 +and
773 +.B parse
774 +levels are only available as debug output on stderr, and are not
775 +sent to syslog.
776 +
777 +The loglevel defaults to \fBstats\fP.
778 +This level should usually also be included when using other loglevels, to
779 +help analyze the logs.
780 +.RE
781 +.TP
782 +.B maxfilterdepth <integer>
783 +Specify the maximum depth of nested filters in search requests.
784 +The default is 1000.
785 +.TP
786 +.B moduleload <filename> [<arguments>...]
787 +Specify the name of a dynamically loadable module to load and any
788 +additional arguments if supported by the module. The filename
789 +may be an absolute path name or a simple filename. Non-absolute names
790 +are searched for in the directories specified by the
791 +.B modulepath
792 +option. This option and the
793 +.B modulepath
794 +option are only usable if slapd was compiled with \-\-enable\-modules.
795 +.TP
796 +.B modulepath <pathspec>
797 +Specify a list of directories to search for loadable modules. Typically
798 +the path is colon-separated but this depends on the operating system.
799 +The default is MODULEDIR, which is where the standard OpenLDAP install
800 +will place its modules.
801 +.HP
802 +.hy 0
803 +.B objectclass "(\ <oid>\
804 + [NAME\ <name>]\
805 + [DESC\ <description>]\
806 + [OBSOLETE]\
807 + [SUP\ <oids>]\
808 + [{ ABSTRACT | STRUCTURAL | AUXILIARY }]\
809 + [MUST\ <oids>] [MAY\ <oids>] )"
810 +.RS
811 +Specify an objectclass using the LDAPv3 syntax defined in RFC 4512.
812 +The slapd parser extends the RFC 4512 definition by allowing string
813 +forms as well as numeric OIDs to be used for the object class OID.
814 +(See the
815 +.B
816 +objectidentifier
817 +description.) Object classes are "STRUCTURAL" by default.
818 +.RE
819 +.TP
820 +.B objectidentifier <name> "{ <oid> | <name>[:<suffix>] }"
821 +Define a string name that equates to the given OID. The string can be used
822 +in place of the numeric OID in objectclass and attribute definitions. The
823 +name can also be used with a suffix of the form ":xx" in which case the
824 +value "oid.xx" will be used.
825 +.TP
826 +.B password\-hash <hash> [<hash>...]
827 +This option configures one or more hashes to be used in generation of user
828 +passwords stored in the userPassword attribute during processing of
829 +LDAP Password Modify Extended Operations (RFC 3062).
830 +The <hash> must be one of
831 +.BR {SSHA} ,
832 +.BR {SHA} ,
833 +.BR {SMD5} ,
834 +.BR {MD5} ,
835 +.BR {CRYPT} ,
836 +and
837 +.BR {CLEARTEXT} .
838 +The default is
839 +.BR {SSHA} .
840 +
841 +.B {SHA}
842 +and
843 +.B {SSHA}
844 +use the SHA-1 algorithm (FIPS 160-1), the latter with a seed.
845 +
846 +.B {MD5}
847 +and
848 +.B {SMD5}
849 +use the MD5 algorithm (RFC 1321), the latter with a seed.
850 +
851 +.B {CRYPT}
852 +uses the
853 +.BR crypt (3).
854 +
855 +.B {CLEARTEXT}
856 +indicates that the new password should be
857 +added to userPassword as clear text.
858 +
859 +Note that this option does not alter the normal user applications
860 +handling of userPassword during LDAP Add, Modify, or other LDAP operations.
861 +.TP
862 +.B password\-crypt\-salt\-format <format>
863 +Specify the format of the salt passed to
864 +.BR crypt (3)
865 +when generating {CRYPT} passwords (see
866 +.BR password\-hash )
867 +during processing of LDAP Password Modify Extended Operations (RFC 3062).
868 +
869 +This string needs to be in
870 +.BR sprintf (3)
871 +format and may include one (and only one) %s conversion.
872 +This conversion will be substituted with a string of random
873 +characters from [A\-Za\-z0\-9./]. For example, "%.2s"
874 +provides a two character salt and "$1$%.8s" tells some
875 +versions of crypt(3) to use an MD5 algorithm and provides
876 +8 random characters of salt. The default is "%s", which
877 +provides 31 characters of salt.
878 +.TP
879 +.B pidfile <filename>
880 +The (absolute) name of a file that will hold the
881 +.B slapd
882 +server's process ID (see
883 +.BR getpid (2)).
884 +.TP
885 +.B pluginlog: <filename>
886 +The ( absolute ) name of a file that will contain log
887 +messages from
888 +.B SLAPI
889 +plugins. See
890 +.BR slapd.plugin (5)
891 +for details.
892 +.TP
893 +.B referral <url>
894 +Specify the referral to pass back when
895 +.BR slapd (8)
896 +cannot find a local database to handle a request.
897 +If specified multiple times, each url is provided.
898 +.TP
899 +.B require <conditions>
900 +Specify a set of conditions (separated by white space) to
901 +require (default none).
902 +The directive may be specified globally and/or per-database;
903 +databases inherit global conditions, so per-database specifications
904 +are additive.
905 +.B bind
906 +requires bind operation prior to directory operations.
907 +.B LDAPv3
908 +requires session to be using LDAP version 3.
909 +.B authc
910 +requires authentication prior to directory operations.
911 +.B SASL
912 +requires SASL authentication prior to directory operations.
913 +.B strong
914 +requires strong authentication prior to directory operations.
915 +The strong keyword allows protected "simple" authentication
916 +as well as SASL authentication.
917 +.B none
918 +may be used to require no conditions (useful to clear out globally
919 +set conditions within a particular database); it must occur first
920 +in the list of conditions.
921 +.TP
922 +.B reverse\-lookup on | off
923 +Enable/disable client name unverified reverse lookup (default is
924 +.BR off
925 +if compiled with \-\-enable\-rlookups).
926 +.TP
927 +.B rootDSE <file>
928 +Specify the name of an LDIF(5) file containing user defined attributes
929 +for the root DSE. These attributes are returned in addition to the
930 +attributes normally produced by slapd.
931 +
932 +The root DSE is an entry with information about the server and its
933 +capabilities, in operational attributes.
934 +It has the empty DN, and can be read with e.g.:
935 +.ti +4
936 +ldapsearch \-x \-b "" \-s base "+"
937 +.br
938 +See RFC 4512 section 5.1 for details.
939 +.TP
940 +.B sasl\-auxprops <plugin> [...]
941 +Specify which auxprop plugins to use for authentication lookups. The
942 +default is empty, which just uses slapd's internal support. Usually
943 +no other auxprop plugins are needed.
944 +.TP
945 +.B sasl\-auxprops\-dontusecopy <attr> [...]
946 +Specify which attribute(s) should be subject to the don't use copy control. This
947 +is necessary for some SASL mechanisms such as OTP to work in a replicated
948 +environment. The attribute "cmusaslsecretOTP" is the default value.
949 +.TP
950 +.B sasl\-auxprops\-dontusecopy\-ignore on | off
951 +Used to disable replication of the attribute(s) defined by
952 +sasl-auxprops-dontusecopy and instead use a local value for the attribute. This
953 +allows the SASL mechanism to continue to work if the provider is offline. This can
954 +cause replication inconsistency. Defaults to off.
955 +.TP
956 +.B sasl\-host <fqdn>
957 +Used to specify the fully qualified domain name used for SASL processing.
958 +.TP
959 +.B sasl\-realm <realm>
960 +Specify SASL realm. Default is empty.
961 +.TP
962 +.B sasl\-cbinding none | tls-unique | tls-endpoint
963 +Specify the channel-binding type, see also LDAP_OPT_X_SASL_CBINDING.
964 +Default is none.
965 +.TP
966 +.B sasl\-secprops <properties>
967 +Used to specify Cyrus SASL security properties.
968 +The
969 +.B none
970 +flag (without any other properties) causes the flag properties
971 +default, "noanonymous,noplain", to be cleared.
972 +The
973 +.B noplain
974 +flag disables mechanisms susceptible to simple passive attacks.
975 +The
976 +.B noactive
977 +flag disables mechanisms susceptible to active attacks.
978 +The
979 +.B nodict
980 +flag disables mechanisms susceptible to passive dictionary attacks.
981 +The
982 +.B noanonymous
983 +flag disables mechanisms which support anonymous login.
984 +The
985 +.B forwardsec
986 +flag require forward secrecy between sessions.
987 +The
988 +.B passcred
989 +require mechanisms which pass client credentials (and allow
990 +mechanisms which can pass credentials to do so).
991 +The
992 +.B minssf=<factor>
993 +property specifies the minimum acceptable
994 +.I security strength factor
995 +as an integer approximate to effective key length used for
996 +encryption. 0 (zero) implies no protection, 1 implies integrity
997 +protection only, 128 allows RC4, Blowfish and other similar ciphers,
998 +256 will require modern ciphers. The default is 0.
999 +The
1000 +.B maxssf=<factor>
1001 +property specifies the maximum acceptable
1002 +.I security strength factor
1003 +as an integer (see minssf description). The default is INT_MAX.
1004 +The
1005 +.B maxbufsize=<size>
1006 +property specifies the maximum security layer receive buffer
1007 +size allowed. 0 disables security layers. The default is 65536.
1008 +.TP
1009 +.B schemadn <dn>
1010 +Specify the distinguished name for the subschema subentry that
1011 +controls the entries on this server. The default is "cn=Subschema".
1012 +.TP
1013 +.B security <factors>
1014 +Specify a set of security strength factors (separated by white space)
1015 +to require (see
1016 +.BR sasl\-secprops 's
1017 +.B minssf
1018 +option for a description of security strength factors).
1019 +The directive may be specified globally and/or per-database.
1020 +.B ssf=<n>
1021 +specifies the overall security strength factor.
1022 +.B transport=<n>
1023 +specifies the transport security strength factor.
1024 +.B tls=<n>
1025 +specifies the TLS security strength factor.
1026 +.B sasl=<n>
1027 +specifies the SASL security strength factor.
1028 +.B update_ssf=<n>
1029 +specifies the overall security strength factor to require for
1030 +directory updates.
1031 +.B update_transport=<n>
1032 +specifies the transport security strength factor to require for
1033 +directory updates.
1034 +.B update_tls=<n>
1035 +specifies the TLS security strength factor to require for
1036 +directory updates.
1037 +.B update_sasl=<n>
1038 +specifies the SASL security strength factor to require for
1039 +directory updates.
1040 +.B simple_bind=<n>
1041 +specifies the security strength factor required for
1042 +.I simple
1043 +username/password authentication.
1044 +Note that the
1045 +.B transport
1046 +factor is measure of security provided by the underlying transport,
1047 +e.g. ldapi:// (and eventually IPSEC). It is not normally used.
1048 +.TP
1049 +.B serverID <integer> [<URL>]
1050 +Specify an integer ID from 0 to 4095 for this server. The ID may also be
1051 +specified as a hexadecimal ID by prefixing the value with "0x".
1052 +Non-zero IDs are required when using multi-provider replication and each
1053 +provider must have a unique non-zero ID. Note that this requirement also
1054 +applies to separate providers contributing to a glued set of databases.
1055 +If the URL is provided, this directive may be specified
1056 +multiple times, providing a complete list of participating servers
1057 +and their IDs. The fully qualified hostname of each server should be
1058 +used in the supplied URLs. The IDs are used in the "replica id" field
1059 +of all CSNs generated by the specified server. The default value is zero, which
1060 +is only valid for single provider replication.
1061 +Example:
1062 +.LP
1063 +.nf
1064 + serverID 1 ldap://ldap1.example.com
1065 + serverID 2 ldap://ldap2.example.com
1066 +.fi
1067 +.TP
1068 +.B sizelimit {<integer>|unlimited}
1069 +.TP
1070 +.B sizelimit size[.{soft|hard}]=<integer> [...]
1071 +Specify the maximum number of entries to return from a search operation.
1072 +The default size limit is 500.
1073 +Use
1074 +.B unlimited
1075 +to specify no limits.
1076 +The second format allows a fine grain setting of the size limits.
1077 +If no special qualifiers are specified, both soft and hard limits are set.
1078 +Extra args can be added on the same line.
1079 +Additional qualifiers are available; see
1080 +.BR limits
1081 +for an explanation of all of the different flags.
1082 +.TP
1083 +.B sockbuf_max_incoming <integer>
1084 +Specify the maximum incoming LDAP PDU size for anonymous sessions.
1085 +The default is 262143.
1086 +.TP
1087 +.B sockbuf_max_incoming_auth <integer>
1088 +Specify the maximum incoming LDAP PDU size for authenticated sessions.
1089 +The default is 4194303.
1090 +.TP
1091 +.B sortvals <attr> [...]
1092 +Specify a list of multi-valued attributes whose values will always
1093 +be maintained in sorted order. Using this option will allow Modify,
1094 +Compare, and filter evaluations on these attributes to be performed
1095 +more efficiently. The resulting sort order depends on the
1096 +attributes' syntax and matching rules and may not correspond to
1097 +lexical order or any other recognizable order.
1098 +.TP
1099 +.B tcp-buffer [listener=<URL>] [{read|write}=]<size>
1100 +Specify the size of the TCP buffer.
1101 +A global value for both read and write TCP buffers related to any listener
1102 +is defined, unless the listener is explicitly specified,
1103 +or either the read or write qualifiers are used.
1104 +See
1105 +.BR tcp (7)
1106 +for details.
1107 +Note that some OS-es implement automatic TCP buffer tuning.
1108 +.TP
1109 +.B threads <integer>
1110 +Specify the maximum size of the primary thread pool.
1111 +The default is 16; the minimum value is 2.
1112 +.TP
1113 +.B threadqueues <integer>
1114 +Specify the number of work queues to use for the primary thread pool.
1115 +The default is 1 and this is typically adequate for up to 8 CPU cores.
1116 +The value should not exceed the number of CPUs in the system.
1117 +.TP
1118 +.B timelimit {<integer>|unlimited}
1119 +.TP
1120 +.B timelimit time[.{soft|hard}]=<integer> [...]
1121 +Specify the maximum number of seconds (in real time)
1122 +.B slapd
1123 +will spend answering a search request. The default time limit is 3600.
1124 +Use
1125 +.B unlimited
1126 +to specify no limits.
1127 +The second format allows a fine grain setting of the time limits.
1128 +Extra args can be added on the same line. See
1129 +.BR limits
1130 +for an explanation of the different flags.
1131 +.TP
1132 +.B tool\-threads <integer>
1133 +Specify the maximum number of threads to use in tool mode.
1134 +This should not be greater than the number of CPUs in the system.
1135 +The default is 1.
1136 +.TP
1137 +.B writetimeout <integer>
1138 +Specify the number of seconds to wait before forcibly closing
1139 +a connection with an outstanding write. This allows recovery from
1140 +various network hang conditions. A writetimeout of 0 disables this
1141 +feature. The default is 0.
1142 +.SH TLS OPTIONS
1143 +If
1144 +.B slapd
1145 +is built with support for Transport Layer Security, there are more options
1146 +you can specify.
1147 +.TP
1148 +.B TLSCipherSuite <cipher-suite-spec>
1149 +Permits configuring what ciphers will be accepted and the preference order.
1150 +<cipher-suite-spec> should be a cipher specification for the TLS library
1151 +in use (OpenSSL or GnuTLS).
1152 +Example:
1153 +.RS
1154 +.RS
1155 +.TP
1156 +.I OpenSSL:
1157 +TLSCipherSuite HIGH:MEDIUM:+SSLv2
1158 +.TP
1159 +.I GnuTLS:
1160 +TLSCiphersuite SECURE256:!AES-128-CBC
1161 +.RE
1162 +
1163 +To check what ciphers a given spec selects in OpenSSL, use:
1164 +
1165 +.nf
1166 + openssl ciphers \-v <cipher-suite-spec>
1167 +.fi
1168 +
1169 +With GnuTLS the available specs can be found in the manual page of
1170 +.BR gnutls\-cli (1)
1171 +(see the description of the
1172 +option
1173 +.BR \-\-priority ).
1174 +
1175 +In older versions of GnuTLS, where gnutls\-cli does not support the option
1176 +\-\-priority, you can obtain the \(em more limited \(em list of ciphers by calling:
1177 +
1178 +.nf
1179 + gnutls\-cli \-l
1180 +.fi
1181 +.RE
1182 +.TP
1183 +.B TLSCACertificateFile <filename>
1184 +Specifies the file that contains certificates for all of the Certificate
1185 +Authorities that
1186 +.B slapd
1187 +will recognize. The certificate for
1188 +the CA that signed the server certificate must(GnuTLS)/may(OpenSSL) be included among
1189 +these certificates. If the signing CA was not a top-level (root) CA,
1190 +certificates for the entire sequence of CA's from the signing CA to
1191 +the top-level CA should be present. Multiple certificates are simply
1192 +appended to the file; the order is not significant.
1193 +.TP
1194 +.B TLSCACertificatePath <path>
1195 +Specifies the path of directories that contain Certificate Authority
1196 +certificates in separate individual files. Usually only one of this
1197 +or the TLSCACertificateFile is used. If both are specified, both
1198 +locations will be used. Multiple directories may be specified,
1199 +separated by a semi-colon.
1200 +.TP
1201 +.B TLSCertificateFile <filename>
1202 +Specifies the file that contains the
1203 +.B slapd
1204 +server certificate.
1205 +
1206 +When using OpenSSL that file may also contain any number of intermediate
1207 +certificates after the server certificate.
1208 +.TP
1209 +.B TLSCertificateKeyFile <filename>
1210 +Specifies the file that contains the
1211 +.B slapd
1212 +server private key that matches the certificate stored in the
1213 +.B TLSCertificateFile
1214 +file. Currently, the private key must not be protected with a password, so
1215 +it is of critical importance that it is protected carefully.
1216 +.TP
1217 +.B TLSDHParamFile <filename>
1218 +This directive specifies the file that contains parameters for Diffie-Hellman
1219 +ephemeral key exchange. This is required in order to use a DSA certificate on
1220 +the server, or an RSA certificate missing the "key encipherment" key usage.
1221 +Note that setting this option may also enable
1222 +Anonymous Diffie-Hellman key exchanges in certain non-default cipher suites.
1223 +Anonymous key exchanges should generally be avoided since they provide no
1224 +actual client or server authentication and provide no protection against
1225 +man-in-the-middle attacks.
1226 +You should append "!ADH" to your cipher suites to ensure that these suites
1227 +are not used.
1228 +.TP
1229 +.B TLSECName <name>
1230 +Specify the name of the curve(s) to use for Elliptic curve Diffie-Hellman
1231 +ephemeral key exchange. This option is only used for OpenSSL.
1232 +This option is not used with GnuTLS; the curves may be
1233 +chosen in the GnuTLS ciphersuite specification.
1234 +.TP
1235 +.B TLSProtocolMin <major>[.<minor>]
1236 +Specifies minimum SSL/TLS protocol version that will be negotiated.
1237 +If the server doesn't support at least that version,
1238 +the SSL handshake will fail.
1239 +To require TLS 1.x or higher, set this option to 3.(x+1),
1240 +e.g.,
1241 +
1242 +.nf
1243 + TLSProtocolMin 3.2
1244 +.fi
1245 +
1246 +would require TLS 1.1.
1247 +Specifying a minimum that is higher than that supported by the
1248 +OpenLDAP implementation will result in it requiring the
1249 +highest level that it does support.
1250 +This directive is ignored with GnuTLS.
1251 +.TP
1252 +.B TLSRandFile <filename>
1253 +Specifies the file to obtain random bits from when /dev/[u]random
1254 +is not available. Generally set to the name of the EGD/PRNGD socket.
1255 +The environment variable RANDFILE can also be used to specify the filename.
1256 +This directive is ignored with GnuTLS.
1257 +.TP
1258 +.B TLSVerifyClient <level>
1259 +Specifies what checks to perform on client certificates in an
1260 +incoming TLS session, if any.
1261 +The
1262 +.B <level>
1263 +can be specified as one of the following keywords:
1264 +.RS
1265 +.TP
1266 +.B never
1267 +This is the default.
1268 +.B slapd
1269 +will not ask the client for a certificate.
1270 +.TP
1271 +.B allow
1272 +The client certificate is requested. If no certificate is provided,
1273 +the session proceeds normally. If a bad certificate is provided,
1274 +it will be ignored and the session proceeds normally.
1275 +.TP
1276 +.B try
1277 +The client certificate is requested. If no certificate is provided,
1278 +the session proceeds normally. If a bad certificate is provided,
1279 +the session is immediately terminated.
1280 +.TP
1281 +.B demand | hard | true
1282 +These keywords are all equivalent, for compatibility reasons.
1283 +The client certificate is requested. If no certificate is provided,
1284 +or a bad certificate is provided, the session is immediately terminated.
1285 +
1286 +Note that a valid client certificate is required in order to use the
1287 +SASL EXTERNAL authentication mechanism with a TLS session. As such,
1288 +a non-default
1289 +.B TLSVerifyClient
1290 +setting must be chosen to enable SASL EXTERNAL authentication.
1291 +.RE
1292 +.TP
1293 +.B TLSCRLCheck <level>
1294 +Specifies if the Certificate Revocation List (CRL) of the CA should be
1295 +used to verify if the client certificates have not been revoked. This
1296 +requires
1297 +.B TLSCACertificatePath
1298 +parameter to be set. This directive is ignored with GnuTLS.
1299 +.B <level>
1300 +can be specified as one of the following keywords:
1301 +.RS
1302 +.TP
1303 +.B none
1304 +No CRL checks are performed
1305 +.TP
1306 +.B peer
1307 +Check the CRL of the peer certificate
1308 +.TP
1309 +.B all
1310 +Check the CRL for a whole certificate chain
1311 +.RE
1312 +.TP
1313 +.B TLSCRLFile <filename>
1314 +Specifies a file containing a Certificate Revocation List to be used
1315 +for verifying that certificates have not been revoked. This directive is
1316 +only valid when using GnuTLS.
1317 +.SH GENERAL BACKEND OPTIONS
1318 +Options in this section only apply to the configuration file section
1319 +of all instances of the specified backend. All backends may support
1320 +this class of options, but currently only back-mdb does.
1321 +.TP
1322 +.B backend <databasetype>
1323 +Mark the beginning of a backend definition. <databasetype>
1324 +should be one of
1325 +.BR asyncmeta ,
1326 +.BR config ,
1327 +.BR dnssrv ,
1328 +.BR ldap ,
1329 +.BR ldif ,
1330 +.BR mdb ,
1331 +.BR meta ,
1332 +.BR monitor ,
1333 +.BR null ,
1334 +.BR passwd ,
1335 +.BR perl ,
1336 +.BR relay ,
1337 +.BR sock ,
1338 +.BR sql ,
1339 +or
1340 +.BR wt .
1341 +At present, only back-mdb implements any options of this type, so this
1342 +setting is not needed for any other backends.
1343 +
1344 +.SH GENERAL DATABASE OPTIONS
1345 +Options in this section only apply to the configuration file section
1346 +for the database in which they are defined. They are supported by every
1347 +type of backend. Note that the
1348 +.B database
1349 +and at least one
1350 +.B suffix
1351 +option are mandatory for each database.
1352 +.TP
1353 +.B database <databasetype>
1354 +Mark the beginning of a new database instance definition. <databasetype>
1355 +should be one of
1356 +.BR asyncmeta ,
1357 +.BR config ,
1358 +.BR dnssrv ,
1359 +.BR ldap ,
1360 +.BR ldif ,
1361 +.BR mdb ,
1362 +.BR meta ,
1363 +.BR monitor ,
1364 +.BR null ,
1365 +.BR passwd ,
1366 +.BR perl ,
1367 +.BR relay ,
1368 +.BR sock ,
1369 +.BR sql ,
1370 +or
1371 +.BR wt ,
1372 +depending on which backend will serve the database.
1373 +
1374 +LDAP operations, even subtree searches, normally access only one
1375 +database.
1376 +That can be changed by gluing databases together with the
1377 +.B subordinate
1378 +keyword.
1379 +Access controls and some overlays can also involve multiple databases.
1380 +.TP
1381 +.B add_content_acl on | off
1382 +Controls whether Add operations will perform ACL checks on
1383 +the content of the entry being added. This check is off
1384 +by default. See the
1385 +.BR slapd.access (5)
1386 +manual page for more details on ACL requirements for
1387 +Add operations.
1388 +.TP
1389 +.B extra_attrs <attrlist>
1390 +Lists what attributes need to be added to search requests.
1391 +Local storage backends return the entire entry to the frontend.
1392 +The frontend takes care of only returning the requested attributes
1393 +that are allowed by ACLs.
1394 +However, features like access checking and so may need specific
1395 +attributes that are not automatically returned by remote storage
1396 +backends, like proxy backends and so on.
1397 +.B <attrlist>
1398 +is a list of attributes that are needed for internal purposes
1399 +and thus always need to be collected, even when not explicitly
1400 +requested by clients.
1401 +.TP
1402 +.B hidden on | off
1403 +Controls whether the database will be used to answer
1404 +queries. A database that is hidden will never be
1405 +selected to answer any queries, and any suffix configured
1406 +on the database will be ignored in checks for conflicts
1407 +with other databases. By default, hidden is off.
1408 +.TP
1409 +.B lastmod on | off
1410 +Controls whether
1411 +.B slapd
1412 +will automatically maintain the
1413 +modifiersName, modifyTimestamp, creatorsName, and
1414 +createTimestamp attributes for entries. It also controls
1415 +the entryCSN and entryUUID attributes, which are needed
1416 +by the syncrepl provider. By default, lastmod is on.
1417 +.TP
1418 +.B lastbind on | off
1419 +Controls whether
1420 +.B slapd
1421 +will automatically maintain the pwdLastSuccess attribute for
1422 +entries. By default, lastbind is off.
1423 +.TP
1424 +.B lastbind-precision <integer>
1425 +If lastbind is enabled, specifies how frequently pwdLastSuccess
1426 +will be updated. More than
1427 +.B integer
1428 +seconds must have passed since the last successful bind. In a
1429 +replicated environment with frequent bind activity it may be
1430 +useful to set this to a large value.
1431 +.TP
1432 +.B limits <selector> <limit> [<limit> [...]]
1433 +Specify time and size limits based on the operation's initiator or
1434 +base DN.
1435 +The argument
1436 +.B <selector>
1437 +can be any of
1438 +.RS
1439 +.RS
1440 +.TP
1441 +anonymous | users | [<dnspec>=]<pattern> | group[/oc[/at]]=<pattern>
1442 +
1443 +.RE
1444 +with
1445 +.RS
1446 +.TP
1447 +<dnspec> ::= dn[.<type>][.<style>]
1448 +.TP
1449 +<type> ::= self | this
1450 +.TP
1451 +<style> ::= exact | base | onelevel | subtree | children | regex | anonymous
1452 +
1453 +.RE
1454 +DN type
1455 +.B self
1456 +is the default and means the bound user, while
1457 +.B this
1458 +means the base DN of the operation.
1459 +The term
1460 +.B anonymous
1461 +matches all unauthenticated clients.
1462 +The term
1463 +.B users
1464 +matches all authenticated clients;
1465 +otherwise an
1466 +.B exact
1467 +dn pattern is assumed unless otherwise specified by qualifying
1468 +the (optional) key string
1469 +.B dn
1470 +with
1471 +.B exact
1472 +or
1473 +.B base
1474 +(which are synonyms), to require an exact match; with
1475 +.BR onelevel ,
1476 +to require exactly one level of depth match; with
1477 +.BR subtree ,
1478 +to allow any level of depth match, including the exact match; with
1479 +.BR children ,
1480 +to allow any level of depth match, not including the exact match;
1481 +.BR regex
1482 +explicitly requires the (default) match based on POSIX (''extended'')
1483 +regular expression pattern.
1484 +Finally,
1485 +.B anonymous
1486 +matches unbound operations; the
1487 +.B pattern
1488 +field is ignored.
1489 +The same behavior is obtained by using the
1490 +.B anonymous
1491 +form of the
1492 +.B <selector>
1493 +clause.
1494 +The term
1495 +.BR group ,
1496 +with the optional objectClass
1497 +.B oc
1498 +and attributeType
1499 +.B at
1500 +fields, followed by
1501 +.BR pattern ,
1502 +sets the limits for any DN listed in the values of the
1503 +.B at
1504 +attribute (default
1505 +.BR member )
1506 +of the
1507 +.B oc
1508 +group objectClass (default
1509 +.BR groupOfNames )
1510 +whose DN exactly matches
1511 +.BR pattern .
1512 +
1513 +The currently supported limits are
1514 +.B size
1515 +and
1516 +.BR time .
1517 +
1518 +The syntax for time limits is
1519 +.BR time[.{soft|hard}]=<integer> ,
1520 +where
1521 +.I integer
1522 +is the number of seconds slapd will spend answering a search request.
1523 +If no time limit is explicitly requested by the client, the
1524 +.BR soft
1525 +limit is used; if the requested time limit exceeds the
1526 +.BR hard
1527 +.\"limit, an
1528 +.\".I "Administrative limit exceeded"
1529 +.\"error is returned.
1530 +limit, the value of the limit is used instead.
1531 +If the
1532 +.BR hard
1533 +limit is set to the keyword
1534 +.IR soft ,
1535 +the soft limit is used in either case; if it is set to the keyword
1536 +.IR unlimited ,
1537 +no hard limit is enforced.
1538 +Explicit requests for time limits smaller or equal to the
1539 +.BR hard
1540 +limit are honored.
1541 +If no limit specifier is set, the value is assigned to the
1542 +.BR soft
1543 +limit, and the
1544 +.BR hard
1545 +limit is set to
1546 +.IR soft ,
1547 +to preserve the original behavior.
1548 +
1549 +The syntax for size limits is
1550 +.BR size[.{soft|hard|unchecked}]=<integer> ,
1551 +where
1552 +.I integer
1553 +is the maximum number of entries slapd will return answering a search
1554 +request.
1555 +If no size limit is explicitly requested by the client, the
1556 +.BR soft
1557 +limit is used; if the requested size limit exceeds the
1558 +.BR hard
1559 +.\"limit, an
1560 +.\".I "Administrative limit exceeded"
1561 +.\"error is returned.
1562 +limit, the value of the limit is used instead.
1563 +If the
1564 +.BR hard
1565 +limit is set to the keyword
1566 +.IR soft ,
1567 +the soft limit is used in either case; if it is set to the keyword
1568 +.IR unlimited ,
1569 +no hard limit is enforced.
1570 +Explicit requests for size limits smaller or equal to the
1571 +.BR hard
1572 +limit are honored.
1573 +The
1574 +.BR unchecked
1575 +specifier sets a limit on the number of candidates a search request is allowed
1576 +to examine.
1577 +The rationale behind it is that searches for non-properly indexed
1578 +attributes may result in large sets of candidates, which must be
1579 +examined by
1580 +.BR slapd (8)
1581 +to determine whether they match the search filter or not.
1582 +The
1583 +.B unchecked
1584 +limit provides a means to drop such operations before they are even
1585 +started.
1586 +If the selected candidates exceed the
1587 +.BR unchecked
1588 +limit, the search will abort with
1589 +.IR "Unwilling to perform" .
1590 +If it is set to the keyword
1591 +.IR unlimited ,
1592 +no limit is applied (the default).
1593 +If it is set to
1594 +.IR disabled ,
1595 +the search is not even performed; this can be used to disallow searches
1596 +for a specific set of users.
1597 +If no limit specifier is set, the value is assigned to the
1598 +.BR soft
1599 +limit, and the
1600 +.BR hard
1601 +limit is set to
1602 +.IR soft ,
1603 +to preserve the original behavior.
1604 +
1605 +In case of no match, the global limits are used.
1606 +The default values are the same as for
1607 +.B sizelimit
1608 +and
1609 +.BR timelimit ;
1610 +no limit is set on
1611 +.BR unchecked .
1612 +
1613 +If
1614 +.B pagedResults
1615 +control is requested, the
1616 +.B hard
1617 +size limit is used by default, because the request of a specific page size
1618 +is considered an explicit request for a limitation on the number
1619 +of entries to be returned.
1620 +However, the size limit applies to the total count of entries returned within
1621 +the search, and not to a single page.
1622 +Additional size limits may be enforced; the syntax is
1623 +.BR size.pr={<integer>|noEstimate|unlimited} ,
1624 +where
1625 +.I integer
1626 +is the max page size if no explicit limit is set; the keyword
1627 +.I noEstimate
1628 +inhibits the server from returning an estimate of the total number
1629 +of entries that might be returned
1630 +(note: the current implementation does not return any estimate).
1631 +The keyword
1632 +.I unlimited
1633 +indicates that no limit is applied to the pagedResults control page size.
1634 +The syntax
1635 +.B size.prtotal={<integer>|hard|unlimited|disabled}
1636 +allows one to set a limit on the total number of entries that the pagedResults
1637 +control will return.
1638 +By default it is set to the
1639 +.B hard
1640 +limit which will use the size.hard value.
1641 +When set,
1642 +.I integer
1643 +is the max number of entries that the whole search with pagedResults control
1644 +can return.
1645 +Use
1646 +.I unlimited
1647 +to allow unlimited number of entries to be returned, e.g. to allow
1648 +the use of the pagedResults control as a means to circumvent size
1649 +limitations on regular searches; the keyword
1650 +.I disabled
1651 +disables the control, i.e. no paged results can be returned.
1652 +Note that the total number of entries returned when the pagedResults control
1653 +is requested cannot exceed the
1654 +.B hard
1655 +size limit of regular searches unless extended by the
1656 +.B prtotal
1657 +switch.
1658 +
1659 +The \fBlimits\fP statement is typically used to let an unlimited
1660 +number of entries be returned by searches performed
1661 +with the identity used by the consumer for synchronization purposes
1662 +by means of the RFC 4533 LDAP Content Synchronization protocol
1663 +(see \fBsyncrepl\fP for details).
1664 +
1665 +When using subordinate databases, it is necessary for any limits that
1666 +are to be applied across the parent and its subordinates to be defined in
1667 +both the parent and its subordinates. Otherwise the settings on the
1668 +subordinate databases are not honored.
1669 +.RE
1670 +.TP
1671 +.B maxderefdepth <depth>
1672 +Specifies the maximum number of aliases to dereference when trying to
1673 +resolve an entry, used to avoid infinite alias loops. The default is 15.
1674 +.TP
1675 +.B multiprovider on | off
1676 +This option puts a consumer database into Multi-Provider mode. Update
1677 +operations will be accepted from any user, not just the updatedn. The
1678 +database must already be configured as a syncrepl consumer
1679 +before this keyword may be set. This mode also requires a
1680 +.B serverID
1681 +(see above) to be configured.
1682 +By default, multiprovider is off.
1683 +.TP
1684 +.B monitoring on | off
1685 +This option enables database-specific monitoring in the entry related
1686 +to the current database in the "cn=Databases,cn=Monitor" subtree
1687 +of the monitor database, if the monitor database is enabled.
1688 +Currently, only the MDB database provides database-specific monitoring.
1689 +If monitoring is supported by the backend it defaults to on, otherwise
1690 +off.
1691 +.TP
1692 +.B overlay <overlay-name>
1693 +Add the specified overlay to this database. An overlay is a piece of
1694 +code that intercepts database operations in order to extend or change
1695 +them. Overlays are pushed onto
1696 +a stack over the database, and so they will execute in the reverse
1697 +of the order in which they were configured and the database itself
1698 +will receive control last of all. See the
1699 +.BR slapd.overlays (5)
1700 +manual page for an overview of the available overlays.
1701 +Note that all of the database's
1702 +regular settings should be configured before any overlay settings.
1703 +.TP
1704 +.B readonly on | off
1705 +This option puts the database into "read-only" mode. Any attempts to
1706 +modify the database will return an "unwilling to perform" error. By
1707 +default, readonly is off.
1708 +.TP
1709 +.B restrict <oplist>
1710 +Specify a whitespace separated list of operations that are restricted.
1711 +If defined inside a database specification, restrictions apply only
1712 +to that database, otherwise they are global.
1713 +Operations can be any of
1714 +.BR add ,
1715 +.BR bind ,
1716 +.BR compare ,
1717 +.BR delete ,
1718 +.BR extended[=<OID>] ,
1719 +.BR modify ,
1720 +.BR rename ,
1721 +.BR search ,
1722 +or the special pseudo-operations
1723 +.B read
1724 +and
1725 +.BR write ,
1726 +which respectively summarize read and write operations.
1727 +The use of
1728 +.I restrict write
1729 +is equivalent to
1730 +.I readonly on
1731 +(see above).
1732 +The
1733 +.B extended
1734 +keyword allows one to indicate the OID of the specific operation
1735 +to be restricted.
1736 +.TP
1737 +.B rootdn <dn>
1738 +Specify the distinguished name that is not subject to access control
1739 +or administrative limit restrictions for operations on this database.
1740 +This DN may or may not be associated with an entry. An empty root
1741 +DN (the default) specifies no root access is to be granted. It is
1742 +recommended that the rootdn only be specified when needed (such as
1743 +when initially populating a database). If the rootdn is within
1744 +a namingContext (suffix) of the database, a simple bind password
1745 +may also be provided using the
1746 +.B rootpw
1747 +directive. Many optional features, including syncrepl, require the
1748 +rootdn to be defined for the database.
1749 +.TP
1750 +.B rootpw <password>
1751 +Specify a password (or hash of the password) for the rootdn. The
1752 +password can only be set if the rootdn is within the namingContext
1753 +(suffix) of the database.
1754 +This option accepts all RFC 2307 userPassword formats known to
1755 +the server (see
1756 +.B password\-hash
1757 +description) as well as cleartext.
1758 +.BR slappasswd (8)
1759 +may be used to generate a hash of a password. Cleartext
1760 +and \fB{CRYPT}\fP passwords are not recommended. If empty
1761 +(the default), authentication of the root DN is by other means
1762 +(e.g. SASL). Use of SASL is encouraged.
1763 +.TP
1764 +.B suffix <dn suffix>
1765 +Specify the DN suffix of queries that will be passed to this
1766 +backend database. Multiple suffix lines can be given and at least one is
1767 +required for each database definition.
1768 +
1769 +If the suffix of one database is "inside" that of another, the database
1770 +with the inner suffix must come first in the configuration file.
1771 +You may also want to glue such databases together with the
1772 +.B subordinate
1773 +keyword.
1774 +.TP
1775 +.B subordinate [advertise]
1776 +Specify that the current backend database is a subordinate of another
1777 +backend database. A subordinate database may have only one suffix. This
1778 +option may be used to glue multiple databases into a single namingContext.
1779 +If the suffix of the current database is within the namingContext of a
1780 +superior database, searches against the superior database will be
1781 +propagated to the subordinate as well. All of the databases
1782 +associated with a single namingContext should have identical rootdns.
1783 +Behavior of other LDAP operations is unaffected by this setting. In
1784 +particular, it is not possible to use moddn to move an entry from
1785 +one subordinate to another subordinate within the namingContext.
1786 +
1787 +If the optional \fBadvertise\fP flag is supplied, the naming context of
1788 +this database is advertised in the root DSE. The default is to hide this
1789 +database context, so that only the superior context is visible.
1790 +
1791 +If the slap tools
1792 +.BR slapcat (8),
1793 +.BR slapadd (8),
1794 +.BR slapmodify (8),
1795 +or
1796 +.BR slapindex (8)
1797 +are used on the superior database, any glued subordinates that support
1798 +these tools are opened as well.
1799 +
1800 +Databases that are glued together should usually be configured with the
1801 +same indices (assuming they support indexing), even for attributes that
1802 +only exist in some of these databases. In general, all of the glued
1803 +databases should be configured as similarly as possible, since the intent
1804 +is to provide the appearance of a single directory.
1805 +
1806 +Note that the \fIsubordinate\fP functionality is implemented internally
1807 +by the \fIglue\fP overlay and as such its behavior will interact with other
1808 +overlays in use. By default, the glue overlay is automatically configured as
1809 +the last overlay on the superior backend. Its position on the backend
1810 +can be explicitly configured by setting an \fBoverlay glue\fP directive
1811 +at the desired position. This explicit configuration is necessary e.g.
1812 +when using the \fIsyncprov\fP overlay, which needs to follow \fIglue\fP
1813 +in order to work over all of the glued databases. E.g.
1814 +.RS
1815 +.nf
1816 + database mdb
1817 + suffix dc=example,dc=com
1818 + ...
1819 + overlay glue
1820 + overlay syncprov
1821 +.fi
1822 +.RE
1823 +.TP
1824 +.B sync_use_subentry
1825 +Store the syncrepl contextCSN in a subentry instead of the context entry
1826 +of the database. The subentry's RDN will be "cn=ldapsync". By default
1827 +the contextCSN is stored in the context entry.
1828 +.HP
1829 +.hy 0
1830 +.B syncrepl rid=<replica ID>
1831 +.B provider=ldap[s]://<hostname>[:port]
1832 +.B searchbase=<base DN>
1833 +.B [type=refreshOnly|refreshAndPersist]
1834 +.B [interval=dd:hh:mm:ss]
1835 +.B [retry=[<retry interval> <# of retries>]+]
1836 +.B [filter=<filter str>]
1837 +.B [scope=sub|one|base|subord]
1838 +.B [attrs=<attr list>]
1839 +.B [exattrs=<attr list>]
1840 +.B [attrsonly]
1841 +.B [sizelimit=<limit>]
1842 +.B [timelimit=<limit>]
1843 +.B [schemachecking=on|off]
1844 +.B [network\-timeout=<seconds>]
1845 +.B [timeout=<seconds>]
1846 +.B [tcp\-user\-timeout=<milliseconds>]
1847 +.B [bindmethod=simple|sasl]
1848 +.B [binddn=<dn>]
1849 +.B [saslmech=<mech>]
1850 +.B [authcid=<identity>]
1851 +.B [authzid=<identity>]
1852 +.B [credentials=<passwd>]
1853 +.B [realm=<realm>]
1854 +.B [secprops=<properties>]
1855 +.B [keepalive=<idle>:<probes>:<interval>]
1856 +.B [starttls=yes|critical]
1857 +.B [tls_cert=<file>]
1858 +.B [tls_key=<file>]
1859 +.B [tls_cacert=<file>]
1860 +.B [tls_cacertdir=<path>]
1861 +.B [tls_reqcert=never|allow|try|demand]
1862 +.B [tls_reqsan=never|allow|try|demand]
1863 +.B [tls_cipher_suite=<ciphers>]
1864 +.B [tls_ecname=<names>]
1865 +.B [tls_crlcheck=none|peer|all]
1866 +.B [tls_protocol_min=<major>[.<minor>]]
1867 +.B [suffixmassage=<real DN>]
1868 +.B [logbase=<base DN>]
1869 +.B [logfilter=<filter str>]
1870 +.B [syncdata=default|accesslog|changelog]
1871 +.B [lazycommit]
1872 +.RS
1873 +Specify the current database as a consumer which is kept up-to-date with the
1874 +provider content by establishing the current
1875 +.BR slapd (8)
1876 +as a replication consumer site running a
1877 +.B syncrepl
1878 +replication engine.
1879 +The consumer content is kept synchronized to the provider content using
1880 +the LDAP Content Synchronization protocol. Refer to the
1881 +"OpenLDAP Administrator's Guide" for detailed information on
1882 +setting up a replicated
1883 +.B slapd
1884 +directory service using the
1885 +.B syncrepl
1886 +replication engine.
1887 +
1888 +.B rid
1889 +identifies the current
1890 +.B syncrepl
1891 +directive within the replication consumer site.
1892 +It is a non-negative integer not greater than 999 (limited
1893 +to three decimal digits).
1894 +
1895 +.B provider
1896 +specifies the replication provider site containing the provider content
1897 +as an LDAP URI. If <port> is not given, the standard LDAP port number
1898 +(389 or 636) is used.
1899 +
1900 +The content of the
1901 +.B syncrepl
1902 +consumer is defined using a search
1903 +specification as its result set. The consumer
1904 +.B slapd
1905 +will send search requests to the provider
1906 +.B slapd
1907 +according to the search specification. The search specification includes
1908 +.BR searchbase ", " scope ", " filter ", " attrs ", " attrsonly ", " sizelimit ", "
1909 +and
1910 +.B timelimit
1911 +parameters as in the normal search specification. The
1912 +.B exattrs
1913 +option may also be used to specify attributes that should be omitted
1914 +from incoming entries.
1915 +The \fBscope\fP defaults to \fBsub\fP, the \fBfilter\fP defaults to
1916 +\fB(objectclass=*)\fP, and there is no default \fBsearchbase\fP. The
1917 +\fBattrs\fP list defaults to \fB"*,+"\fP to return all user and operational
1918 +attributes, and \fBattrsonly\fP and \fBexattrs\fP are unset by default.
1919 +The \fBsizelimit\fP and \fBtimelimit\fP only
1920 +accept "unlimited" and positive integers, and both default to "unlimited".
1921 +The \fBsizelimit\fP and \fBtimelimit\fP parameters define
1922 +a consumer requested limitation on the number of entries that can be returned
1923 +by the LDAP Content Synchronization operation; these should be left unchanged
1924 +from the default otherwise replication may never succeed.
1925 +Note, however, that any provider-side limits for the replication identity
1926 +will be enforced by the provider regardless of the limits requested
1927 +by the LDAP Content Synchronization operation, much like for any other
1928 +search operation.
1929 +
1930 +The LDAP Content Synchronization protocol has two operation types.
1931 +In the
1932 +.B refreshOnly
1933 +operation, the next synchronization search operation
1934 +is periodically rescheduled at an interval time (specified by
1935 +.B interval
1936 +parameter; 1 day by default)
1937 +after each synchronization operation finishes.
1938 +In the
1939 +.B refreshAndPersist
1940 +operation, a synchronization search remains persistent in the provider slapd.
1941 +Further updates to the provider will generate
1942 +.B searchResultEntry
1943 +to the consumer slapd as the search responses to the persistent
1944 +synchronization search. If the initial search fails due to an error, the
1945 +next synchronization search operation is periodically rescheduled at an
1946 +interval time (specified by
1947 +.B interval
1948 +parameter; 1 day by default)
1949 +
1950 +If an error occurs during replication, the consumer will attempt to
1951 +reconnect according to the
1952 +.B retry
1953 +parameter which is a list of the <retry interval> and <# of retries> pairs.
1954 +For example, retry="60 10 300 3" lets the consumer retry every 60 seconds
1955 +for the first 10 times and then retry every 300 seconds for the next 3
1956 +times before stop retrying. The `+' in <# of retries> means indefinite
1957 +number of retries until success.
1958 +If no
1959 +.B retry
1960 +is specified, by default syncrepl retries every hour forever.
1961 +
1962 +The schema checking can be enforced at the LDAP Sync
1963 +consumer site by turning on the
1964 +.B schemachecking
1965 +parameter. The default is \fBoff\fP.
1966 +Schema checking \fBon\fP means that replicated entries must have
1967 +a structural objectClass, must obey to objectClass requirements
1968 +in terms of required/allowed attributes, and that naming attributes
1969 +and distinguished values must be present.
1970 +As a consequence, schema checking should be \fBoff\fP when partial
1971 +replication is used.
1972 +
1973 +The
1974 +.B network\-timeout
1975 +parameter sets how long the consumer will wait to establish a
1976 +network connection to the provider. Once a connection is
1977 +established, the
1978 +.B timeout
1979 +parameter determines how long the consumer will wait for the initial
1980 +Bind request to complete. The defaults for these parameters come
1981 +from
1982 +.BR ldap.conf (5).
1983 +The
1984 +.B tcp\-user\-timeout
1985 +parameter, if non-zero, corresponds to the
1986 +.B TCP_USER_TIMEOUT
1987 +set on the target connections, overriding the operating system setting.
1988 +Only some systems support the customization of this parameter, it is
1989 +ignored otherwise and system-wide settings are used.
1990 +
1991 +A
1992 +.B bindmethod
1993 +of
1994 +.B simple
1995 +requires the options
1996 +.B binddn
1997 +and
1998 +.B credentials
1999 +and should only be used when adequate security services
2000 +(e.g. TLS or IPSEC) are in place.
2001 +.B REMEMBER: simple bind credentials must be in cleartext!
2002 +A
2003 +.B bindmethod
2004 +of
2005 +.B sasl
2006 +requires the option
2007 +.B saslmech.
2008 +Depending on the mechanism, an authentication identity and/or
2009 +credentials can be specified using
2010 +.B authcid
2011 +and
2012 +.B credentials.
2013 +The
2014 +.B authzid
2015 +parameter may be used to specify an authorization identity.
2016 +Specific security properties (as with the
2017 +.B sasl\-secprops
2018 +keyword above) for a SASL bind can be set with the
2019 +.B secprops
2020 +option. A non default SASL realm can be set with the
2021 +.B realm
2022 +option.
2023 +The identity used for synchronization by the consumer should be allowed
2024 +to receive an unlimited number of entries in response to a search request.
2025 +The provider, other than allowing authentication of the syncrepl identity,
2026 +should grant that identity appropriate access privileges to the data
2027 +that is being replicated (\fBaccess\fP directive), and appropriate time
2028 +and size limits.
2029 +This can be accomplished by either allowing unlimited \fBsizelimit\fP
2030 +and \fBtimelimit\fP, or by setting an appropriate \fBlimits\fP statement
2031 +in the consumer's configuration (see \fBsizelimit\fP and \fBlimits\fP
2032 +for details).
2033 +
2034 +The
2035 +.B keepalive
2036 +parameter sets the values of \fIidle\fP, \fIprobes\fP, and \fIinterval\fP
2037 +used to check whether a socket is alive;
2038 +.I idle
2039 +is the number of seconds a connection needs to remain idle before TCP
2040 +starts sending keepalive probes;
2041 +.I probes
2042 +is the maximum number of keepalive probes TCP should send before dropping
2043 +the connection;
2044 +.I interval
2045 +is interval in seconds between individual keepalive probes.
2046 +Only some systems support the customization of these values;
2047 +the
2048 +.B keepalive
2049 +parameter is ignored otherwise, and system-wide settings are used.
2050 +
2051 +The
2052 +.B starttls
2053 +parameter specifies use of the StartTLS extended operation
2054 +to establish a TLS session before Binding to the provider. If the
2055 +.B critical
2056 +argument is supplied, the session will be aborted if the StartTLS request
2057 +fails. Otherwise the syncrepl session continues without TLS. The
2058 +.B tls_reqcert
2059 +setting defaults to "demand", the
2060 +.B tls_reqsan
2061 +setting defaults to "allow", and the other TLS settings
2062 +default to the same as the main slapd TLS settings.
2063 +
2064 +The
2065 +.B suffixmassage
2066 +parameter allows the consumer to pull entries from a remote directory
2067 +whose DN suffix differs from the local directory. The portion of the
2068 +remote entries' DNs that matches the \fIsearchbase\fP will be replaced
2069 +with the suffixmassage DN.
2070 +
2071 +Rather than replicating whole entries, the consumer can query logs of
2072 +data modifications. This mode of operation is referred to as \fIdelta
2073 +syncrepl\fP. In addition to the above parameters, the
2074 +.B logbase
2075 +and
2076 +.B logfilter
2077 +parameters must be set appropriately for the log that will be used. The
2078 +.B syncdata
2079 +parameter must be set to either "accesslog" if the log conforms to the
2080 +.BR slapo\-accesslog (5)
2081 +log format, or "changelog" if the log conforms
2082 +to the obsolete \fIchangelog\fP format. If the
2083 +.B syncdata
2084 +parameter is omitted or set to "default" then the log parameters are
2085 +ignored.
2086 +
2087 +The
2088 +.B lazycommit
2089 +parameter tells the underlying database that it can store changes without
2090 +performing a full flush after each change. This may improve performance
2091 +for the consumer, while sacrificing safety or durability.
2092 +.RE
2093 +.TP
2094 +.B updatedn <dn>
2095 +This option is only applicable in a replica
2096 +database.
2097 +It specifies the DN permitted to update (subject to access controls)
2098 +the replica. It is only needed in certain push-mode
2099 +replication scenarios. Generally, this DN
2100 +.I should not
2101 +be the same as the
2102 +.B rootdn
2103 +used at the provider.
2104 +.TP
2105 +.B updateref <url>
2106 +Specify the referral to pass back when
2107 +.BR slapd (8)
2108 +is asked to modify a replicated local database.
2109 +If specified multiple times, each url is provided.
2110 +
2111 +.SH DATABASE-SPECIFIC OPTIONS
2112 +Each database may allow specific configuration options; they are
2113 +documented separately in the backends' manual pages. See the
2114 +.BR slapd.backends (5)
2115 +manual page for an overview of available backends.
2116 +.SH EXAMPLES
2117 +.LP
2118 +Here is a short example of a configuration file:
2119 +.LP
2120 +.RS
2121 +.nf
2122 +include SYSCONFDIR/schema/core.schema
2123 +pidfile LOCALSTATEDIR/run/slapd.pid
2124 +
2125 +# Subtypes of "name" (e.g. "cn" and "ou") with the
2126 +# option ";x\-hidden" can be searched for/compared,
2127 +# but are not shown. See \fBslapd.access\fP(5).
2128 +attributeoptions x\-hidden lang\-
2129 +access to attrs=name;x\-hidden by * =cs
2130 +
2131 +# Protect passwords. See \fBslapd.access\fP(5).
2132 +access to attrs=userPassword by * auth
2133 +# Read access to other attributes and entries.
2134 +access to * by * read
2135 +
2136 +database mdb
2137 +suffix "dc=our\-domain,dc=com"
2138 +# The database directory MUST exist prior to
2139 +# running slapd AND should only be accessible
2140 +# by the slapd/tools. Mode 0700 recommended.
2141 +directory LOCALSTATEDIR/openldap\-data
2142 +# Indices to maintain
2143 +index objectClass eq
2144 +index cn,sn,mail pres,eq,approx,sub
2145 +
2146 +# We serve small clients that do not handle referrals,
2147 +# so handle remote lookups on their behalf.
2148 +database ldap
2149 +suffix ""
2150 +uri ldap://ldap.some\-server.com/
2151 +lastmod off
2152 +.fi
2153 +.RE
2154 +.LP
2155 +"OpenLDAP Administrator's Guide" contains a longer annotated
2156 +example of a configuration file.
2157 +The original ETCDIR/slapd.conf is another example.
2158 +.SH FILES
2159 +.TP
2160 +ETCDIR/slapd.conf
2161 +default slapd configuration file
2162 +.SH SEE ALSO
2163 +.BR ldap (3),
2164 +.BR gnutls\-cli (1),
2165 +.BR slapd\-config (5),
2166 +.BR slapd.access (5),
2167 +.BR slapd.backends (5),
2168 +.BR slapd.overlays (5),
2169 +.BR slapd.plugin (5),
2170 +.BR slapd (8),
2171 +.BR slapacl (8),
2172 +.BR slapadd (8),
2173 +.BR slapauth (8),
2174 +.BR slapcat (8),
2175 +.BR slapdn (8),
2176 +.BR slapindex (8),
2177 +.BR slapmodify (8),
2178 +.BR slappasswd (8),
2179 +.BR slaptest (8).
2180 +.LP
2181 +"OpenLDAP Administrator's Guide" (http://www.OpenLDAP.org/doc/admin/)
2182 +.SH ACKNOWLEDGEMENTS
2183 +.so ../Project
2184 diff -Naurp openldap-2.6.2.orig/doc/man/man5/slapd-config.5 openldap-2.6.2/doc/man/man5/slapd-config.5
2185 --- openldap-2.6.2.orig/doc/man/man5/slapd-config.5 2022-05-04 16:55:23.000000000 +0200
2186 +++ openldap-2.6.2/doc/man/man5/slapd-config.5 2022-05-05 12:05:53.312727754 +0200
2187 @@ -2233,7 +2233,7 @@ olcSuffix: "dc=our\-domain,dc=com"
2188 # The database directory MUST exist prior to
2189 # running slapd AND should only be accessible
2190 # by the slapd/tools. Mode 0700 recommended.
2191 -olcDbDirectory: LOCALSTATEDIR/openldap\-data
2192 +olcDbDirectory: LOCALSTATEDIR/lib/openldap
2193 # Indices to maintain
2194 olcDbIndex: objectClass eq
2195 olcDbIndex: cn,sn,mail pres,eq,approx,sub
2196 diff -Naurp openldap-2.6.2.orig/doc/man/man5/slapd-config.5.orig openldap-2.6.2/doc/man/man5/slapd-config.5.orig
2197 --- openldap-2.6.2.orig/doc/man/man5/slapd-config.5.orig 1970-01-01 01:00:00.000000000 +0100
2198 +++ openldap-2.6.2/doc/man/man5/slapd-config.5.orig 2022-05-04 16:55:23.000000000 +0200
2199 @@ -0,0 +1,2302 @@
2200 +.TH SLAPD-CONFIG 5 "RELEASEDATE" "OpenLDAP LDVERSION"
2201 +.\" Copyright 1998-2022 The OpenLDAP Foundation All Rights Reserved.
2202 +.\" Copying restrictions apply. See COPYRIGHT/LICENSE.
2203 +.\" $OpenLDAP$
2204 +.SH NAME
2205 +slapd\-config \- configuration backend to slapd
2206 +.SH SYNOPSIS
2207 +ETCDIR/slapd.d
2208 +.SH DESCRIPTION
2209 +The
2210 +.B config
2211 +backend manages all of the configuration information for the
2212 +.BR slapd (8)
2213 +daemon. This configuration information is also used by the SLAPD tools
2214 +.BR slapacl (8),
2215 +.BR slapadd (8),
2216 +.BR slapauth (8),
2217 +.BR slapcat (8),
2218 +.BR slapdn (8),
2219 +.BR slapindex (8),
2220 +.BR slapmodify (8),
2221 +and
2222 +.BR slaptest (8).
2223 +.LP
2224 +The
2225 +.B config
2226 +backend is backward compatible with the older
2227 +.BR slapd.conf (5)
2228 +file but provides the ability to change the configuration dynamically
2229 +at runtime. If slapd is run with only a
2230 +.B slapd.conf
2231 +file dynamic changes will be allowed but they will not persist across
2232 +a server restart. Dynamic changes are only saved when slapd is running
2233 +from a
2234 +.B slapd.d
2235 +configuration directory.
2236 +.LP
2237 +
2238 +Unlike other backends, there can only be one instance of the
2239 +.B config
2240 +backend, and most of its structure is predefined. The root of the
2241 +database is hardcoded to
2242 +.B "cn=config"
2243 +and this root entry contains
2244 +global settings for slapd. Multiple child entries underneath the
2245 +root entry are used to carry various other settings:
2246 +.RS
2247 +.TP
2248 +.B cn=Module
2249 +dynamically loaded modules
2250 +.TP
2251 +.B cn=Schema
2252 +schema definitions
2253 +.TP
2254 +.B olcBackend=xxx
2255 +backend-specific settings
2256 +.TP
2257 +.B olcDatabase=xxx
2258 +database-specific settings
2259 +.RE
2260 +
2261 +The
2262 +.B cn=Module
2263 +entries will only appear in configurations where slapd
2264 +was built with support for dynamically loaded modules. There can be
2265 +multiple entries, one for each configured module path. Within each
2266 +entry there will be values recorded for each module loaded on a
2267 +given path. These entries have no children.
2268 +
2269 +The
2270 +.B cn=Schema
2271 +entry contains all of the hardcoded schema elements.
2272 +The children of this entry contain all user-defined schema elements.
2273 +In schema that were loaded from include files, the child entry will
2274 +be named after the include file from which the schema was loaded.
2275 +Typically the first child in this subtree will be
2276 +.BR cn=core,cn=schema,cn=config .
2277 +
2278 +.B olcBackend
2279 +entries are for storing settings specific to a single
2280 +backend type (and thus global to all database instances of that type).
2281 +At present, only back-mdb implements any options of this type, so this
2282 +setting is not needed for any other backends.
2283 +
2284 +.B olcDatabase
2285 +entries store settings specific to a single database
2286 +instance. These entries may have
2287 +.B olcOverlay
2288 +child entries corresponding
2289 +to any overlays configured on the database. The olcDatabase and
2290 +olcOverlay entries may also have miscellaneous child entries for
2291 +other settings as needed. There are two special database entries
2292 +that are predefined \- one is an entry for the config database itself,
2293 +and the other is for the "frontend" database. Settings in the
2294 +frontend database are inherited by the other databases, unless
2295 +they are explicitly overridden in a specific database.
2296 +.LP
2297 +The specific configuration options available are discussed below in the
2298 +Global Configuration Options, General Backend Options, and General Database
2299 +Options. Options are set by defining LDAP attributes with specific values.
2300 +In general the names of the LDAP attributes are the same as the corresponding
2301 +.B slapd.conf
2302 +keyword, with an "olc" prefix added on.
2303 +
2304 +The parser for many of these attributes is the same as used for parsing
2305 +the slapd.conf keywords. As such, slapd.conf keywords that allow multiple
2306 +items to be specified on one line, separated by whitespace, will allow
2307 +multiple items to be specified in one attribute value. However, when
2308 +reading the attribute via LDAP, the items will be returned as individual
2309 +attribute values.
2310 +
2311 +Backend-specific options are discussed in the
2312 +.B slapd\-<backend>(5)
2313 +manual pages. Refer to the "OpenLDAP Administrator's Guide" for more
2314 +details on configuring slapd.
2315 +.SH GLOBAL CONFIGURATION OPTIONS
2316 +Options described in this section apply to the server as a whole.
2317 +Arguments that should be replaced by
2318 +actual text are shown in brackets <>.
2319 +
2320 +These options may only be specified in the
2321 +.B cn=config
2322 +entry. This entry must have an objectClass of
2323 +.BR olcGlobal .
2324 +
2325 +.TP
2326 +.B olcAllows: <features>
2327 +Specify a set of features to allow (default none).
2328 +.B bind_v2
2329 +allows acceptance of LDAPv2 bind requests. Note that
2330 +.BR slapd (8)
2331 +does not truly implement LDAPv2 (RFC 1777), now Historic (RFC 3494).
2332 +.B bind_anon_cred
2333 +allows anonymous bind when credentials are not empty (e.g.
2334 +when DN is empty).
2335 +.B bind_anon_dn
2336 +allows unauthenticated (anonymous) bind when DN is not empty.
2337 +.B update_anon
2338 +allows unauthenticated (anonymous) update operations to be processed
2339 +(subject to access controls and other administrative limits).
2340 +.B proxy_authz_anon
2341 +allows unauthenticated (anonymous) proxy authorization control to be processed
2342 +(subject to access controls, authorization and other administrative limits).
2343 +.TP
2344 +.B olcArgsFile: <filename>
2345 +The (absolute) name of a file that will hold the
2346 +.B slapd
2347 +server's command line (program name and options).
2348 +.TP
2349 +.B olcAttributeOptions: <option-name>...
2350 +Define tagging attribute options or option tag/range prefixes.
2351 +Options must not end with `\-', prefixes must end with `\-'.
2352 +The `lang\-' prefix is predefined.
2353 +If you use the
2354 +.B olcAttributeOptions
2355 +directive, `lang\-' will no longer be defined and you must specify it
2356 +explicitly if you want it defined.
2357 +
2358 +An attribute description with a tagging option is a subtype of that
2359 +attribute description without the option.
2360 +Except for that, options defined this way have no special semantics.
2361 +Prefixes defined this way work like the `lang\-' options:
2362 +They define a prefix for tagging options starting with the prefix.
2363 +That is, if you define the prefix `x\-foo\-', you can use the option
2364 +`x\-foo\-bar'.
2365 +Furthermore, in a search or compare, a prefix or range name (with
2366 +a trailing `\-') matches all options starting with that name, as well
2367 +as the option with the range name sans the trailing `\-'.
2368 +That is, `x\-foo\-bar\-' matches `x\-foo\-bar' and `x\-foo\-bar\-baz'.
2369 +
2370 +RFC 4520 reserves options beginning with `x\-' for private experiments.
2371 +Other options should be registered with IANA, see RFC 4520 section 3.5.
2372 +OpenLDAP also has the `binary' option built in, but this is a transfer
2373 +option, not a tagging option.
2374 +.TP
2375 +.B olcAuthIDRewrite: <rewrite\-rule>
2376 +Used by the authentication framework to convert simple user names
2377 +to an LDAP DN used for authorization purposes.
2378 +Its purpose is analogous to that of
2379 +.BR olcAuthzRegexp
2380 +(see below).
2381 +The
2382 +.B rewrite\-rule
2383 +is a set of rules analogous to those described in
2384 +.BR slapo\-rwm (5)
2385 +for data rewriting (after stripping the \fIrwm\-\fP prefix).
2386 +.B olcAuthIDRewrite
2387 +and
2388 +.B olcAuthzRegexp
2389 +should not be intermixed.
2390 +.TP
2391 +.B olcAuthzPolicy: <policy>
2392 +Used to specify which rules to use for Proxy Authorization. Proxy
2393 +authorization allows a client to authenticate to the server using one
2394 +user's credentials, but specify a different identity to use for authorization
2395 +and access control purposes. It essentially allows user A to login as user
2396 +B, using user A's password.
2397 +The
2398 +.B none
2399 +flag disables proxy authorization. This is the default setting.
2400 +The
2401 +.B from
2402 +flag will use rules in the
2403 +.I authzFrom
2404 +attribute of the authorization DN.
2405 +The
2406 +.B to
2407 +flag will use rules in the
2408 +.I authzTo
2409 +attribute of the authentication DN.
2410 +The
2411 +.B any
2412 +flag, an alias for the deprecated value of
2413 +.BR both ,
2414 +will allow any of the above, whatever succeeds first (checked in
2415 +.BR to ,
2416 +.B from
2417 +sequence.
2418 +The
2419 +.B all
2420 +flag requires both authorizations to succeed.
2421 +.LP
2422 +.RS
2423 +The rules are mechanisms to specify which identities are allowed
2424 +to perform proxy authorization.
2425 +The
2426 +.I authzFrom
2427 +attribute in an entry specifies which other users
2428 +are allowed to proxy login to this entry. The
2429 +.I authzTo
2430 +attribute in
2431 +an entry specifies which other users this user can authorize as. Use of
2432 +.I authzTo
2433 +rules can be easily
2434 +abused if users are allowed to write arbitrary values to this attribute.
2435 +In general the
2436 +.I authzTo
2437 +attribute must be protected with ACLs such that
2438 +only privileged users can modify it.
2439 +The value of
2440 +.I authzFrom
2441 +and
2442 +.I authzTo
2443 +describes an
2444 +.B identity
2445 +or a set of identities; it can take five forms:
2446 +.RS
2447 +.TP
2448 +.B ldap:///<base>??[<scope>]?<filter>
2449 +.RE
2450 +.RS
2451 +.B dn[.<dnstyle>]:<pattern>
2452 +.RE
2453 +.RS
2454 +.B u[.<mech>[<realm>]]:<pattern>
2455 +.RE
2456 +.RS
2457 +.B group[/objectClass[/attributeType]]:<pattern>
2458 +.RE
2459 +.RS
2460 +.B <pattern>
2461 +.RE
2462 +.RS
2463 +
2464 +.B <dnstyle>:={exact|onelevel|children|subtree|regex}
2465 +
2466 +.RE
2467 +The first form is a valid LDAP
2468 +.B URI
2469 +where the
2470 +.IR <host>:<port> ,
2471 +the
2472 +.I <attrs>
2473 +and the
2474 +.I <extensions>
2475 +portions must be absent, so that the search occurs locally on either
2476 +.I authzFrom
2477 +or
2478 +.IR authzTo .
2479 +
2480 +.LP
2481 +The second form is a
2482 +.BR DN ,
2483 +with the optional style modifiers
2484 +.IR exact ,
2485 +.IR onelevel ,
2486 +.IR children ,
2487 +and
2488 +.I subtree
2489 +for exact, onelevel, children and subtree matches, which cause
2490 +.I <pattern>
2491 +to be normalized according to the DN normalization rules, or the special
2492 +.I regex
2493 +style, which causes the
2494 +.I <pattern>
2495 +to be treated as a POSIX (''extended'') regular expression, as
2496 +discussed in
2497 +.BR regex (7)
2498 +and/or
2499 +.BR re_format (7).
2500 +A pattern of
2501 +.I *
2502 +means any non-anonymous DN.
2503 +
2504 +.LP
2505 +The third form is a SASL
2506 +.BR id ,
2507 +with the optional fields
2508 +.I <mech>
2509 +and
2510 +.I <realm>
2511 +that allow to specify a SASL
2512 +.BR mechanism ,
2513 +and eventually a SASL
2514 +.BR realm ,
2515 +for those mechanisms that support one.
2516 +The need to allow the specification of a mechanism is still debated,
2517 +and users are strongly discouraged to rely on this possibility.
2518 +
2519 +.LP
2520 +The fourth form is a group specification.
2521 +It consists of the keyword
2522 +.BR group ,
2523 +optionally followed by the specification of the group
2524 +.B objectClass
2525 +and
2526 +.BR attributeType .
2527 +The
2528 +.B objectClass
2529 +defaults to
2530 +.IR groupOfNames .
2531 +The
2532 +.B attributeType
2533 +defaults to
2534 +.IR member .
2535 +The group with DN
2536 +.B <pattern>
2537 +is searched with base scope, filtered on the specified
2538 +.BR objectClass .
2539 +The values of the resulting
2540 +.B attributeType
2541 +are searched for the asserted DN.
2542 +
2543 +.LP
2544 +The fifth form is provided for backwards compatibility. If no identity
2545 +type is provided, i.e. only
2546 +.B <pattern>
2547 +is present, an
2548 +.I exact DN
2549 +is assumed; as a consequence,
2550 +.B <pattern>
2551 +is subjected to DN normalization.
2552 +
2553 +.LP
2554 +Since the interpretation of
2555 +.I authzFrom
2556 +and
2557 +.I authzTo
2558 +can impact security, users are strongly encouraged
2559 +to explicitly set the type of identity specification that is being used.
2560 +A subset of these rules can be used as third arg in the
2561 +.B olcAuthzRegexp
2562 +statement (see below); significantly, the
2563 +.IR URI ,
2564 +provided it results in exactly one entry,
2565 +and the
2566 +.I dn.exact:<dn>
2567 +forms.
2568 +.RE
2569 +.TP
2570 +.B olcAuthzRegexp: <match> <replace>
2571 +Used by the authentication framework to convert simple user names,
2572 +such as provided by SASL subsystem, or extracted from certificates
2573 +in case of cert-based SASL EXTERNAL, or provided within the RFC 4370
2574 +"proxied authorization" control, to an LDAP DN used for
2575 +authorization purposes. Note that the resulting DN need not refer
2576 +to an existing entry to be considered valid. When an authorization
2577 +request is received from the SASL subsystem, the SASL
2578 +.BR USERNAME ,
2579 +.BR REALM ,
2580 +and
2581 +.B MECHANISM
2582 +are taken, when available, and combined into a name of the form
2583 +.RS
2584 +.RS
2585 +.TP
2586 +.B UID=<username>[[,CN=<realm>],CN=<mechanism>],CN=auth
2587 +
2588 +.RE
2589 +This name is then compared against the
2590 +.B match
2591 +POSIX (''extended'') regular expression, and if the match is successful,
2592 +the name is replaced with the
2593 +.B replace
2594 +string. If there are wildcard strings in the
2595 +.B match
2596 +regular expression that are enclosed in parenthesis, e.g.
2597 +.RS
2598 +.TP
2599 +.B UID=([^,]*),CN=.*
2600 +
2601 +.RE
2602 +then the portion of the name that matched the wildcard will be stored
2603 +in the numbered placeholder variable $1. If there are other wildcard strings
2604 +in parenthesis, the matching strings will be in $2, $3, etc. up to $9. The
2605 +placeholders can then be used in the
2606 +.B replace
2607 +string, e.g.
2608 +.RS
2609 +.TP
2610 +.B UID=$1,OU=Accounts,DC=example,DC=com
2611 +
2612 +.RE
2613 +The replaced name can be either a DN, i.e. a string prefixed by "dn:",
2614 +or an LDAP URI.
2615 +If the latter, the server will use the URI to search its own database(s)
2616 +and, if the search returns exactly one entry, the name is
2617 +replaced by the DN of that entry. The LDAP URI must have no
2618 +hostport, attrs, or extensions components, but the filter is mandatory,
2619 +e.g.
2620 +.RS
2621 +.TP
2622 +.B ldap:///OU=Accounts,DC=example,DC=com??one?(UID=$1)
2623 +
2624 +.RE
2625 +The protocol portion of the URI must be strictly
2626 +.BR ldap .
2627 +Note that this search is subject to access controls. Specifically,
2628 +the authentication identity must have "auth" access in the subject.
2629 +
2630 +Multiple
2631 +.B olcAuthzRegexp
2632 +values can be specified to allow for multiple matching
2633 +and replacement patterns. The matching patterns are checked in the order they
2634 +appear in the attribute, stopping at the first successful match.
2635 +
2636 +.\".B Caution:
2637 +.\"Because the plus sign + is a character recognized by the regular expression engine,
2638 +.\"and it will appear in names that include a REALM, be careful to escape the
2639 +.\"plus sign with a backslash \\+ to remove the character's special meaning.
2640 +.RE
2641 +.TP
2642 +.B olcConcurrency: <integer>
2643 +Specify a desired level of concurrency. Provided to the underlying
2644 +thread system as a hint. The default is not to provide any hint. This setting
2645 +is only meaningful on some platforms where there is not a one to one
2646 +correspondence between user threads and kernel threads.
2647 +.TP
2648 +.B olcConnMaxPending: <integer>
2649 +Specify the maximum number of pending requests for an anonymous session.
2650 +If requests are submitted faster than the server can process them, they
2651 +will be queued up to this limit. If the limit is exceeded, the session
2652 +is closed. The default is 100.
2653 +.TP
2654 +.B olcConnMaxPendingAuth: <integer>
2655 +Specify the maximum number of pending requests for an authenticated session.
2656 +The default is 1000.
2657 +.TP
2658 +.B olcDisallows: <features>
2659 +Specify a set of features to disallow (default none).
2660 +.B bind_anon
2661 +disables acceptance of anonymous bind requests. Note that this setting
2662 +does not prohibit anonymous directory access (See "require authc").
2663 +.B bind_simple
2664 +disables simple (bind) authentication.
2665 +.B tls_2_anon
2666 +disables forcing session to anonymous status (see also
2667 +.BR tls_authc )
2668 +upon StartTLS operation receipt.
2669 +.B tls_authc
2670 +disallows the StartTLS operation if authenticated (see also
2671 +.BR tls_2_anon ).
2672 +.B proxy_authz_non_critical
2673 +disables acceptance of the proxied authorization control (RFC4370)
2674 +with criticality set to FALSE.
2675 +.B dontusecopy_non_critical
2676 +disables acceptance of the dontUseCopy control (a work in progress)
2677 +with criticality set to FALSE.
2678 +.TP
2679 +.B olcGentleHUP: { TRUE | FALSE }
2680 +A SIGHUP signal will only cause a 'gentle' shutdown-attempt:
2681 +.B Slapd
2682 +will stop listening for new connections, but will not close the
2683 +connections to the current clients. Future write operations return
2684 +unwilling-to-perform, though. Slapd terminates when all clients
2685 +have closed their connections (if they ever do), or \- as before \-
2686 +if it receives a SIGTERM signal. This can be useful if you wish to
2687 +terminate the server and start a new
2688 +.B slapd
2689 +server
2690 +.B with another database,
2691 +without disrupting the currently active clients.
2692 +The default is FALSE. You may wish to use
2693 +.B olcIdleTimeout
2694 +along with this option.
2695 +.TP
2696 +.B olcIdleTimeout: <integer>
2697 +Specify the number of seconds to wait before forcibly closing
2698 +an idle client connection. A setting of 0 disables this
2699 +feature. The default is 0. You may also want to set the
2700 +.B olcWriteTimeout
2701 +option.
2702 +.TP
2703 +.B olcIndexHash64: { on | off }
2704 +Use a 64 bit hash for indexing. The default is to use 32 bit hashes.
2705 +These hashes are used for equality and substring indexing. The 64 bit
2706 +version may be needed to avoid index collisions when the number of
2707 +indexed values exceeds ~64 million. (Note that substring indexing
2708 +generates multiple index values per actual attribute value.)
2709 +Indices generated with 32 bit hashes are incompatible with the 64 bit
2710 +version, and vice versa. Any existing databases must be fully reloaded
2711 +when changing this setting. This directive is only supported on 64 bit CPUs.
2712 +.TP
2713 +.B olcIndexIntLen: <integer>
2714 +Specify the key length for ordered integer indices. The most significant
2715 +bytes of the binary integer will be used for index keys. The default
2716 +value is 4, which provides exact indexing for 31 bit values.
2717 +A floating point representation is used to index too large values.
2718 +.TP
2719 +.B olcIndexSubstrIfMaxlen: <integer>
2720 +Specify the maximum length for subinitial and subfinal indices. Only
2721 +this many characters of an attribute value will be processed by the
2722 +indexing functions; any excess characters are ignored. The default is 4.
2723 +.TP
2724 +.B olcIndexSubstrIfMinlen: <integer>
2725 +Specify the minimum length for subinitial and subfinal indices. An
2726 +attribute value must have at least this many characters in order to be
2727 +processed by the indexing functions. The default is 2.
2728 +.TP
2729 +.B olcIndexSubstrAnyLen: <integer>
2730 +Specify the length used for subany indices. An attribute value must have
2731 +at least this many characters in order to be processed. Attribute values
2732 +longer than this length will be processed in segments of this length. The
2733 +default is 4. The subany index will also be used in subinitial and
2734 +subfinal index lookups when the filter string is longer than the
2735 +.I olcIndexSubstrIfMaxlen
2736 +value.
2737 +.TP
2738 +.B olcIndexSubstrAnyStep: <integer>
2739 +Specify the steps used in subany index lookups. This value sets the offset
2740 +for the segments of a filter string that are processed for a subany index
2741 +lookup. The default is 2. For example, with the default values, a search
2742 +using this filter "cn=*abcdefgh*" would generate index lookups for
2743 +"abcd", "cdef", and "efgh".
2744 +
2745 +.LP
2746 +Note: Indexing support depends on the particular backend in use. Also,
2747 +changing these settings will generally require deleting any indices that
2748 +depend on these parameters and recreating them with
2749 +.BR slapindex (8).
2750 +
2751 +.TP
2752 +.B olcListenerThreads: <integer>
2753 +Specify the number of threads to use for the connection manager.
2754 +The default is 1 and this is typically adequate for up to 16 CPU cores.
2755 +The value should be set to a power of 2.
2756 +.TP
2757 +.B olcLocalSSF: <SSF>
2758 +Specifies the Security Strength Factor (SSF) to be given local LDAP sessions,
2759 +such as those to the ldapi:// listener. For a description of SSF values,
2760 +see
2761 +.BR olcSaslSecProps 's
2762 +.B minssf
2763 +option description. The default is 71.
2764 +.TP
2765 +.B olcLogFile: <filename>
2766 +Specify a file for recording slapd debug messages. By default these messages
2767 +only go to stderr, are not recorded anywhere else, and are unrelated to
2768 +messages exposed by the
2769 +.B olcLogLevel
2770 +configuration parameter. Specifying a logfile copies messages to both stderr
2771 +and the logfile.
2772 +.TP
2773 +.B olcLogFileFormat: debug | syslog-utc | syslog-localtime
2774 +Specify the prefix format for messages written to the logfile. The debug
2775 +format is the normal format used for slapd debug messages, with a timestamp
2776 +in hexadecimal, followed by a thread ID. The other options are to
2777 +use syslog(3) style prefixes, with timestamps either in UTC or in the
2778 +local timezone. The default is debug format.
2779 +.TP
2780 +.B olcLogFileOnly: TRUE | FALSE
2781 +Specify that debug messages should only go to the configured logfile, and
2782 +not to stderr.
2783 +.TP
2784 +.B olcLogFileRotate: <max> <Mbytes> <hours>
2785 +Specify automatic rotation for the configured logfile as the maximum
2786 +number of old logfiles to retain, a maximum size in megabytes to allow a
2787 +logfile to grow before rotation, and a maximum age in hours for a logfile
2788 +to be used before rotation. The maximum number must be in the range 1-99.
2789 +Setting Mbytes or hours to zero disables the size or age check, respectively.
2790 +At least one of Mbytes or hours must be non-zero. By default no automatic
2791 +rotation will be performed.
2792 +.TP
2793 +.B olcLogLevel: <integer> [...]
2794 +Specify the level at which debugging statements and operation
2795 +statistics should be syslogged (currently logged to the
2796 +.BR syslogd (8)
2797 +LOG_LOCAL4 facility).
2798 +They must be considered subsystems rather than increasingly verbose
2799 +log levels.
2800 +Some messages with higher priority are logged regardless
2801 +of the configured loglevel as soon as any logging is configured.
2802 +Log levels are additive, and available levels are:
2803 +.RS
2804 +.RS
2805 +.PD 0
2806 +.TP
2807 +.B 1
2808 +.B (0x1 trace)
2809 +trace function calls
2810 +.TP
2811 +.B 2
2812 +.B (0x2 packets)
2813 +debug packet handling
2814 +.TP
2815 +.B 4
2816 +.B (0x4 args)
2817 +heavy trace debugging (function args)
2818 +.TP
2819 +.B 8
2820 +.B (0x8 conns)
2821 +connection management
2822 +.TP
2823 +.B 16
2824 +.B (0x10 BER)
2825 +print out packets sent and received
2826 +.TP
2827 +.B 32
2828 +.B (0x20 filter)
2829 +search filter processing
2830 +.TP
2831 +.B 64
2832 +.B (0x40 config)
2833 +configuration file processing
2834 +.TP
2835 +.B 128
2836 +.B (0x80 ACL)
2837 +access control list processing
2838 +.TP
2839 +.B 256
2840 +.B (0x100 stats)
2841 +connections, LDAP operations, results (recommended)
2842 +.TP
2843 +.B 512
2844 +.B (0x200 stats2)
2845 +stats2 log entries sent
2846 +.TP
2847 +.B 1024
2848 +.B (0x400 shell)
2849 +print communication with shell backends
2850 +.TP
2851 +.B 2048
2852 +.B (0x800 parse)
2853 +entry parsing
2854 +\".TP
2855 +\".B 4096
2856 +\".B (0x1000 cache)
2857 +\"caching (unused)
2858 +\".TP
2859 +\".B 8192
2860 +\".B (0x2000 index)
2861 +\"data indexing (unused)
2862 +.TP
2863 +.B 16384
2864 +.B (0x4000 sync)
2865 +LDAPSync replication
2866 +.TP
2867 +.B 32768
2868 +.B (0x8000 none)
2869 +only messages that get logged whatever log level is set
2870 +.PD
2871 +.RE
2872 +The desired log level can be input as a single integer that combines
2873 +the (ORed) desired levels, both in decimal or in hexadecimal notation,
2874 +as a list of integers (that are ORed internally),
2875 +or as a list of the names that are shown between parenthesis, such that
2876 +.LP
2877 +.nf
2878 + olcLogLevel: 129
2879 + olcLogLevel: 0x81
2880 + olcLogLevel: 128 1
2881 + olcLogLevel: 0x80 0x1
2882 + olcLogLevel: acl trace
2883 +.fi
2884 +.LP
2885 +are equivalent.
2886 +The keyword
2887 +.B any
2888 +can be used as a shortcut to enable logging at all levels (equivalent to \-1).
2889 +The keyword
2890 +.BR none ,
2891 +or the equivalent integer representation, causes those messages
2892 +that are logged regardless of the configured olcLogLevel to be logged.
2893 +In fact, if no olcLogLevel (or a 0 level) is defined, no logging occurs,
2894 +so at least the
2895 +.B none
2896 +level is required to have high priority messages logged.
2897 +
2898 +Note that the
2899 +.BR packets ,
2900 +.BR BER ,
2901 +and
2902 +.B parse
2903 +levels are only available as debug output on stderr, and are not
2904 +sent to syslog.
2905 +
2906 +This setting defaults to \fBstats\fP.
2907 +This level should usually also be included when using other loglevels, to
2908 +help analyze the logs.
2909 +.RE
2910 +.TP
2911 +.B olcMaxFilterDepth: <integer>
2912 +Specify the maximum depth of nested filters in search requests.
2913 +The default is 1000.
2914 +.TP
2915 +.B olcPasswordCryptSaltFormat: <format>
2916 +Specify the format of the salt passed to
2917 +.BR crypt (3)
2918 +when generating {CRYPT} passwords (see
2919 +.BR olcPasswordHash )
2920 +during processing of LDAP Password Modify Extended Operations (RFC 3062).
2921 +
2922 +This string needs to be in
2923 +.BR sprintf (3)
2924 +format and may include one (and only one) %s conversion.
2925 +This conversion will be substituted with a string of random
2926 +characters from [A\-Za\-z0\-9./]. For example, "%.2s"
2927 +provides a two character salt and "$1$%.8s" tells some
2928 +versions of crypt(3) to use an MD5 algorithm and provides
2929 +8 random characters of salt. The default is "%s", which
2930 +provides 31 characters of salt.
2931 +.TP
2932 +.B olcPidFile: <filename>
2933 +The (absolute) name of a file that will hold the
2934 +.B slapd
2935 +server's process ID (see
2936 +.BR getpid (2)).
2937 +.TP
2938 +.B olcPluginLogFile: <filename>
2939 +The ( absolute ) name of a file that will contain log
2940 +messages from
2941 +.B SLAPI
2942 +plugins. See
2943 +.BR slapd.plugin (5)
2944 +for details.
2945 +.TP
2946 +.B olcReferral: <url>
2947 +Specify the referral to pass back when
2948 +.BR slapd (8)
2949 +cannot find a local database to handle a request.
2950 +If multiple values are specified, each url is provided.
2951 +.TP
2952 +.B olcReverseLookup: TRUE | FALSE
2953 +Enable/disable client name unverified reverse lookup (default is
2954 +.BR FALSE
2955 +if compiled with \-\-enable\-rlookups).
2956 +.TP
2957 +.B olcRootDSE: <file>
2958 +Specify the name of an LDIF(5) file containing user defined attributes
2959 +for the root DSE. These attributes are returned in addition to the
2960 +attributes normally produced by slapd.
2961 +
2962 +The root DSE is an entry with information about the server and its
2963 +capabilities, in operational attributes.
2964 +It has the empty DN, and can be read with e.g.:
2965 +.ti +4
2966 +ldapsearch \-x \-b "" \-s base "+"
2967 +.br
2968 +See RFC 4512 section 5.1 for details.
2969 +.TP
2970 +.B olcSaslAuxprops: <plugin> [...]
2971 +Specify which auxprop plugins to use for authentication lookups. The
2972 +default is empty, which just uses slapd's internal support. Usually
2973 +no other auxprop plugins are needed.
2974 +.TP
2975 +.B olcSaslAuxpropsDontUseCopy: <attr> [...]
2976 +Specify which attribute(s) should be subject to the don't use copy control. This
2977 +is necessary for some SASL mechanisms such as OTP to work in a replicated
2978 +environment. The attribute "cmusaslsecretOTP" is the default value.
2979 +.TP
2980 +.B olcSaslAuxpropsDontUseCopyIgnore TRUE | FALSE
2981 +Used to disable replication of the attribute(s) defined by
2982 +olcSaslAuxpropsDontUseCopy and instead use a local value for the attribute. This
2983 +allows the SASL mechanism to continue to work if the provider is offline. This can
2984 +cause replication inconsistency. Defaults to FALSE.
2985 +.TP
2986 +.B olcSaslHost: <fqdn>
2987 +Used to specify the fully qualified domain name used for SASL processing.
2988 +.TP
2989 +.B olcSaslRealm: <realm>
2990 +Specify SASL realm. Default is empty.
2991 +.TP
2992 +.B olcSaslCbinding: none | tls-unique | tls-endpoint
2993 +Specify the channel-binding type, see also LDAP_OPT_X_SASL_CBINDING.
2994 +Default is none.
2995 +.TP
2996 +.B olcSaslSecProps: <properties>
2997 +Used to specify Cyrus SASL security properties.
2998 +The
2999 +.B none
3000 +flag (without any other properties) causes the flag properties
3001 +default, "noanonymous,noplain", to be cleared.
3002 +The
3003 +.B noplain
3004 +flag disables mechanisms susceptible to simple passive attacks.
3005 +The
3006 +.B noactive
3007 +flag disables mechanisms susceptible to active attacks.
3008 +The
3009 +.B nodict
3010 +flag disables mechanisms susceptible to passive dictionary attacks.
3011 +The
3012 +.B noanonymous
3013 +flag disables mechanisms which support anonymous login.
3014 +The
3015 +.B forwardsec
3016 +flag require forward secrecy between sessions.
3017 +The
3018 +.B passcred
3019 +require mechanisms which pass client credentials (and allow
3020 +mechanisms which can pass credentials to do so).
3021 +The
3022 +.B minssf=<factor>
3023 +property specifies the minimum acceptable
3024 +.I security strength factor
3025 +as an integer approximate to effective key length used for
3026 +encryption. 0 (zero) implies no protection, 1 implies integrity
3027 +protection only, 128 allows RC4, Blowfish and other similar ciphers,
3028 +256 will require modern ciphers. The default is 0.
3029 +The
3030 +.B maxssf=<factor>
3031 +property specifies the maximum acceptable
3032 +.I security strength factor
3033 +as an integer (see minssf description). The default is INT_MAX.
3034 +The
3035 +.B maxbufsize=<size>
3036 +property specifies the maximum security layer receive buffer
3037 +size allowed. 0 disables security layers. The default is 65536.
3038 +.TP
3039 +.B olcServerID: <integer> [<URL>]
3040 +Specify an integer ID from 0 to 4095 for this server. The ID may also be
3041 +specified as a hexadecimal ID by prefixing the value with "0x".
3042 +Non-zero IDs are required when using multi-provider replication and each
3043 +provider must have a unique non-zero ID. Note that this requirement also
3044 +applies to separate providers contributing to a glued set of databases.
3045 +If the URL is provided, this directive may be specified
3046 +multiple times, providing a complete list of participating servers
3047 +and their IDs. The fully qualified hostname of each server should be
3048 +used in the supplied URLs. The IDs are used in the "replica id" field
3049 +of all CSNs generated by the specified server. The default value is zero, which
3050 +is only valid for single provider replication.
3051 +Example:
3052 +.LP
3053 +.nf
3054 + olcServerID: 1 ldap://ldap1.example.com
3055 + olcServerID: 2 ldap://ldap2.example.com
3056 +.fi
3057 +.TP
3058 +.B olcSockbufMaxIncoming: <integer>
3059 +Specify the maximum incoming LDAP PDU size for anonymous sessions.
3060 +The default is 262143.
3061 +.TP
3062 +.B olcSockbufMaxIncomingAuth: <integer>
3063 +Specify the maximum incoming LDAP PDU size for authenticated sessions.
3064 +The default is 4194303.
3065 +.TP
3066 +.B olcTCPBuffer [listener=<URL>] [{read|write}=]<size>
3067 +Specify the size of the TCP buffer.
3068 +A global value for both read and write TCP buffers related to any listener
3069 +is defined, unless the listener is explicitly specified,
3070 +or either the read or write qualifiers are used.
3071 +See
3072 +.BR tcp (7)
3073 +for details.
3074 +Note that some OS-es implement automatic TCP buffer tuning.
3075 +.TP
3076 +.B olcThreads: <integer>
3077 +Specify the maximum size of the primary thread pool.
3078 +The default is 16; the minimum value is 2.
3079 +.TP
3080 +.B olcThreadQueues: <integer>
3081 +Specify the number of work queues to use for the primary thread pool.
3082 +The default is 1 and this is typically adequate for up to 8 CPU cores.
3083 +The value should not exceed the number of CPUs in the system.
3084 +.TP
3085 +.B olcToolThreads: <integer>
3086 +Specify the maximum number of threads to use in tool mode.
3087 +This should not be greater than the number of CPUs in the system.
3088 +The default is 1.
3089 +.TP
3090 +.B olcWriteTimeout: <integer>
3091 +Specify the number of seconds to wait before forcibly closing
3092 +a connection with an outstanding write. This allows recovery from
3093 +various network hang conditions. A setting of 0 disables this
3094 +feature. The default is 0.
3095 +.SH TLS OPTIONS
3096 +If
3097 +.B slapd
3098 +is built with support for Transport Layer Security, there are more options
3099 +you can specify.
3100 +.TP
3101 +.B olcTLSCipherSuite: <cipher-suite-spec>
3102 +Permits configuring what ciphers will be accepted and the preference order.
3103 +<cipher-suite-spec> should be a cipher specification for the TLS library
3104 +in use (OpenSSL or GnuTLS).
3105 +Example:
3106 +.RS
3107 +.RS
3108 +.TP
3109 +.I OpenSSL:
3110 +olcTLSCipherSuite: HIGH:MEDIUM:+SSLv2
3111 +.TP
3112 +.I GnuTLS:
3113 +olcTLSCiphersuite: SECURE256:!AES-128-CBC
3114 +.RE
3115 +
3116 +To check what ciphers a given spec selects in OpenSSL, use:
3117 +
3118 +.nf
3119 + openssl ciphers \-v <cipher-suite-spec>
3120 +.fi
3121 +
3122 +With GnuTLS the available specs can be found in the manual page of
3123 +.BR gnutls\-cli (1)
3124 +(see the description of the
3125 +option
3126 +.BR \-\-priority ).
3127 +
3128 +In older versions of GnuTLS, where gnutls\-cli does not support the option
3129 +\-\-priority, you can obtain the \(em more limited \(em list of ciphers by calling:
3130 +
3131 +.nf
3132 + gnutls\-cli \-l
3133 +.fi
3134 +.RE
3135 +.TP
3136 +.B olcTLSCACertificateFile: <filename>
3137 +Specifies the file that contains certificates for all of the Certificate
3138 +Authorities that
3139 +.B slapd
3140 +will recognize. The certificate for
3141 +the CA that signed the server certificate must be included among
3142 +these certificates. If the signing CA was not a top-level (root) CA,
3143 +certificates for the entire sequence of CA's from the signing CA to
3144 +the top-level CA should be present. Multiple certificates are simply
3145 +appended to the file; the order is not significant.
3146 +.TP
3147 +.B olcTLSCACertificatePath: <path>
3148 +Specifies the path of directories that contain Certificate Authority
3149 +certificates in separate individual files. Usually only one of this
3150 +or the olcTLSCACertificateFile is defined. If both are specified, both
3151 +locations will be used. Multiple directories may be specified,
3152 +separated by a semi-colon.
3153 +.TP
3154 +.B olcTLSCertificateFile: <filename>
3155 +Specifies the file that contains the
3156 +.B slapd
3157 +server certificate.
3158 +
3159 +When using OpenSSL that file may also contain any number of intermediate
3160 +certificates after the server certificate.
3161 +.TP
3162 +.B olcTLSCertificateKeyFile: <filename>
3163 +Specifies the file that contains the
3164 +.B slapd
3165 +server private key that matches the certificate stored in the
3166 +.B olcTLSCertificateFile
3167 +file. If the private key is protected with a password, the password must
3168 +be manually typed in when slapd starts. Usually the private key is not
3169 +protected with a password, to allow slapd to start without manual
3170 +intervention, so
3171 +it is of critical importance that the file is protected carefully.
3172 +.TP
3173 +.B olcTLSDHParamFile: <filename>
3174 +This directive specifies the file that contains parameters for Diffie-Hellman
3175 +ephemeral key exchange. This is required in order to use a DSA certificate on
3176 +the server, or an RSA certificate missing the "key encipherment" key usage.
3177 +Note that setting this option may also enable
3178 +Anonymous Diffie-Hellman key exchanges in certain non-default cipher suites.
3179 +Anonymous key exchanges should generally be avoided since they provide no
3180 +actual client or server authentication and provide no protection against
3181 +man-in-the-middle attacks.
3182 +You should append "!ADH" to your cipher suites to ensure that these suites
3183 +are not used.
3184 +.TP
3185 +.B olcTLSECName: <name>
3186 +Specify the name of the curve(s) to use for Elliptic curve Diffie-Hellman
3187 +ephemeral key exchange. This option is only used for OpenSSL.
3188 +This option is not used with GnuTLS; the curves may be
3189 +chosen in the GnuTLS ciphersuite specification.
3190 +.TP
3191 +.B olcTLSProtocolMin: <major>[.<minor>]
3192 +Specifies minimum SSL/TLS protocol version that will be negotiated.
3193 +If the server doesn't support at least that version,
3194 +the SSL handshake will fail.
3195 +To require TLS 1.x or higher, set this option to 3.(x+1),
3196 +e.g.,
3197 +
3198 +.nf
3199 + olcTLSProtocolMin: 3.2
3200 +.fi
3201 +
3202 +would require TLS 1.1.
3203 +Specifying a minimum that is higher than that supported by the
3204 +OpenLDAP implementation will result in it requiring the
3205 +highest level that it does support.
3206 +This directive is ignored with GnuTLS.
3207 +.TP
3208 +.B olcTLSRandFile: <filename>
3209 +Specifies the file to obtain random bits from when /dev/[u]random
3210 +is not available. Generally set to the name of the EGD/PRNGD socket.
3211 +The environment variable RANDFILE can also be used to specify the filename.
3212 +This directive is ignored with GnuTLS.
3213 +.TP
3214 +.B olcTLSVerifyClient: <level>
3215 +Specifies what checks to perform on client certificates in an
3216 +incoming TLS session, if any.
3217 +The
3218 +.B <level>
3219 +can be specified as one of the following keywords:
3220 +.RS
3221 +.TP
3222 +.B never
3223 +This is the default.
3224 +.B slapd
3225 +will not ask the client for a certificate.
3226 +.TP
3227 +.B allow
3228 +The client certificate is requested. If no certificate is provided,
3229 +the session proceeds normally. If a bad certificate is provided,
3230 +it will be ignored and the session proceeds normally.
3231 +.TP
3232 +.B try
3233 +The client certificate is requested. If no certificate is provided,
3234 +the session proceeds normally. If a bad certificate is provided,
3235 +the session is immediately terminated.
3236 +.TP
3237 +.B demand | hard | true
3238 +These keywords are all equivalent, for compatibility reasons.
3239 +The client certificate is requested. If no certificate is provided,
3240 +or a bad certificate is provided, the session is immediately terminated.
3241 +
3242 +Note that a valid client certificate is required in order to use the
3243 +SASL EXTERNAL authentication mechanism with a TLS session. As such,
3244 +a non-default
3245 +.B olcTLSVerifyClient
3246 +setting must be chosen to enable SASL EXTERNAL authentication.
3247 +.RE
3248 +.TP
3249 +.B olcTLSCRLCheck: <level>
3250 +Specifies if the Certificate Revocation List (CRL) of the CA should be
3251 +used to verify if the client certificates have not been revoked. This
3252 +requires
3253 +.B olcTLSCACertificatePath
3254 +parameter to be set. This parameter is ignored with GnuTLS.
3255 +.B <level>
3256 +can be specified as one of the following keywords:
3257 +.RS
3258 +.TP
3259 +.B none
3260 +No CRL checks are performed
3261 +.TP
3262 +.B peer
3263 +Check the CRL of the peer certificate
3264 +.TP
3265 +.B all
3266 +Check the CRL for a whole certificate chain
3267 +.RE
3268 +.TP
3269 +.B olcTLSCRLFile: <filename>
3270 +Specifies a file containing a Certificate Revocation List to be used
3271 +for verifying that certificates have not been revoked. This parameter is
3272 +only valid when using GnuTLS.
3273 +.SH DYNAMIC MODULE OPTIONS
3274 +If
3275 +.B slapd
3276 +is compiled with \-\-enable\-modules then the module-related entries will
3277 +be available. These entries are named
3278 +.B cn=module{x},cn=config
3279 +and
3280 +must have the olcModuleList objectClass. One entry should be created
3281 +per
3282 +.B olcModulePath.
3283 +Normally the config engine generates the "{x}" index in the RDN
3284 +automatically, so it can be omitted when initially loading these entries.
3285 +.TP
3286 +.B olcModuleLoad: <filename> [<arguments>...]
3287 +Specify the name of a dynamically loadable module to load and any
3288 +additional arguments if supported by the module. The filename
3289 +may be an absolute path name or a simple filename. Non-absolute names
3290 +are searched for in the directories specified by the
3291 +.B olcModulePath
3292 +option.
3293 +.TP
3294 +.B olcModulePath: <pathspec>
3295 +Specify a list of directories to search for loadable modules. Typically
3296 +the path is colon-separated but this depends on the operating system.
3297 +The default is MODULEDIR, which is where the standard OpenLDAP install
3298 +will place its modules.
3299 +.SH SCHEMA OPTIONS
3300 +Schema definitions are created as entries in the
3301 +.B cn=schema,cn=config
3302 +subtree. These entries must have the olcSchemaConfig objectClass.
3303 +As noted above, the actual
3304 +.B cn=schema,cn=config
3305 +entry is predefined and any values specified for it are ignored.
3306 +
3307 +.HP
3308 +.hy 0
3309 +.B olcAttributetypes: "(\ <oid>\
3310 + [NAME\ <name>]\
3311 + [DESC\ <description>]\
3312 + [OBSOLETE]\
3313 + [SUP\ <oid>]\
3314 + [EQUALITY\ <oid>]\
3315 + [ORDERING\ <oid>]\
3316 + [SUBSTR\ <oid>]\
3317 + [SYNTAX\ <oidlen>]\
3318 + [SINGLE\-VALUE]\
3319 + [COLLECTIVE]\
3320 + [NO\-USER\-MODIFICATION]\
3321 + [USAGE\ <attributeUsage>]\ )"
3322 +.RS
3323 +Specify an attribute type using the LDAPv3 syntax defined in RFC 4512.
3324 +The slapd parser extends the RFC 4512 definition by allowing string
3325 +forms as well as numeric OIDs to be used for the attribute OID and
3326 +attribute syntax OID.
3327 +(See the
3328 +.B olcObjectIdentifier
3329 +description.)
3330 +.RE
3331 +
3332 +.HP
3333 +.hy 0
3334 +.B olcDitContentRules: "(\ <oid>\
3335 + [NAME\ <name>]\
3336 + [DESC\ <description>]\
3337 + [OBSOLETE]\
3338 + [AUX\ <oids>]\
3339 + [MUST\ <oids>]\
3340 + [MAY\ <oids>]\
3341 + [NOT\ <oids>]\ )"
3342 +.RS
3343 +Specify an DIT Content Rule using the LDAPv3 syntax defined in RFC 4512.
3344 +The slapd parser extends the RFC 4512 definition by allowing string
3345 +forms as well as numeric OIDs to be used for the attribute OID and
3346 +attribute syntax OID.
3347 +(See the
3348 +.B olcObjectIdentifier
3349 +description.)
3350 +.RE
3351 +
3352 +.HP
3353 +.hy 0
3354 +.B olcLdapSyntaxes "(\ <oid>\
3355 + [DESC\ <description>]\
3356 + [X\-SUBST <substitute-syntax>]\ )"
3357 +.RS
3358 +Specify an LDAP syntax using the LDAPv3 syntax defined in RFC 4512.
3359 +The slapd parser extends the RFC 4512 definition by allowing string
3360 +forms as well as numeric OIDs to be used for the syntax OID.
3361 +(See the
3362 +.B objectidentifier
3363 +description.)
3364 +The slapd parser also honors the
3365 +.B X\-SUBST
3366 +extension (an OpenLDAP-specific extension), which allows one to use the
3367 +.B olcLdapSyntaxes
3368 +attribute to define a non-implemented syntax along with another syntax,
3369 +the extension value
3370 +.IR substitute-syntax ,
3371 +as its temporary replacement.
3372 +The
3373 +.I substitute-syntax
3374 +must be defined.
3375 +This allows one to define attribute types that make use of non-implemented syntaxes
3376 +using the correct syntax OID.
3377 +Unless
3378 +.B X\-SUBST
3379 +is used, this configuration statement would result in an error,
3380 +since no handlers would be associated to the resulting syntax structure.
3381 +.RE
3382 +
3383 +.HP
3384 +.hy 0
3385 +.B olcObjectClasses: "(\ <oid>\
3386 + [NAME\ <name>]\
3387 + [DESC\ <description>]\
3388 + [OBSOLETE]\
3389 + [SUP\ <oids>]\
3390 + [{ ABSTRACT | STRUCTURAL | AUXILIARY }]\
3391 + [MUST\ <oids>] [MAY\ <oids>] )"
3392 +.RS
3393 +Specify an objectclass using the LDAPv3 syntax defined in RFC 4512.
3394 +The slapd parser extends the RFC 4512 definition by allowing string
3395 +forms as well as numeric OIDs to be used for the object class OID.
3396 +(See the
3397 +.B
3398 +olcObjectIdentifier
3399 +description.) Object classes are "STRUCTURAL" by default.
3400 +.RE
3401 +.TP
3402 +.B olcObjectIdentifier: <name> "{ <oid> | <name>[:<suffix>] }"
3403 +Define a string name that equates to the given OID. The string can be used
3404 +in place of the numeric OID in objectclass and attribute definitions. The
3405 +name can also be used with a suffix of the form ":xx" in which case the
3406 +value "oid.xx" will be used.
3407 +
3408 +.SH GENERAL BACKEND OPTIONS
3409 +Options in these entries only apply to the configuration of a single
3410 +type of backend. All backends may support this class of options, but
3411 +currently only back-mdb does.
3412 +The entry must be named
3413 +.B olcBackend=<databasetype>,cn=config
3414 +and must have the olcBackendConfig objectClass.
3415 +<databasetype>
3416 +should be one of
3417 +.BR asyncmeta ,
3418 +.BR config ,
3419 +.BR dnssrv ,
3420 +.BR ldap ,
3421 +.BR ldif ,
3422 +.BR mdb ,
3423 +.BR meta ,
3424 +.BR monitor ,
3425 +.BR null ,
3426 +.BR passwd ,
3427 +.BR perl ,
3428 +.BR relay ,
3429 +.BR sock ,
3430 +.BR sql ,
3431 +or
3432 +.BR wt .
3433 +At present, only back-mdb implements any options of this type, so this
3434 +entry should not be used for any other backends.
3435 +
3436 +.SH DATABASE OPTIONS
3437 +Database options are set in entries named
3438 +.B olcDatabase={x}<databasetype>,cn=config
3439 +and must have the olcDatabaseConfig objectClass. Normally the config
3440 +engine generates the "{x}" index in the RDN automatically, so it
3441 +can be omitted when initially loading these entries.
3442 +
3443 +The special frontend database is always numbered "{\-1}" and the config
3444 +database is always numbered "{0}".
3445 +
3446 +.SH GLOBAL DATABASE OPTIONS
3447 +Options in this section may be set in the special "frontend" database
3448 +and inherited in all the other databases. These options may be altered
3449 +by further settings in each specific database. The frontend entry must
3450 +be named
3451 +.B olcDatabase=frontend,cn=config
3452 +and must have the olcFrontendConfig objectClass.
3453 +.TP
3454 +.B olcAccess: to <what> "[ by <who> <access> <control> ]+"
3455 +Grant access (specified by <access>) to a set of entries and/or
3456 +attributes (specified by <what>) by one or more requestors (specified
3457 +by <who>).
3458 +If no access controls are present, the default policy
3459 +allows anyone and everyone to read anything but restricts
3460 +updates to rootdn. (e.g., "olcAccess: to * by * read").
3461 +See
3462 +.BR slapd.access (5)
3463 +and the "OpenLDAP Administrator's Guide" for details.
3464 +
3465 +Access controls set in the frontend are appended to any access
3466 +controls set on the specific databases.
3467 +The rootdn of a database can always read and write EVERYTHING
3468 +in that database.
3469 +
3470 +Extra special care must be taken with the access controls on the
3471 +config database. Unlike other databases, the default policy for the
3472 +config database is to only allow access to the rootdn. Regular users
3473 +should not have read access, and write access should be granted very
3474 +carefully to privileged administrators.
3475 +
3476 +.TP
3477 +.B olcDefaultSearchBase: <dn>
3478 +Specify a default search base to use when client submits a
3479 +non-base search request with an empty base DN.
3480 +Base scoped search requests with an empty base DN are not affected.
3481 +This setting is only allowed in the frontend entry.
3482 +.TP
3483 +.B olcExtraAttrs: <attr>
3484 +Lists what attributes need to be added to search requests.
3485 +Local storage backends return the entire entry to the frontend.
3486 +The frontend takes care of only returning the requested attributes
3487 +that are allowed by ACLs.
3488 +However, features like access checking and so may need specific
3489 +attributes that are not automatically returned by remote storage
3490 +backends, like proxy backends and so on.
3491 +.B <attr>
3492 +is an attribute that is needed for internal purposes
3493 +and thus always needs to be collected, even when not explicitly
3494 +requested by clients.
3495 +This attribute is multi-valued.
3496 +.TP
3497 +.B olcPasswordHash: <hash> [<hash>...]
3498 +This option configures one or more hashes to be used in generation of user
3499 +passwords stored in the userPassword attribute during processing of
3500 +LDAP Password Modify Extended Operations (RFC 3062).
3501 +The <hash> must be one of
3502 +.BR {SSHA} ,
3503 +.BR {SHA} ,
3504 +.BR {SMD5} ,
3505 +.BR {MD5} ,
3506 +.BR {CRYPT} ,
3507 +and
3508 +.BR {CLEARTEXT} .
3509 +The default is
3510 +.BR {SSHA} .
3511 +
3512 +.B {SHA}
3513 +and
3514 +.B {SSHA}
3515 +use the SHA-1 algorithm (FIPS 160-1), the latter with a seed.
3516 +
3517 +.B {MD5}
3518 +and
3519 +.B {SMD5}
3520 +use the MD5 algorithm (RFC 1321), the latter with a seed.
3521 +
3522 +.B {CRYPT}
3523 +uses the
3524 +.BR crypt (3).
3525 +
3526 +.B {CLEARTEXT}
3527 +indicates that the new password should be
3528 +added to userPassword as clear text.
3529 +
3530 +Note that this option does not alter the normal user applications
3531 +handling of userPassword during LDAP Add, Modify, or other LDAP operations.
3532 +This setting is only allowed in the frontend entry.
3533 +.TP
3534 +.B olcReadOnly: TRUE | FALSE
3535 +This option puts the database into "read-only" mode. Any attempts to
3536 +modify the database will return an "unwilling to perform" error. By
3537 +default, olcReadOnly is FALSE. Note that when this option is set
3538 +TRUE on the frontend, it cannot be reset without restarting the
3539 +server, since further writes to the config database will be rejected.
3540 +.TP
3541 +.B olcRequires: <conditions>
3542 +Specify a set of conditions to require (default none).
3543 +The directive may be specified globally and/or per-database;
3544 +databases inherit global conditions, so per-database specifications
3545 +are additive.
3546 +.B bind
3547 +requires bind operation prior to directory operations.
3548 +.B LDAPv3
3549 +requires session to be using LDAP version 3.
3550 +.B authc
3551 +requires authentication prior to directory operations.
3552 +.B SASL
3553 +requires SASL authentication prior to directory operations.
3554 +.B strong
3555 +requires strong authentication prior to directory operations.
3556 +The strong keyword allows protected "simple" authentication
3557 +as well as SASL authentication.
3558 +.B none
3559 +may be used to require no conditions (useful to clear out globally
3560 +set conditions within a particular database); it must occur first
3561 +in the list of conditions.
3562 +.TP
3563 +.B olcRestrict: <oplist>
3564 +Specify a list of operations that are restricted.
3565 +Restrictions on a specific database override any frontend setting.
3566 +Operations can be any of
3567 +.BR add ,
3568 +.BR bind ,
3569 +.BR compare ,
3570 +.BR delete ,
3571 +.BR extended[=<OID>] ,
3572 +.BR modify ,
3573 +.BR rename ,
3574 +.BR search ,
3575 +or the special pseudo-operations
3576 +.B read
3577 +and
3578 +.BR write ,
3579 +which respectively summarize read and write operations.
3580 +The use of
3581 +.I restrict write
3582 +is equivalent to
3583 +.I olcReadOnly: TRUE
3584 +(see above).
3585 +The
3586 +.B extended
3587 +keyword allows one to indicate the OID of the specific operation
3588 +to be restricted.
3589 +.TP
3590 +.B olcSchemaDN: <dn>
3591 +Specify the distinguished name for the subschema subentry that
3592 +controls the entries on this server. The default is "cn=Subschema".
3593 +.TP
3594 +.B olcSecurity: <factors>
3595 +Specify a set of security strength factors (separated by white space)
3596 +to require (see
3597 +.BR olcSaslSecprops 's
3598 +.B minssf
3599 +option for a description of security strength factors).
3600 +The directive may be specified globally and/or per-database.
3601 +.B ssf=<n>
3602 +specifies the overall security strength factor.
3603 +.B transport=<n>
3604 +specifies the transport security strength factor.
3605 +.B tls=<n>
3606 +specifies the TLS security strength factor.
3607 +.B sasl=<n>
3608 +specifies the SASL security strength factor.
3609 +.B update_ssf=<n>
3610 +specifies the overall security strength factor to require for
3611 +directory updates.
3612 +.B update_transport=<n>
3613 +specifies the transport security strength factor to require for
3614 +directory updates.
3615 +.B update_tls=<n>
3616 +specifies the TLS security strength factor to require for
3617 +directory updates.
3618 +.B update_sasl=<n>
3619 +specifies the SASL security strength factor to require for
3620 +directory updates.
3621 +.B simple_bind=<n>
3622 +specifies the security strength factor required for
3623 +.I simple
3624 +username/password authentication.
3625 +Note that the
3626 +.B transport
3627 +factor is measure of security provided by the underlying transport,
3628 +e.g. ldapi:// (and eventually IPSEC). It is not normally used.
3629 +.TP
3630 +.B olcSizeLimit: {<integer>|unlimited}
3631 +.TP
3632 +.B olcSizeLimit: size[.{soft|hard}]=<integer> [...]
3633 +Specify the maximum number of entries to return from a search operation.
3634 +The default size limit is 500.
3635 +Use
3636 +.B unlimited
3637 +to specify no limits.
3638 +The second format allows a fine grain setting of the size limits.
3639 +If no special qualifiers are specified, both soft and hard limits are set.
3640 +Extra args can be added in the same value.
3641 +Additional qualifiers are available; see
3642 +.BR olcLimits
3643 +for an explanation of all of the different flags.
3644 +.TP
3645 +.B olcSortVals: <attr> [...]
3646 +Specify a list of multi-valued attributes whose values will always
3647 +be maintained in sorted order. Using this option will allow Modify,
3648 +Compare, and filter evaluations on these attributes to be performed
3649 +more efficiently. The resulting sort order depends on the
3650 +attributes' syntax and matching rules and may not correspond to
3651 +lexical order or any other recognizable order.
3652 +This setting is only allowed in the frontend entry.
3653 +.TP
3654 +.B olcTimeLimit: {<integer>|unlimited}
3655 +.TP
3656 +.B olcTimeLimit: time[.{soft|hard}]=<integer> [...]
3657 +Specify the maximum number of seconds (in real time)
3658 +.B slapd
3659 +will spend answering a search request. The default time limit is 3600.
3660 +Use
3661 +.B unlimited
3662 +to specify no limits.
3663 +The second format allows a fine grain setting of the time limits.
3664 +Extra args can be added in the same value. See
3665 +.BR olcLimits
3666 +for an explanation of the different flags.
3667 +
3668 +.SH GENERAL DATABASE OPTIONS
3669 +Options in this section only apply to the specific database for
3670 +which they are defined. They are supported by every
3671 +type of backend. All of the Global Database Options may also be
3672 +used here.
3673 +.TP
3674 +.B olcAddContentAcl: TRUE | FALSE
3675 +Controls whether Add operations will perform ACL checks on
3676 +the content of the entry being added. This check is off
3677 +by default. See the
3678 +.BR slapd.access (5)
3679 +manual page for more details on ACL requirements for
3680 +Add operations.
3681 +.TP
3682 +.B olcHidden: TRUE | FALSE
3683 +Controls whether the database will be used to answer
3684 +queries. A database that is hidden will never be
3685 +selected to answer any queries, and any suffix configured
3686 +on the database will be ignored in checks for conflicts
3687 +with other databases. By default, olcHidden is FALSE.
3688 +.TP
3689 +.B olcLastMod: TRUE | FALSE
3690 +Controls whether
3691 +.B slapd
3692 +will automatically maintain the
3693 +modifiersName, modifyTimestamp, creatorsName, and
3694 +createTimestamp attributes for entries. It also controls
3695 +the entryCSN and entryUUID attributes, which are needed
3696 +by the syncrepl provider. By default, olcLastMod is TRUE.
3697 +.TP
3698 +.B olcLastBind: TRUE | FALSE
3699 +Controls whether
3700 +.B slapd
3701 +will automatically maintain the pwdLastSuccess attribute for
3702 +entries. By default, olcLastBind is FALSE.
3703 +.TP
3704 +.B olcLastBindPrecision: <integer>
3705 +If olcLastBind is enabled, specifies how frequently pwdLastSuccess
3706 +will be updated. More than
3707 +.B integer
3708 +seconds must have passed since the last successful bind. In a
3709 +replicated environment with frequent bind activity it may be
3710 +useful to set this to a large value.
3711 +.TP
3712 +.B olcLimits: <selector> <limit> [<limit> [...]]
3713 +Specify time and size limits based on the operation's initiator or
3714 +base DN.
3715 +The argument
3716 +.B <selector>
3717 +can be any of
3718 +.RS
3719 +.RS
3720 +.TP
3721 +anonymous | users | [<dnspec>=]<pattern> | group[/oc[/at]]=<pattern>
3722 +
3723 +.RE
3724 +with
3725 +.RS
3726 +.TP
3727 +<dnspec> ::= dn[.<type>][.<style>]
3728 +.TP
3729 +<type> ::= self | this
3730 +.TP
3731 +<style> ::= exact | base | onelevel | subtree | children | regex | anonymous
3732 +
3733 +.RE
3734 +DN type
3735 +.B self
3736 +is the default and means the bound user, while
3737 +.B this
3738 +means the base DN of the operation.
3739 +The term
3740 +.B anonymous
3741 +matches all unauthenticated clients.
3742 +The term
3743 +.B users
3744 +matches all authenticated clients;
3745 +otherwise an
3746 +.B exact
3747 +dn pattern is assumed unless otherwise specified by qualifying
3748 +the (optional) key string
3749 +.B dn
3750 +with
3751 +.B exact
3752 +or
3753 +.B base
3754 +(which are synonyms), to require an exact match; with
3755 +.BR onelevel ,
3756 +to require exactly one level of depth match; with
3757 +.BR subtree ,
3758 +to allow any level of depth match, including the exact match; with
3759 +.BR children ,
3760 +to allow any level of depth match, not including the exact match;
3761 +.BR regex
3762 +explicitly requires the (default) match based on POSIX (''extended'')
3763 +regular expression pattern.
3764 +Finally,
3765 +.B anonymous
3766 +matches unbound operations; the
3767 +.B pattern
3768 +field is ignored.
3769 +The same behavior is obtained by using the
3770 +.B anonymous
3771 +form of the
3772 +.B <selector>
3773 +clause.
3774 +The term
3775 +.BR group ,
3776 +with the optional objectClass
3777 +.B oc
3778 +and attributeType
3779 +.B at
3780 +fields, followed by
3781 +.BR pattern ,
3782 +sets the limits for any DN listed in the values of the
3783 +.B at
3784 +attribute (default
3785 +.BR member )
3786 +of the
3787 +.B oc
3788 +group objectClass (default
3789 +.BR groupOfNames )
3790 +whose DN exactly matches
3791 +.BR pattern .
3792 +
3793 +The currently supported limits are
3794 +.B size
3795 +and
3796 +.BR time .
3797 +
3798 +The syntax for time limits is
3799 +.BR time[.{soft|hard}]=<integer> ,
3800 +where
3801 +.I integer
3802 +is the number of seconds slapd will spend answering a search request.
3803 +If no time limit is explicitly requested by the client, the
3804 +.BR soft
3805 +limit is used; if the requested time limit exceeds the
3806 +.BR hard
3807 +.\"limit, an
3808 +.\".I "Administrative limit exceeded"
3809 +.\"error is returned.
3810 +limit, the value of the limit is used instead.
3811 +If the
3812 +.BR hard
3813 +limit is set to the keyword
3814 +.IR soft ,
3815 +the soft limit is used in either case; if it is set to the keyword
3816 +.IR unlimited ,
3817 +no hard limit is enforced.
3818 +Explicit requests for time limits smaller or equal to the
3819 +.BR hard
3820 +limit are honored.
3821 +If no limit specifier is set, the value is assigned to the
3822 +.BR soft
3823 +limit, and the
3824 +.BR hard
3825 +limit is set to
3826 +.IR soft ,
3827 +to preserve the original behavior.
3828 +
3829 +The syntax for size limits is
3830 +.BR size[.{soft|hard|unchecked}]=<integer> ,
3831 +where
3832 +.I integer
3833 +is the maximum number of entries slapd will return answering a search
3834 +request.
3835 +If no size limit is explicitly requested by the client, the
3836 +.BR soft
3837 +limit is used; if the requested size limit exceeds the
3838 +.BR hard
3839 +.\"limit, an
3840 +.\".I "Administrative limit exceeded"
3841 +.\"error is returned.
3842 +limit, the value of the limit is used instead.
3843 +If the
3844 +.BR hard
3845 +limit is set to the keyword
3846 +.IR soft ,
3847 +the soft limit is used in either case; if it is set to the keyword
3848 +.IR unlimited ,
3849 +no hard limit is enforced.
3850 +Explicit requests for size limits smaller or equal to the
3851 +.BR hard
3852 +limit are honored.
3853 +The
3854 +.BR unchecked
3855 +specifier sets a limit on the number of candidates a search request is allowed
3856 +to examine.
3857 +The rationale behind it is that searches for non-properly indexed
3858 +attributes may result in large sets of candidates, which must be
3859 +examined by
3860 +.BR slapd (8)
3861 +to determine whether they match the search filter or not.
3862 +The
3863 +.B unchecked
3864 +limit provides a means to drop such operations before they are even
3865 +started.
3866 +If the selected candidates exceed the
3867 +.BR unchecked
3868 +limit, the search will abort with
3869 +.IR "Unwilling to perform" .
3870 +If it is set to the keyword
3871 +.IR unlimited ,
3872 +no limit is applied (the default).
3873 +If it is set to
3874 +.IR disabled ,
3875 +the search is not even performed; this can be used to disallow searches
3876 +for a specific set of users.
3877 +If no limit specifier is set, the value is assigned to the
3878 +.BR soft
3879 +limit, and the
3880 +.BR hard
3881 +limit is set to
3882 +.IR soft ,
3883 +to preserve the original behavior.
3884 +
3885 +In case of no match, the global limits are used.
3886 +The default values are the same as for
3887 +.B olcSizeLimit
3888 +and
3889 +.BR olcTimeLimit ;
3890 +no limit is set on
3891 +.BR unchecked .
3892 +
3893 +If
3894 +.B pagedResults
3895 +control is requested, the
3896 +.B hard
3897 +size limit is used by default, because the request of a specific page size
3898 +is considered an explicit request for a limitation on the number
3899 +of entries to be returned.
3900 +However, the size limit applies to the total count of entries returned within
3901 +the search, and not to a single page.
3902 +Additional size limits may be enforced; the syntax is
3903 +.BR size.pr={<integer>|noEstimate|unlimited} ,
3904 +where
3905 +.I integer
3906 +is the max page size if no explicit limit is set; the keyword
3907 +.I noEstimate
3908 +inhibits the server from returning an estimate of the total number
3909 +of entries that might be returned
3910 +(note: the current implementation does not return any estimate).
3911 +The keyword
3912 +.I unlimited
3913 +indicates that no limit is applied to the pagedResults control page size.
3914 +The syntax
3915 +.B size.prtotal={<integer>|hard|unlimited|disabled}
3916 +allows one to set a limit on the total number of entries that the pagedResults
3917 +control will return.
3918 +By default it is set to the
3919 +.B hard
3920 +limit which will use the size.hard value.
3921 +When set,
3922 +.I integer
3923 +is the max number of entries that the whole search with pagedResults control
3924 +can return.
3925 +Use
3926 +.I unlimited
3927 +to allow unlimited number of entries to be returned, e.g. to allow
3928 +the use of the pagedResults control as a means to circumvent size
3929 +limitations on regular searches; the keyword
3930 +.I disabled
3931 +disables the control, i.e. no paged results can be returned.
3932 +Note that the total number of entries returned when the pagedResults control
3933 +is requested cannot exceed the
3934 +.B hard
3935 +size limit of regular searches unless extended by the
3936 +.B prtotal
3937 +switch.
3938 +
3939 +The \fBolcLimits\fP statement is typically used to let an unlimited
3940 +number of entries be returned by searches performed
3941 +with the identity used by the consumer for synchronization purposes
3942 +by means of the RFC 4533 LDAP Content Synchronization protocol
3943 +(see \fBolcSyncrepl\fP for details).
3944 +
3945 +When using subordinate databases, it is necessary for any limits that
3946 +are to be applied across the parent and its subordinates to be defined in
3947 +both the parent and its subordinates. Otherwise the settings on the
3948 +subordinate databases are not honored.
3949 +.RE
3950 +.TP
3951 +.B olcMaxDerefDepth: <depth>
3952 +Specifies the maximum number of aliases to dereference when trying to
3953 +resolve an entry, used to avoid infinite alias loops. The default is 15.
3954 +.TP
3955 +.B olcMultiProvider: TRUE | FALSE
3956 +This option puts a consumer database into Multi-Provider mode. Update
3957 +operations will be accepted from any user, not just the updatedn. The
3958 +database must already be configured as a syncrepl consumer
3959 +before this keyword may be set. This mode also requires a
3960 +.B olcServerID
3961 +(see above) to be configured.
3962 +By default, this setting is FALSE.
3963 +.TP
3964 +.B olcMonitoring: TRUE | FALSE
3965 +This option enables database-specific monitoring in the entry related
3966 +to the current database in the "cn=Databases,cn=Monitor" subtree
3967 +of the monitor database, if the monitor database is enabled.
3968 +Currently, only the MDB database provides database-specific monitoring.
3969 +If monitoring is supported by the backend it defaults to TRUE, otherwise
3970 +FALSE.
3971 +.TP
3972 +.B olcPlugin: <plugin_type> <lib_path> <init_function> [<arguments>]
3973 +Configure a SLAPI plugin. See the
3974 +.BR slapd.plugin (5)
3975 +manpage for more details.
3976 +.TP
3977 +.B olcRootDN: <dn>
3978 +Specify the distinguished name that is not subject to access control
3979 +or administrative limit restrictions for operations on this database.
3980 +This DN may or may not be associated with an entry. An empty root
3981 +DN (the default) specifies no root access is to be granted. It is
3982 +recommended that the rootdn only be specified when needed (such as
3983 +when initially populating a database). If the rootdn is within
3984 +a namingContext (suffix) of the database, a simple bind password
3985 +may also be provided using the
3986 +.B olcRootPW
3987 +directive. Many optional features, including syncrepl, require the
3988 +rootdn to be defined for the database.
3989 +The
3990 +.B olcRootDN
3991 +of the
3992 +.B cn=config
3993 +database defaults to
3994 +.B cn=config
3995 +itself.
3996 +.TP
3997 +.B olcRootPW: <password>
3998 +Specify a password (or hash of the password) for the rootdn. The
3999 +password can only be set if the rootdn is within the namingContext
4000 +(suffix) of the database.
4001 +This option accepts all RFC 2307 userPassword formats known to
4002 +the server (see
4003 +.B olcPasswordHash
4004 +description) as well as cleartext.
4005 +.BR slappasswd (8)
4006 +may be used to generate a hash of a password. Cleartext
4007 +and \fB{CRYPT}\fP passwords are not recommended. If empty
4008 +(the default), authentication of the root DN is by other means
4009 +(e.g. SASL). Use of SASL is encouraged.
4010 +.TP
4011 +.B olcSubordinate: [TRUE | FALSE | advertise]
4012 +Specify that the current backend database is a subordinate of another
4013 +backend database. A subordinate database may have only one suffix. This
4014 +option may be used to glue multiple databases into a single namingContext.
4015 +If the suffix of the current database is within the namingContext of a
4016 +superior database, searches against the superior database will be
4017 +propagated to the subordinate as well. All of the databases
4018 +associated with a single namingContext should have identical rootdns.
4019 +Behavior of other LDAP operations is unaffected by this setting. In
4020 +particular, it is not possible to use moddn to move an entry from
4021 +one subordinate to another subordinate within the namingContext.
4022 +
4023 +If the optional \fBadvertise\fP flag is supplied, the naming context of
4024 +this database is advertised in the root DSE. The default is to hide this
4025 +database context, so that only the superior context is visible.
4026 +
4027 +If the slap tools
4028 +.BR slapcat (8),
4029 +.BR slapadd (8),
4030 +.BR slapmodify (8),
4031 +or
4032 +.BR slapindex (8)
4033 +are used on the superior database, any glued subordinates that support
4034 +these tools are opened as well.
4035 +
4036 +Databases that are glued together should usually be configured with the
4037 +same indices (assuming they support indexing), even for attributes that
4038 +only exist in some of these databases. In general, all of the glued
4039 +databases should be configured as similarly as possible, since the intent
4040 +is to provide the appearance of a single directory.
4041 +
4042 +Note that the subordinate functionality is implemented internally
4043 +by the \fIglue\fP overlay and as such its behavior will interact with other
4044 +overlays in use. By default, the glue overlay is automatically configured as
4045 +the last overlay on the superior database. Its position on the database
4046 +can be explicitly configured by setting an \fBoverlay glue\fP directive
4047 +at the desired position. This explicit configuration is necessary e.g.
4048 +when using the \fIsyncprov\fP overlay, which needs to follow \fIglue\fP
4049 +in order to work over all of the glued databases. E.g.
4050 +.RS
4051 +.nf
4052 + dn: olcDatabase={1}mdb,cn=config
4053 + olcSuffix: dc=example,dc=com
4054 + ...
4055 +
4056 + dn: olcOverlay={0}glue,olcDatabase={1}mdb,cn=config
4057 + ...
4058 +
4059 + dn: olcOverlay={1}syncprov,olcDatabase={1}mdb,cn=config
4060 + ...
4061 +.fi
4062 +.RE
4063 +See the Overlays section below for more details.
4064 +.TP
4065 +.B olcSuffix: <dn suffix>
4066 +Specify the DN suffix of queries that will be passed to this
4067 +backend database. Multiple suffix lines can be given and at least one is
4068 +required for each database definition.
4069 +
4070 +If the suffix of one database is "inside" that of another, the database
4071 +with the inner suffix must come first in the configuration file.
4072 +You may also want to glue such databases together with the
4073 +.B olcSubordinate
4074 +attribute.
4075 +.TP
4076 +.B olcSyncUseSubentry: TRUE | FALSE
4077 +Store the syncrepl contextCSN in a subentry instead of the context entry
4078 +of the database. The subentry's RDN will be "cn=ldapsync". The default is
4079 +FALSE, meaning the contextCSN is stored in the context entry.
4080 +.HP
4081 +.hy 0
4082 +.B olcSyncrepl: rid=<replica ID>
4083 +.B provider=ldap[s]://<hostname>[:port]
4084 +.B searchbase=<base DN>
4085 +.B [type=refreshOnly|refreshAndPersist]
4086 +.B [interval=dd:hh:mm:ss]
4087 +.B [retry=[<retry interval> <# of retries>]+]
4088 +.B [filter=<filter str>]
4089 +.B [scope=sub|one|base|subord]
4090 +.B [attrs=<attr list>]
4091 +.B [exattrs=<attr list>]
4092 +.B [attrsonly]
4093 +.B [sizelimit=<limit>]
4094 +.B [timelimit=<limit>]
4095 +.B [schemachecking=on|off]
4096 +.B [network\-timeout=<seconds>]
4097 +.B [timeout=<seconds>]
4098 +.B [tcp\-user\-timeout=<milliseconds>]
4099 +.B [bindmethod=simple|sasl]
4100 +.B [binddn=<dn>]
4101 +.B [saslmech=<mech>]
4102 +.B [authcid=<identity>]
4103 +.B [authzid=<identity>]
4104 +.B [credentials=<passwd>]
4105 +.B [realm=<realm>]
4106 +.B [secprops=<properties>]
4107 +.B [keepalive=<idle>:<probes>:<interval>]
4108 +.B [starttls=yes|critical]
4109 +.B [tls_cert=<file>]
4110 +.B [tls_key=<file>]
4111 +.B [tls_cacert=<file>]
4112 +.B [tls_cacertdir=<path>]
4113 +.B [tls_reqcert=never|allow|try|demand]
4114 +.B [tls_reqsan=never|allow|try|demand]
4115 +.B [tls_cipher_suite=<ciphers>]
4116 +.B [tls_ecname=<names>]
4117 +.B [tls_crlcheck=none|peer|all]
4118 +.B [tls_protocol_min=<major>[.<minor>]]
4119 +.B [suffixmassage=<real DN>]
4120 +.B [logbase=<base DN>]
4121 +.B [logfilter=<filter str>]
4122 +.B [syncdata=default|accesslog|changelog]
4123 +.B [lazycommit]
4124 +.RS
4125 +Specify the current database as a consumer which is kept up-to-date with the
4126 +provider content by establishing the current
4127 +.BR slapd (8)
4128 +as a replication consumer site running a
4129 +.B syncrepl
4130 +replication engine.
4131 +The consumer content is kept synchronized to the provider content using
4132 +the LDAP Content Synchronization protocol. Refer to the
4133 +"OpenLDAP Administrator's Guide" for detailed information on
4134 +setting up a replicated
4135 +.B slapd
4136 +directory service using the
4137 +.B syncrepl
4138 +replication engine.
4139 +
4140 +.B rid
4141 +identifies the current
4142 +.B syncrepl
4143 +directive within the replication consumer site.
4144 +It is a non-negative integer not greater than 999 (limited
4145 +to three decimal digits).
4146 +
4147 +.B provider
4148 +specifies the replication provider site containing the provider content
4149 +as an LDAP URI. If <port> is not given, the standard LDAP port number
4150 +(389 or 636) is used.
4151 +
4152 +The content of the
4153 +.B syncrepl
4154 +consumer is defined using a search
4155 +specification as its result set. The consumer
4156 +.B slapd
4157 +will send search requests to the provider
4158 +.B slapd
4159 +according to the search specification. The search specification includes
4160 +.BR searchbase ", " scope ", " filter ", " attrs ", " attrsonly ", " sizelimit ", "
4161 +and
4162 +.B timelimit
4163 +parameters as in the normal search specification. The
4164 +.B exattrs
4165 +option may also be used to specify attributes that should be omitted
4166 +from incoming entries.
4167 +The \fBscope\fP defaults to \fBsub\fP, the \fBfilter\fP defaults to
4168 +\fB(objectclass=*)\fP, and there is no default \fBsearchbase\fP. The
4169 +\fBattrs\fP list defaults to \fB"*,+"\fP to return all user and operational
4170 +attributes, and \fBattrsonly\fP and \fBexattrs\fP are unset by default.
4171 +The \fBsizelimit\fP and \fBtimelimit\fP only
4172 +accept "unlimited" and positive integers, and both default to "unlimited".
4173 +The \fBsizelimit\fP and \fBtimelimit\fP parameters define
4174 +a consumer requested limitation on the number of entries that can be returned
4175 +by the LDAP Content Synchronization operation; these should be left unchanged
4176 +from the default otherwise replication may never succeed.
4177 +Note, however, that any provider-side limits for the replication identity
4178 +will be enforced by the provider regardless of the limits requested
4179 +by the LDAP Content Synchronization operation, much like for any other
4180 +search operation.
4181 +
4182 +The LDAP Content Synchronization protocol has two operation types.
4183 +In the
4184 +.B refreshOnly
4185 +operation, the next synchronization search operation
4186 +is periodically rescheduled at an interval time (specified by
4187 +.B interval
4188 +parameter; 1 day by default)
4189 +after each synchronization operation finishes.
4190 +In the
4191 +.B refreshAndPersist
4192 +operation, a synchronization search remains persistent in the provider slapd.
4193 +Further updates to the provider will generate
4194 +.B searchResultEntry
4195 +to the consumer slapd as the search responses to the persistent
4196 +synchronization search. If the initial search fails due to an error, the
4197 +next synchronization search operation is periodically rescheduled at an
4198 +interval time (specified by
4199 +.B interval
4200 +parameter; 1 day by default)
4201 +
4202 +If an error occurs during replication, the consumer will attempt to
4203 +reconnect according to the
4204 +.B retry
4205 +parameter which is a list of the <retry interval> and <# of retries> pairs.
4206 +For example, retry="60 10 300 3" lets the consumer retry every 60 seconds
4207 +for the first 10 times and then retry every 300 seconds for the next 3
4208 +times before stop retrying. The `+' in <# of retries> means indefinite
4209 +number of retries until success.
4210 +If no
4211 +.B retry
4212 +is specified, by default syncrepl retries every hour forever.
4213 +
4214 +The schema checking can be enforced at the LDAP Sync
4215 +consumer site by turning on the
4216 +.B schemachecking
4217 +parameter. The default is \fBoff\fP.
4218 +Schema checking \fBon\fP means that replicated entries must have
4219 +a structural objectClass, must obey to objectClass requirements
4220 +in terms of required/allowed attributes, and that naming attributes
4221 +and distinguished values must be present.
4222 +As a consequence, schema checking should be \fBoff\fP when partial
4223 +replication is used.
4224 +
4225 +The
4226 +.B network\-timeout
4227 +parameter sets how long the consumer will wait to establish a
4228 +network connection to the provider. Once a connection is
4229 +established, the
4230 +.B timeout
4231 +parameter determines how long the consumer will wait for the initial
4232 +Bind request to complete. The defaults for these parameters come
4233 +from
4234 +.BR ldap.conf (5).
4235 +The
4236 +.B tcp\-user\-timeout
4237 +parameter, if non-zero, corresponds to the
4238 +.B TCP_USER_TIMEOUT
4239 +set on the target connections, overriding the operating system setting.
4240 +Only some systems support the customization of this parameter, it is
4241 +ignored otherwise and system-wide settings are used.
4242 +
4243 +A
4244 +.B bindmethod
4245 +of
4246 +.B simple
4247 +requires the options
4248 +.B binddn
4249 +and
4250 +.B credentials
4251 +and should only be used when adequate security services
4252 +(e.g. TLS or IPSEC) are in place.
4253 +.B REMEMBER: simple bind credentials must be in cleartext!
4254 +A
4255 +.B bindmethod
4256 +of
4257 +.B sasl
4258 +requires the option
4259 +.B saslmech.
4260 +Depending on the mechanism, an authentication identity and/or
4261 +credentials can be specified using
4262 +.B authcid
4263 +and
4264 +.B credentials.
4265 +The
4266 +.B authzid
4267 +parameter may be used to specify an authorization identity.
4268 +Specific security properties (as with the
4269 +.B sasl\-secprops
4270 +keyword above) for a SASL bind can be set with the
4271 +.B secprops
4272 +option. A non default SASL realm can be set with the
4273 +.B realm
4274 +option.
4275 +The identity used for synchronization by the consumer should be allowed
4276 +to receive an unlimited number of entries in response to a search request.
4277 +The provider, other than allowing authentication of the syncrepl identity,
4278 +should grant that identity appropriate access privileges to the data
4279 +that is being replicated (\fBaccess\fP directive), and appropriate time
4280 +and size limits.
4281 +This can be accomplished by either allowing unlimited \fBsizelimit\fP
4282 +and \fBtimelimit\fP, or by setting an appropriate \fBlimits\fP statement
4283 +in the consumer's configuration (see \fBsizelimit\fP and \fBlimits\fP
4284 +for details).
4285 +
4286 +The
4287 +.B keepalive
4288 +parameter sets the values of \fIidle\fP, \fIprobes\fP, and \fIinterval\fP
4289 +used to check whether a socket is alive;
4290 +.I idle
4291 +is the number of seconds a connection needs to remain idle before TCP
4292 +starts sending keepalive probes;
4293 +.I probes
4294 +is the maximum number of keepalive probes TCP should send before dropping
4295 +the connection;
4296 +.I interval
4297 +is interval in seconds between individual keepalive probes.
4298 +Only some systems support the customization of these values;
4299 +the
4300 +.B keepalive
4301 +parameter is ignored otherwise, and system-wide settings are used.
4302 +
4303 +The
4304 +.B starttls
4305 +parameter specifies use of the StartTLS extended operation
4306 +to establish a TLS session before Binding to the provider. If the
4307 +.B critical
4308 +argument is supplied, the session will be aborted if the StartTLS request
4309 +fails. Otherwise the syncrepl session continues without TLS. The
4310 +.B tls_reqcert
4311 +setting defaults to "demand", the
4312 +.B tls_reqsan
4313 +setting defaults to "allow", and the other TLS settings
4314 +default to the same as the main slapd TLS settings.
4315 +
4316 +The
4317 +.B suffixmassage
4318 +parameter allows the consumer to pull entries from a remote directory
4319 +whose DN suffix differs from the local directory. The portion of the
4320 +remote entries' DNs that matches the \fIsearchbase\fP will be replaced
4321 +with the suffixmassage DN.
4322 +
4323 +Rather than replicating whole entries, the consumer can query logs of
4324 +data modifications. This mode of operation is referred to as \fIdelta
4325 +syncrepl\fP. In addition to the above parameters, the
4326 +.B logbase
4327 +and
4328 +.B logfilter
4329 +parameters must be set appropriately for the log that will be used. The
4330 +.B syncdata
4331 +parameter must be set to either "accesslog" if the log conforms to the
4332 +.BR slapo\-accesslog (5)
4333 +log format, or "changelog" if the log conforms
4334 +to the obsolete \fIchangelog\fP format. If the
4335 +.B syncdata
4336 +parameter is omitted or set to "default" then the log parameters are
4337 +ignored.
4338 +
4339 +The
4340 +.B lazycommit
4341 +parameter tells the underlying database that it can store changes without
4342 +performing a full flush after each change. This may improve performance
4343 +for the consumer, while sacrificing safety or durability.
4344 +.RE
4345 +.TP
4346 +.B olcUpdateDN: <dn>
4347 +This option is only applicable in a replica
4348 +database.
4349 +It specifies the DN permitted to update (subject to access controls)
4350 +the replica. It is only needed in certain push-mode
4351 +replication scenarios. Generally, this DN
4352 +.I should not
4353 +be the same as the
4354 +.B rootdn
4355 +used at the provider.
4356 +.TP
4357 +.B olcUpdateRef: <url>
4358 +Specify the referral to pass back when
4359 +.BR slapd (8)
4360 +is asked to modify a replicated local database.
4361 +If multiple values are specified, each url is provided.
4362 +
4363 +.SH DATABASE-SPECIFIC OPTIONS
4364 +Each database may allow specific configuration options; they are
4365 +documented separately in the backends' manual pages. See the
4366 +.BR slapd.backends (5)
4367 +manual page for an overview of available backends.
4368 +.SH OVERLAYS
4369 +An overlay is a piece of
4370 +code that intercepts database operations in order to extend or change
4371 +them. Overlays are pushed onto
4372 +a stack over the database, and so they will execute in the reverse
4373 +of the order in which they were configured and the database itself
4374 +will receive control last of all.
4375 +
4376 +Overlays must be configured as child entries of a specific database. The
4377 +entry's RDN must be of the form
4378 +.B olcOverlay={x}<overlaytype>
4379 +and the entry must have the olcOverlayConfig objectClass. Normally the
4380 +config engine generates the "{x}" index in the RDN automatically, so
4381 +it can be omitted when initially loading these entries.
4382 +
4383 +See the
4384 +.BR slapd.overlays (5)
4385 +manual page for an overview of available overlays.
4386 +.SH EXAMPLES
4387 +.LP
4388 +Here is a short example of a configuration in LDIF suitable for use with
4389 +.BR slapadd (8)
4390 +:
4391 +.LP
4392 +.RS
4393 +.nf
4394 +dn: cn=config
4395 +objectClass: olcGlobal
4396 +cn: config
4397 +olcPidFile: LOCALSTATEDIR/run/slapd.pid
4398 +olcAttributeOptions: x\-hidden lang\-
4399 +
4400 +dn: cn=schema,cn=config
4401 +objectClass: olcSchemaConfig
4402 +cn: schema
4403 +
4404 +include: file://SYSCONFDIR/schema/core.ldif
4405 +
4406 +dn: olcDatabase=frontend,cn=config
4407 +objectClass: olcDatabaseConfig
4408 +objectClass: olcFrontendConfig
4409 +olcDatabase: frontend
4410 +# Subtypes of "name" (e.g. "cn" and "ou") with the
4411 +# option ";x\-hidden" can be searched for/compared,
4412 +# but are not shown. See \fBslapd.access\fP(5).
4413 +olcAccess: to attrs=name;x\-hidden by * =cs
4414 +# Protect passwords. See \fBslapd.access\fP(5).
4415 +olcAccess: to attrs=userPassword by * auth
4416 +# Read access to other attributes and entries.
4417 +olcAccess: to * by * read
4418 +
4419 +# set a rootpw for the config database so we can bind.
4420 +# deny access to everyone else.
4421 +dn: olcDatabase=config,cn=config
4422 +objectClass: olcDatabaseConfig
4423 +olcDatabase: config
4424 +olcRootPW: {SSHA}XKYnrjvGT3wZFQrDD5040US592LxsdLy
4425 +olcAccess: to * by * none
4426 +
4427 +dn: olcDatabase=mdb,cn=config
4428 +objectClass: olcDatabaseConfig
4429 +objectClass: olcMdbConfig
4430 +olcDatabase: mdb
4431 +olcSuffix: "dc=our\-domain,dc=com"
4432 +# The database directory MUST exist prior to
4433 +# running slapd AND should only be accessible
4434 +# by the slapd/tools. Mode 0700 recommended.
4435 +olcDbDirectory: LOCALSTATEDIR/openldap\-data
4436 +# Indices to maintain
4437 +olcDbIndex: objectClass eq
4438 +olcDbIndex: cn,sn,mail pres,eq,approx,sub
4439 +
4440 +# We serve small clients that do not handle referrals,
4441 +# so handle remote lookups on their behalf.
4442 +dn: olcDatabase=ldap,cn=config
4443 +objectClass: olcDatabaseConfig
4444 +objectClass: olcLdapConfig
4445 +olcDatabase: ldap
4446 +olcSuffix: ""
4447 +olcDbUri: ldap://ldap.some\-server.com/
4448 +.fi
4449 +.RE
4450 +.LP
4451 +Assuming the above data was saved in a file named "config.ldif" and the
4452 +ETCDIR/slapd.d directory has been created, this command will initialize
4453 +the configuration:
4454 +.RS
4455 +.nf
4456 +slapadd \-F ETCDIR/slapd.d \-n 0 \-l config.ldif
4457 +.fi
4458 +.RE
4459 +
4460 +.LP
4461 +"OpenLDAP Administrator's Guide" contains a longer annotated
4462 +example of a slapd configuration.
4463 +
4464 +Alternatively, an existing slapd.conf file can be converted to the new
4465 +format using slapd or any of the slap tools:
4466 +.RS
4467 +.nf
4468 +slaptest \-f ETCDIR/slapd.conf \-F ETCDIR/slapd.d
4469 +.fi
4470 +.RE
4471 +
4472 +.SH FILES
4473 +.TP
4474 +ETCDIR/slapd.conf
4475 +default slapd configuration file
4476 +.TP
4477 +ETCDIR/slapd.d
4478 +default slapd configuration directory
4479 +.SH SEE ALSO
4480 +.BR ldap (3),
4481 +.BR ldif (5),
4482 +.BR gnutls\-cli (1),
4483 +.BR slapd.access (5),
4484 +.BR slapd.backends (5),
4485 +.BR slapd.conf (5),
4486 +.BR slapd.overlays (5),
4487 +.BR slapd.plugin (5),
4488 +.BR slapd (8),
4489 +.BR slapacl (8),
4490 +.BR slapadd (8),
4491 +.BR slapauth (8),
4492 +.BR slapcat (8),
4493 +.BR slapdn (8),
4494 +.BR slapindex (8),
4495 +.BR slapmodify (8),
4496 +.BR slappasswd (8),
4497 +.BR slaptest (8).
4498 +.LP
4499 +"OpenLDAP Administrator's Guide" (http://www.OpenLDAP.org/doc/admin/)
4500 +.SH ACKNOWLEDGEMENTS
4501 +.so ../Project
4502 diff -Naurp openldap-2.6.2.orig/include/ldap_defaults.h openldap-2.6.2/include/ldap_defaults.h
4503 --- openldap-2.6.2.orig/include/ldap_defaults.h 2022-05-04 16:55:23.000000000 +0200
4504 +++ openldap-2.6.2/include/ldap_defaults.h 2022-05-05 12:07:08.783961875 +0200
4505 @@ -40,7 +40,8 @@
4506
4507 /* default ldapi:// socket */
4508 #ifndef LDAPI_SOCK
4509 -#define LDAPI_SOCK LDAP_RUNDIR LDAP_DIRSEP "run" LDAP_DIRSEP "ldapi"
4510 +#define LDAPI_SOCK LDAP_RUNDIR LDAP_DIRSEP "run" LDAP_DIRSEP "openldap" LDAP_DIRSEP "ldapi"
4511 +
4512 #endif
4513
4514 /*
4515 @@ -54,7 +55,8 @@
4516 #define SLAPD_DEFAULT_CONFIGDIR LDAP_SYSCONFDIR LDAP_DIRSEP "slapd.d"
4517 #endif
4518 #ifndef SLAPD_DEFAULT_DB_DIR
4519 -#define SLAPD_DEFAULT_DB_DIR LDAP_RUNDIR LDAP_DIRSEP "openldap-data"
4520 +#define SLAPD_DEFAULT_DB_DIR LDAP_RUNDIR LDAP_DIRSEP "lib" LDAP_DIRSEP "openldap"
4521 +
4522 #endif
4523 #define SLAPD_DEFAULT_DB_MODE 0600
4524 /* default max deref depth for aliases */
4525 diff -Naurp openldap-2.6.2.orig/libraries/liblber/Makefile.in openldap-2.6.2/libraries/liblber/Makefile.in
4526 --- openldap-2.6.2.orig/libraries/liblber/Makefile.in 2022-05-04 16:55:23.000000000 +0200
4527 +++ openldap-2.6.2/libraries/liblber/Makefile.in 2022-05-05 12:05:53.313727757 +0200
4528 @@ -51,6 +51,6 @@ idtest: $(XLIBS) idtest.o
4529
4530 install-local: FORCE
4531 -$(MKDIR) $(DESTDIR)$(libdir)
4532 - $(LTINSTALL) $(INSTALLFLAGS) -m 644 $(LIBRARY) $(DESTDIR)$(libdir)
4533 + $(LTINSTALL) $(INSTALLFLAGS) -m 755 $(LIBRARY) $(DESTDIR)$(libdir)
4534 $(LTFINISH) $(DESTDIR)$(libdir)
4535
4536 diff -Naurp openldap-2.6.2.orig/libraries/libldap/Makefile.in openldap-2.6.2/libraries/libldap/Makefile.in
4537 --- openldap-2.6.2.orig/libraries/libldap/Makefile.in 2022-05-04 16:55:23.000000000 +0200
4538 +++ openldap-2.6.2/libraries/libldap/Makefile.in 2022-05-05 12:05:53.327727801 +0200
4539 @@ -82,7 +82,7 @@ CFFILES=ldap.conf
4540
4541 install-local: $(CFFILES) FORCE
4542 -$(MKDIR) $(DESTDIR)$(libdir)
4543 - $(LTINSTALL) $(INSTALLFLAGS) -m 644 $(LIBRARY) $(DESTDIR)$(libdir)
4544 + $(LTINSTALL) $(INSTALLFLAGS) -m 755 $(LIBRARY) $(DESTDIR)$(libdir)
4545 $(LTFINISH) $(DESTDIR)$(libdir)
4546 -$(MKDIR) $(DESTDIR)$(sysconfdir)
4547 @for i in $(CFFILES); do \
4548 diff -Naurp openldap-2.6.2.orig/servers/slapd/Makefile.in openldap-2.6.2/servers/slapd/Makefile.in
4549 --- openldap-2.6.2.orig/servers/slapd/Makefile.in 2022-05-04 16:55:23.000000000 +0200
4550 +++ openldap-2.6.2/servers/slapd/Makefile.in 2022-05-05 12:05:53.329727807 +0200
4551 @@ -374,9 +374,10 @@ install-local-srv: install-slapd install
4552
4553 install-slapd: FORCE
4554 -$(MKDIR) $(DESTDIR)$(libexecdir)
4555 + -$(MKDIR) $(DESTDIR)$(sbindir)
4556 -$(MKDIR) $(DESTDIR)$(localstatedir)/run
4557 $(LTINSTALL) $(INSTALLFLAGS) $(STRIP_OPTS) -m 755 \
4558 - slapd$(EXEEXT) $(DESTDIR)$(libexecdir)
4559 + slapd$(EXEEXT) $(DESTDIR)$(sbindir)
4560 @for i in $(SUBDIRS); do \
4561 if test -d $$i && test -f $$i/Makefile ; then \
4562 echo; echo " cd $$i && $(MAKE) $(MFLAGS) install"; \
4563 @@ -452,9 +453,9 @@ install-conf: FORCE
4564
4565 install-db-config: FORCE
4566 @-$(MKDIR) $(DESTDIR)$(localstatedir) $(DESTDIR)$(sysconfdir)
4567 - @-$(INSTALL) -m 700 -d $(DESTDIR)$(localstatedir)/openldap-data
4568 + @-$(INSTALL) -m 700 -d $(DESTDIR)$(localstatedir)/lib/openldap
4569 $(INSTALL) $(INSTALLFLAGS) -m 600 $(srcdir)/DB_CONFIG \
4570 - $(DESTDIR)$(localstatedir)/openldap-data/DB_CONFIG.example
4571 + $(DESTDIR)$(localstatedir)/lib/openldap/DB_CONFIG.example
4572 $(INSTALL) $(INSTALLFLAGS) -m 600 $(srcdir)/DB_CONFIG \
4573 $(DESTDIR)$(sysconfdir)/DB_CONFIG.example
4574
4575 @@ -462,6 +463,6 @@ install-tools: FORCE
4576 -$(MKDIR) $(DESTDIR)$(sbindir)
4577 for i in $(SLAPTOOLS); do \
4578 $(RM) $(DESTDIR)$(sbindir)/$$i$(EXEEXT); \
4579 - $(LN_S) -f $(DESTDIR)$(libexecdir)/slapd$(EXEEXT) $(DESTDIR)$(sbindir)/$$i$(EXEEXT); \
4580 + $(LN_S) -f $(DESTDIR)$(sbindir)/slapd$(EXEEXT) $(DESTDIR)$(sbindir)/$$i$(EXEEXT); \
4581 done
4582
4583 diff -Naurp openldap-2.6.2.orig/servers/slapd/slapd.conf openldap-2.6.2/servers/slapd/slapd.conf
4584 --- openldap-2.6.2.orig/servers/slapd/slapd.conf 2022-05-04 16:55:23.000000000 +0200
4585 +++ openldap-2.6.2/servers/slapd/slapd.conf 2022-05-05 12:05:53.331727813 +0200
4586 @@ -10,8 +10,9 @@ include %SYSCONFDIR%/schema/core.schema
4587 # service AND an understanding of referrals.
4588 #referral ldap://root.openldap.org
4589
4590 -pidfile %LOCALSTATEDIR%/run/slapd.pid
4591 -argsfile %LOCALSTATEDIR%/run/slapd.args
4592 +pidfile %LOCALSTATEDIR%/run/openldap/slapd.pid
4593 +argsfile %LOCALSTATEDIR%/run/openldap/slapd.args
4594 +
4595
4596 # Load dynamic backend modules:
4597 modulepath %MODULEDIR%
4598 @@ -69,7 +70,7 @@ rootpw secret
4599 # The database directory MUST exist prior to running slapd AND
4600 # should only be accessible by the slapd and slap tools.
4601 # Mode 700 recommended.
4602 -directory %LOCALSTATEDIR%/openldap-data
4603 +directory %LOCALSTATEDIR%/lib/openldap
4604 # Indices to maintain
4605 index objectClass eq
4606
4607 diff -Naurp openldap-2.6.2.orig/servers/slapd/slapd.ldif openldap-2.6.2/servers/slapd/slapd.ldif
4608 --- openldap-2.6.2.orig/servers/slapd/slapd.ldif 2022-05-04 16:55:23.000000000 +0200
4609 +++ openldap-2.6.2/servers/slapd/slapd.ldif 2022-05-05 12:05:53.332727816 +0200
4610 @@ -9,8 +9,8 @@ cn: config
4611 #
4612 # Define global ACLs to disable default read access.
4613 #
4614 -olcArgsFile: %LOCALSTATEDIR%/run/slapd.args
4615 -olcPidFile: %LOCALSTATEDIR%/run/slapd.pid
4616 +olcArgsFile: %LOCALSTATEDIR%/run/openldap/slapd.args
4617 +olcPidFile: %LOCALSTATEDIR%/run/openldap/slapd.pid
4618 #
4619 # Do not enable referrals until AFTER you have a working directory
4620 # service AND an understanding of referrals.
4621 @@ -88,7 +88,7 @@ olcRootPW: secret
4622 # The database directory MUST exist prior to running slapd AND
4623 # should only be accessible by the slapd and slap tools.
4624 # Mode 700 recommended.
4625 -olcDbDirectory: %LOCALSTATEDIR%/openldap-data
4626 +olcDbDirectory: %LOCALSTATEDIR%/lib/openldap
4627 # Indices to maintain
4628 olcDbIndex: objectClass eq
4629
4630 diff -Naurp openldap-2.6.2.orig/servers/slapd/slapi/Makefile.in openldap-2.6.2/servers/slapd/slapi/Makefile.in
4631 --- openldap-2.6.2.orig/servers/slapd/slapi/Makefile.in 2022-05-04 16:55:23.000000000 +0200
4632 +++ openldap-2.6.2/servers/slapd/slapi/Makefile.in 2022-05-05 12:05:53.333727819 +0200
4633 @@ -46,6 +46,6 @@ BUILD_MOD = @BUILD_SLAPI@
4634 install-local: FORCE
4635 if test "$(BUILD_MOD)" = "yes"; then \
4636 $(MKDIR) $(DESTDIR)$(libdir); \
4637 - $(LTINSTALL) $(INSTALLFLAGS) -m 644 $(LIBRARY) $(DESTDIR)$(libdir); \
4638 + $(LTINSTALL) $(INSTALLFLAGS) -m 755 $(LIBRARY) $(DESTDIR)$(libdir); \
4639 fi
4640