]> git.sur5r.net Git - openldap/blob - doc/man/man5/slapd.conf.5
Fix typo (ITS#2379)
[openldap] / doc / man / man5 / slapd.conf.5
1 .TH SLAPD.CONF 5 "RELEASEDATE" "OpenLDAP LDVERSION"
2 .\" Copyright 1998-2003 The OpenLDAP Foundation All Rights Reserved.
3 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
4 .\" $OpenLDAP$
5 .SH NAME
6 slapd.conf \- configuration file for slapd, the stand-alone LDAP daemon
7 .SH SYNOPSIS
8 ETCDIR/slapd.conf
9 .SH DESCRIPTION
10 The file
11 .B ETCDIR/slapd.conf
12 contains configuration information for the
13 .BR slapd (8)
14 daemon.  This configuration file is also used by the
15 .BR slurpd (8)
16 replication daemon and by the SLAPD tools
17 .BR slapadd (8),
18 .BR slapcat (8),
19 and
20 .BR slapindex (8).
21 .LP
22 The
23 .B slapd.conf
24 file consists of a series of global configuration options that apply to
25 .B slapd
26 as a whole (including all backends), followed by zero or more database
27 backend definitions that contain information specific to a backend
28 instance.
29 .LP
30 The general format of
31 .B slapd.conf
32 is as follows:
33 .LP
34 .nf
35     # comment - these options apply to every database
36     <global configuration options>
37     # first database definition & configuration options
38     database    <backend 1 type>
39     <configuration options specific to backend 1>
40     # subsequent database definitions & configuration options
41     ...
42 .fi
43 .LP
44 As many backend-specific sections as desired may be included.  Global
45 options can be overridden in a backend (for options that appear more
46 than once, the last appearance in the
47 .B slapd.conf
48 file is used).  Blank lines and comment lines beginning with a `#'
49 character are ignored. If a line begins with white space, it is
50 considered a continuation of the previous line.
51 .LP
52 Arguments on configuration lines are separated by white space. If an
53 argument contains white space, the argument should be enclosed in
54 double quotes.  If an argument contains a double quote (`"') or a
55 backslash character (`\\'), the character should be preceded by a
56 backslash character.
57 .LP
58 The specific configuration options available are discussed below in the
59 Global Configuration Options, General Backend Options, and General Database
60 Options.  Backend-specific options are discussed in the
61 .B slapd-<backend>(5)
62 manual pages.  Refer to the "OpenLDAP Administrator's Guide" for more
63 details on the slapd configuration file.
64 .SH GLOBAL CONFIGURATION OPTIONS
65 Options described in this section apply to all backends, unless specifically 
66 overridden in a backend definition. Arguments that should be replaced by 
67 actual text are shown in brackets <>.
68 .TP
69 .B access to <what> "[ by <who> <access> <control> ]+"
70 Grant access (specified by <access>) to a set of entries and/or
71 attributes (specified by <what>) by one or more requestors (specified
72 by <who>).
73 See
74 .BR slapd.access (5)
75 and the "OpenLDAP's Administrator's Guide" for details.
76 .TP
77 .B allow <features>
78 Specify a set of features (separated by white space) to
79 allow (default none).
80 .B bind_v2
81 allows acceptance of LDAPv2 bind requests.  Note that
82 .BR slapd (8)
83 does not truely implement LDAPv2 (RFC 1777), now Historic (RFC 3494).
84 .B bind_anon_cred
85 allows anonymous bind when credentials are not empty (e.g.
86 when DN is empty).
87 .B bind_anon_dn
88 allows unauthenticated (anonymous) bind when DN is not empty.
89 .B update_anon
90 allow unauthenticated (anonymous) update operations to be processed
91 (subject to access controls and other administrative limits).
92 .TP
93 .B argsfile <filename>
94 The ( absolute ) name of a file that will hold the 
95 .B slapd
96 server's command line options
97 if started without the debugging command line option.
98 .TP
99 .B attributeoptions [option-name]...
100 Define tagging attribute options or option tag/range prefixes.
101 Options must not end with `-', prefixes must end with `-'.
102 The `lang-' prefix is predefined.
103 If you use the
104 .B attributeoptions
105 directive, `lang-' will no longer be defined and you must specify it
106 explicitly if you want it defined.
107
108 An attribute description with a tagging option is a subtype of that
109 attribute description without the option.
110 Except for that, options defined this way have no special semantics.
111 Prefixes defined this way work like the `lang-' options:
112 They define a prefix for tagging options starting with the prefix.
113 That is, if you define the prefix `x-foo-', you can use the option
114 `x-foo-bar'.
115 Furthermore, in a search or compare, a prefix or range name (with
116 a trailing `-') matches all options starting with that name, as well
117 as the option with the range name sans the trailing `-'.
118 That is, `x-foo-bar-' matches `x-foo-bar' and `x-foo-bar-baz'.
119
120 RFC2251 reserves options beginning with `x-' for private experiments.
121 Other options should be registered with IANA, see RFC3383 section 3.4.
122 OpenLDAP also has the `binary' option built in, but this is a transfer
123 option, not a tagging option.
124 .HP
125 .hy 0
126 .B attributetype "(\ <oid> [NAME\ <name>] [OBSOLETE]\
127  [DESC\ <description>]\
128  [SUP\ <oid>] [EQUALITY\ <oid>] [ORDERING\ <oid>]\
129  [SUBSTR\ <oid>] [SYNTAX\ <oidlen>] [SINGLE\-VALUE] [COLLECTIVE]\
130  [NO\-USER\-MODIFICATION] [USAGE\ <attributeUsage>]\ )"
131 .RS
132 Specify an attribute type using the LDAPv3 syntax defined in RFC 2252.
133 The slapd parser extends the RFC 2252 definition by allowing string
134 forms as well as numeric OIDs to be used for the attribute OID and
135 attribute syntax OID.
136 (See the
137 .B objectidentifier
138 description.) 
139 .RE
140 .TP
141 .B concurrency <integer>
142 Specify a desired level of concurrency.  Provided to the underlying
143 thread system as a hint.  The default is not to provide any hint.
144 .\".TP
145 .\".B debug <subsys> <level>
146 .\"Specify a logging level for a particular subsystem.  The subsystems include
147 .\".B global
148 .\"a global level for all subsystems,
149 .\".B acl
150 .\"the ACL engine,
151 .\".B backend
152 .\"the backend databases,
153 .\".B cache
154 .\"the entry cache manager,
155 .\".B config
156 .\"the config file reader,
157 .\".B connection
158 .\"the connection manager,
159 .\".B cyrus
160 .\"the Cyrus SASL library interface,
161 .\".B filter
162 .\"the search filter processor,
163 .\".B getdn
164 .\"the DN normalization library,
165 .\".B index
166 .\"the database indexer,
167 .\".B liblber
168 .\"the ASN.1 BER library,
169 .\".B module
170 .\"the dynamic module loader,
171 .\".B operation
172 .\"the LDAP operation processors,
173 .\".B sasl
174 .\"the SASL authentication subsystem,
175 .\".B schema
176 .\"the schema processor, and
177 .\".B tls
178 .\"the TLS library interface. This is not an exhaustive list; there are many
179 .\"other subsystems and more are added over time.
180 .\"
181 .\"The levels are, in order of decreasing priority:
182 .\".B emergency, alert, critical, error, warning, notice, information, entry,
183 .\".B args, results, detail1, detail2
184 .\"An integer may be used instead, with 0 corresponding to
185 .\".B emergency
186 .\"up to 11 for
187 .\".BR detail2 .
188 .\"The
189 .\".B entry
190 .\"level logs function entry points,
191 .\".B args
192 .\"adds function call parameters, and
193 .\".B results
194 .\"adds the function results to the logs.
195 .\"The
196 .\".B detail1
197 .\"and
198 .\".B detail2
199 .\"levels add even more low level detail from individual functions.
200 .TP
201 .B defaultsearchbase <dn>
202 Specify a default search base to use when client submits a
203 non-base search request with an empty base DN.
204 .TP
205 .B disallow <features>
206 Specify a set of features (separated by white space) to
207 disallow (default none).
208 .B bind_anon
209 disables acceptance of anonymous bind requests.
210 .B bind_simple
211 disables simple (bind) authentication.
212 .B bind_simple_unprotected
213 disables simple (bind) authentication when confidentiality
214 protection (e.g. TLS) is not in place.  The
215 .B security
216 directive's
217 .B simple_bind
218 option provides fine grain control over the confidentiality
219 protection required for simple bind.
220 .B bind_krbv4
221 disables Kerberos V4 (bind) authentication.
222 .B tls_2_anon
223 disables Start TLS from forcing session to anonymous status (see also
224 .BR tls_authc ).
225 .B tls_authc
226 disables StartTLS if authenticated (see also
227 .BR tls_2_anon ).
228 .TP
229 .B gentlehup { on | off }
230 A SIGHUP signal will only cause a 'gentle' shutdown-attempt:
231 .B Slapd
232 will stop listening for new connections, but will not close the
233 connections to the current clients.  Future write operations return
234 unwilling-to-perform, though.  Slapd terminates when all clients
235 have closed their connections (if they ever do), or \- as before \-
236 if it receives a SIGTERM signal.  This can be useful if you wish to
237 terminate the server and start a new
238 .B slapd
239 server
240 .B with another database,
241 without disrupting the currently active clients.
242 The default is off.  You may wish to use
243 .B idletimeout
244 along with this option.
245 .TP
246 .B idletimeout <integer>
247 Specify the number of seconds to wait before forcibly closing
248 an idle client connection.  A idletimeout of 0 disables this
249 feature.  The default is 0.
250 .TP
251 .B include <filename>
252 Read additional configuration information from the given file before
253 continuing with the next line of the current file.
254 .TP
255 .B limits <who> <limit> [<limit> [...]]
256 Specify time and size limits based on who initiated an operation.
257 The argument
258 .B who
259 can be any of
260 .RS
261 .RS
262 .TP
263 anonymous | users | [dn[.<style>]=]<pattern>
264
265 .RE
266 with
267 .RS
268 .TP
269 <style> ::= exact | base | one | subtree | children | regex | anonymous
270
271 .RE
272 .B Anonymous
273 is hit when a search is performed without prior binding;
274 .B users
275 is hit when a search is performed by a successfully bound user;
276 otherwise a
277 .B regex
278 dn pattern is assumed unless otherwise specified by qualifying 
279 the (optional) key string
280 .B dn
281 with 
282 .B exact
283 or
284 .B base
285 (which are synonims), to require an exact match; with
286 .BR one, 
287 to require exactly one level of depth match; with
288 .BR subtree,
289 to allow any level of depth match, including the exact match; with
290 .BR children,
291 to allow any level of depth match, not including the exact match;
292 .BR regex
293 explicitly requires the (default) match based on regular expression
294 pattern, as detailed in
295 .BR regex (7).
296 Finally,
297 .B anonymous
298 matches unbound operations; the 
299 .B pattern
300 field is ignored.
301 The same behavior is obtained by using the 
302 .B anonymous
303 form of the
304 .B who
305 clause.
306
307 The currently supported limits are 
308 .B size
309 and 
310 .BR time.
311
312 The syntax for time limits is 
313 .BR time[.{soft|hard}]=<integer> ,
314 where 
315 .BR integer
316 is the number of seconds slapd will spend answering a search request.
317 If no time limit is explicitly requested by the client, the 
318 .BR soft
319 limit is used; if the requested time limit exceedes the
320 .BR hard
321 limit, an "Administrative limit exceeded" is returned.
322 If the
323 .BR hard
324 limit is set to 0 or to the keyword "soft", the soft limit is used 
325 in either case; if it is set to -1 or to the keyword "none", 
326 no hard limit is enforced.
327 Explicit requests for time limits smaller or equal to the
328 .BR hard 
329 limit are honored.
330 If no flag is set, the value is assigned to the 
331 .BR soft 
332 limit, and the
333 .BR hard
334 limit is set to zero, to preserve the original behavior.
335
336 The syntax for size limits is
337 .BR size[.{soft|hard|unchecked}]=<integer> ,
338 where
339 .BR integer
340 is the maximum number of entries slapd will return answering a search 
341 request.
342 If no size limit is explicitly requested by the client, the
343 .BR soft
344 limit is used; if the requested size limit exceedes the
345 .BR hard
346 limit, an "Administrative limit exceeded" is returned.
347 If the 
348 .BR hard
349 limit is set to 0 or to the keyword "soft", the soft limit is used 
350 in either case; if it is set to -1 or to the keyword "none", 
351 no hard limit is enforced.
352 Explicit requests for size limits smaller or equal to the
353 .BR hard
354 limit are honored.
355 The
356 .BR unchecked
357 flag sets a limit on the number of candidates a search request is allowed
358 to examine.
359 If the selected candidates exceed the 
360 .BR unchecked
361 limit, the search will abort with "Unwilling to perform".
362 If it is set to -1 or to the keyword "none", no limit is applied (the default).
363 If no flag is set, the value is assigned to the
364 .BR soft 
365 limit, and the
366 .BR hard
367 limit is set to zero, to preserve the original behavior.
368
369 In case of no match, the global limits are used.
370 The default values are the same of
371 .BR sizelimit
372 and
373 .BR timelimit ;
374 no limit is set on 
375 .BR unchecked .
376
377 If 
378 .B pagedResults
379 control is defined, additional size limits may be enforced; the syntax is
380 .BR size.pr={<integer>|noEstimate} ,
381 where
382 .BR integer
383 is the max page size if no explicit limit is set; the keyword
384 .BR noEstimate
385 inhibits the server to return an estimate of the total number
386 of entries that will be returned.
387 .RE
388 .\".TP
389 .\".B logfile <filename>
390 .\"Specify a file for recording debug log messages. By default these messages
391 .\"only go to stderr and are not recorded anywhere else. Specifying a logfile
392 .\"copies messages to both stderr and the logfile.
393 .TP
394 .B loglevel <integer>
395 Specify the level at which debugging statements and operation 
396 statistics should be syslogged (currently logged to the
397 .BR syslogd (8) 
398 LOG_LOCAL4 facility).  Log levels are additive, and available levels
399 are:
400 .RS
401 .RS
402 .PD 0
403 .TP
404 .B 1
405 trace function calls
406 .TP
407 .B 2
408 debug packet handling
409 .TP
410 .B 4
411 heavy trace debugging
412 .TP
413 .B 8
414 connection management
415 .TP
416 .B 16
417 print out packets sent and received
418 .TP
419 .B 32
420 search filter processing
421 .TP
422 .B 64
423 configuration file processing
424 .TP
425 .B 128
426 access control list processing
427 .TP
428 .B 256
429 stats log connections/operations/results
430 .TP
431 .B 512
432 stats log entries sent
433 .TP
434 .B 1024
435 print communication with shell backends
436 .TP
437 .B 2048
438 entry parsing
439 .PD
440 .RE
441 .RE
442 .TP
443 .B moduleload <filename>
444 Specify the name of a dynamically loadable module to load. The filename
445 may be an absolute path name or a simple filename. Non-absolute names
446 are searched for in the directories specified by the
447 .B modulepath
448 option. This option and the
449 .B modulepath
450 option are only usable if slapd was compiled with --enable-modules.
451 .TP
452 .B modulepath <pathspec>
453 Specify a list of directories to search for loadable modules. Typically
454 the path is colon-separated but this depends on the operating system.
455 .HP
456 .B objectclass "( <oid> [NAME <name>] [DESC <description] [OBSOLETE]\
457  [SUP <oids>] [{ ABSTRACT | STRUCTURAL | AUXILIARY }] [MUST <oids>]\
458  [MAY <oids>] )"
459 .RS
460 Specify an objectclass using the LDAPv3 syntax defined in RFC 2252.
461 The slapd parser extends the RFC 2252 definition by allowing string
462 forms as well as numeric OIDs to be used for the object class OID.
463 (See the
464 .B
465 objectidentifier
466 description.)  Object classes are "STRUCTURAL" by default.
467 .RE
468 .TP
469 .B objectidentifier <name> "{ <oid> | <name>[:<suffix>] }"
470 Define a string name that equates to the given OID. The string can be used
471 in place of the numeric OID in objectclass and attribute definitions. The
472 name can also be used with a suffix of the form ":xx" in which case the
473 value "oid.xx" will be used.
474 .TP
475 .B password-hash <hash>
476 This option sets the hash to be used in generation of user
477 passwords, stored in userPassword, during processing of
478 LDAP Password Modify Extended Operations (RFC 3052).
479 The <hash> must be one of
480 .BR {SSHA} ,
481 .BR {SHA} ,
482 .BR {SMD5} ,
483 .BR {MD5} ,
484 .BR {CRYPT} ,
485 and
486 .BR {CLEARTEXT} .
487 The default is
488 .BR {SSHA} .
489
490 .B {SHA}
491 and
492 .B {SSHA}
493 use the SHA-1 algorithm (FIPS 160-1), the latter with a seed.
494
495 .B {MD5}
496 and
497 .B {SMD5}
498 use the MD5 algorithm (RFC 1321), the latter with a seed.
499
500 .B {CRYPT}
501 uses the
502 .BR crypt (3).
503
504 .B {CLEARTEXT}
505 indicates that the new password should be
506 added to userPassword as clear text.
507
508 Note that this option does not alter the normal user applications
509 handling of userPassword during LDAP Add, Modify, or other LDAP operations.
510 .TP
511 .B password\-crypt\-salt\-format <format>
512 Specify the format of the salt passed to
513 .BR crypt (3)
514 when generating {CRYPT} passwords (see
515 .BR password\-hash )
516 during processing of LDAP Password Modify Extended Operations (RFC 3062).
517
518 This string needs to be in
519 .BR sprintf (3)
520 format and may include one (and only one) %s conversion.
521 This conversion will be substituted with a string random
522 characters from [A\-Za\-z0\-9./].  For example, "%.2s"
523 provides a two character salt and "$1$%.8s" tells some
524 versions of crypt(3) to use an MD5 algorithm and provides
525 8 random characters of salt.  The default is "%s", which
526 provides 31 characters of salt.
527 .TP
528 .B pidfile <filename>
529 The ( absolute ) name of a file that will hold the 
530 .B slapd
531 server's process ID ( see
532 .BR getpid (2)
533 ) if started without the debugging command line option.
534 .TP
535 .B referral <url>
536 Specify the referral to pass back when
537 .BR slapd (8)
538 cannot find a local database to handle a request.
539 If specified multiple times, each url is provided.
540 .TP
541 .B require <conditions>
542 Specify a set of conditions (separated by white space) to
543 require (default none).
544 The directive may be specified globally and/or per-database.
545 .B bind
546 requires bind operation prior to directory operations.
547 .B LDAPv3
548 requires session to be using LDAP version 3.
549 .B authc
550 requires authentication prior to directory operations.
551 .B SASL
552 requires SASL authentication prior to directory operations.
553 .B strong
554 requires strong authentication prior to directory operations.
555 The strong keyword allows protected "simple" authentication
556 as well as SASL authentication.
557 .B none
558 may be used to require no conditions (useful for clearly globally
559 set conditions within a particular database).
560 .TP
561 .B reverse-lookup on | off
562 Enable/disable client name unverified reverse lookup (default is 
563 .BR off 
564 if compiled with --enable-rlookups).
565 .TP
566 .B rootDSE <file>
567 Specify the name of an LDIF(5) file containing user defined attributes
568 for the root DSE.  These attributes are returned in addition to the
569 attributes normally produced by slapd.
570 .TP
571 .B sasl-authz-policy <policy>
572 Used to specify which rules to use for SASL Proxy Authorization. Proxy
573 authorization allows a client to authenticate to the server using one
574 user's credentials, but specify a different identity to use for authorization
575 and access control purposes. It essentially allows user A to login as user
576 B, using user A's password.
577 The
578 .B none
579 flag disables proxy authorization. This is the default setting.
580 The
581 .B from
582 flag will use rules in the
583 .I saslAuthzFrom
584 attribute of the authorization DN.
585 The
586 .B to
587 flag will use rules in the
588 .I saslAuthzTo
589 attribute of the authentication DN.
590 The
591 .B both
592 flag will allow both of the above. The rules are simply regular expressions
593 specifying which DNs are allowed to perform proxy authorization. The
594 .I saslAuthzFrom
595 attribute in an entry specifies which other users
596 are allowed to proxy login to this entry. The
597 .I saslAuthzTo
598 attribute in
599 an entry specifies which other users this user can authorize as.  Use of
600 .I saslAuthzTo
601 rules can be easily
602 abused if users are allowed to write arbitrary values to this attribute.
603 In general the
604 .I saslAuthzTo
605 attribute must be protected with ACLs such that
606 only privileged users can modify it.
607 .TP
608 .B sasl-host <fqdn>
609 Used to specify the fully qualified domain name used for SASL processing.
610 .TP
611 .B sasl-realm <realm>
612 Specify SASL realm.  Default is empty.
613 .TP
614 .B sasl-regexp <match> <replace>
615 Used by the SASL authorization mechanism to convert a SASL authenticated 
616 username to an LDAP DN. When an authorization request is received, the SASL 
617 .B USERNAME, REALM, 
618 and
619 .B MECHANISM
620 are taken, when available, and combined into a SASL name of the 
621 form
622 .RS
623 .RS
624 .TP
625 .B uid=<username>[,cn=<realm>],cn=<mechanism>,cn=auth
626
627 .RE
628 This SASL name is then compared against the
629 .B match
630 regular expression, and if the match is successful, the SASL name is
631 replaced with the
632 .B replace
633 string. If there are wildcard strings in the 
634 .B match
635 regular expression that are enclosed in parenthesis, e.g. 
636 .RS
637 .RS
638 .TP
639 .B uid=(.*),cn=.*
640
641 .RE
642 .RE
643 then the portion of the SASL name that matched the wildcard will be stored
644 in the numbered placeholder variable $1. If there are other wildcard strings
645 in parenthesis, the matching strings will be in $2, $3, etc. up to $9. The 
646 placeholders can then be used in the 
647 .B replace
648 string, e.g. 
649 .RS
650 .RS
651 .TP
652 .B cn=$1,ou=Accounts,dc=$2,dc=$4. 
653
654 .RE
655 .RE
656 The replaced SASL name can be either a DN or an LDAP URI. If the latter, the slapd
657 server will use the URI to search its own database, and if the search returns 
658 exactly one entry, the SASL name is replaced by the DN of that entry.
659 Multiple 
660 .B sasl-regexp 
661 options can be given in the configuration file to allow for multiple matching 
662 and replacement patterns. The matching patterns are checked in the order they 
663 appear in the file, stopping at the first successful match.
664
665 .\".B Caution:
666 .\"Because the plus sign + is a character recognized by the regular expression engine,
667 .\"and it will appear in SASL names that include a REALM, be careful to escape the
668 .\"plus sign with a backslash \\+ to remove the character's special meaning.
669 .RE
670 .TP
671 .B sasl-secprops <properties>
672 Used to specify Cyrus SASL security properties.
673 The
674 .B none
675 flag (without any other properities) causes the flag properites
676 default, "noanonymous,noplain", to be cleared.
677 The
678 .B noplain
679 flag disables mechanisms susceptible to simple passive attacks.
680 The
681 .B noactive
682 flag disables mechanisms susceptible to active attacks.
683 The
684 .B nodict
685 flag disables mechanisms susceptible to passive dictionary attacks.
686 The
687 .B noanonymous
688 flag disables mechanisms which support anonymous login.
689 The
690 .B forwardsec
691 flag require forward secrecy between sessions.
692 The
693 .B passcred
694 require mechanisms which pass client credentials (and allow
695 mechanisms which can pass credentials to do so).
696 The
697 .B minssf=<factor> 
698 property specifies the minimum acceptable
699 .I security strength factor
700 as an integer approximate to effective key length used for
701 encryption.  0 (zero) implies no protection, 1 implies integrity
702 protection only, 56 allows DES or other weak ciphers, 112
703 allows triple DES and other strong ciphers, 128 allows RC4,
704 Blowfish and other modern strong ciphers.  The default is 0.
705 The
706 .B maxssf=<factor> 
707 property specifies the maximum acceptable
708 .I security strength factor
709 as an integer (see minssf description).  The default is INT_MAX.
710 The
711 .B maxbufsize=<size> 
712 property specifies the maximum security layer receive buffer
713 size allowed.  0 disables security layers.  The default is 65536.
714 .TP
715 .B schemadn <dn>
716 Specify the distinguished name for the subschema subentry that
717 controls the entries on this server.  The default is "cn=Subschema".
718 .TP
719 .B security <factors>
720 Specify a set of factors (separated by white space) to require.
721 An integer value is associated with each factor and is roughly
722 equivalent of the encryption key length to require.  A value
723 of 112 is equivalent to 3DES, 128 to Blowfish, etc..
724 The directive may be specified globally and/or per-database.
725 .B ssf=<n>
726 specifies the overall security strength factor.
727 .B transport=<n>
728 specifies the transport security strength factor.
729 .B tls=<n>
730 specifies the TLS security strength factor.
731 .B sasl=<n>
732 specifies the SASL security strength factor.
733 .B update_ssf=<n>
734 specifies the overall security strength factor to require for
735 directory updates.
736 .B update_transport=<n>
737 specifies the transport security strength factor to require for
738 directory updates.
739 .B update_tls=<n>
740 specifies the TLS security strength factor to require for
741 directory updates.
742 .B update_sasl=<n>
743 specifies the SASL security strength factor to require for
744 directory updates.
745 .B simple_bind=<n>
746 specifies the security strength factor required for
747 .I simple
748 username/password authentication.
749 Note that the
750 .B transport
751 factor is measure of security provided by the underlying transport,
752 e.g. ldapi:// (and eventually IPSEC).  It is not normally used.
753 .TP
754 .B sizelimit {<integer>|unlimited}
755 .TP
756 .B sizelimit size[.{soft|hard|unchecked}]=<integer> [...]
757 Specify the maximum number of entries to return from a search operation.
758 The default size limit is 500.
759 Use
760 .B -1
761 or 
762 .B unlimited
763 to specify no limits.
764 The second format allows a fine grain setting of the size limits.
765 Extra args can be added on the same line.
766 See
767 .BR limits
768 for an explanation of the different flags.
769 .TP
770 .B sockbuf_max_incoming <integer>
771 Specify the maximum incoming LDAP PDU size for anonymous sessions.
772 The default is 262143.
773 .TP
774 .B sockbuf_max_incoming_auth <integer>
775 Specify the maximum incoming LDAP PDU size for authenticated sessions.
776 The default is 4194303.
777 .TP
778 .B srvtab <filename>
779 Specify the srvtab file in which the kerberos keys necessary for
780 authenticating clients using kerberos can be found. This option is only
781 meaningful if you are using Kerberos authentication.
782 .TP
783 .B threads <integer>
784 Specify the maximum size of the primary thread pool.
785 The default is 16.
786 .TP
787 .B timelimit {<integer>|unlimited}
788 .TP
789 .B timelimit time[.{soft|hard}]=<integer> [...]
790 Specify the maximum number of seconds (in real time)
791 .B slapd
792 will spend answering a search request.  The default time limit is 3600.
793 Use
794 .B -1
795 or 
796 .B unlimited
797 to specify no limits.
798 The second format allows a fine grain setting of the time limits.
799 Extra args can be added on the same line.
800 See
801 .BR limits
802 for an explanation of the different flags.
803 .TP
804 .B ucdata-path <path>
805 Specify the path to the directory containing the Unicode character
806 tables. The default path is LOCALSTATEDIR/ucdata.
807 .SH TLS OPTIONS
808 If
809 .B slapd
810 is built with support for Transport Layer Security, there are more options
811 you can specify.
812 .TP
813 .B TLSCipherSuite <cipher-suite-spec>
814 Permits configuring what ciphers will be accepted and the preference order.
815 <cipher-suite-spec> should be a cipher specification for OpenSSL.  Example:
816
817 TLSCipherSuite HIGH:MEDIUM:+SSLv2
818
819 To check what ciphers a given spec selects, use:
820
821 openssl ciphers -v <cipher-suite-spec>
822 .TP
823 .B TLSCACertificateFile <filename>
824 Specifies the file that contains certificates for all of the Certificate
825 Authorities that
826 .B slapd
827 will recognize.
828 .TP
829 .B TLSCACertificatePath <path>
830 Specifies the path of a directory that contains Certificate Authority
831 certificates in separate individual files. Usually only one of this
832 or the TLSCACertificateFile is used.
833 .TP
834 .B TLSCertificateFile <filename>
835 Specifies the file that contains the
836 .B slapd
837 server certificate.
838 .TP
839 .B TLSCertificateKeyFile <filename>
840 Specifies the file that contains the
841 .B slapd
842 server private key that matches the certificate stored in the
843 .B TLSCertificateFile
844 file.  Currently, the private key must not be protected with a password, so
845 it is of critical importance that it is protected carefully. 
846 .TP
847 .B TLSRandFile <filename>
848 Specifies the file to obtain random bits from when /dev/[u]random
849 is not available.  Generally set to the name of the EGD/PRNGD socket.
850 The environment variable RANDFILE can also be used to specify the filename.
851 .TP
852 .B TLSVerifyClient <level>
853 Specifies what checks to perform on client certificates in an
854 incoming TLS session, if any.
855 The
856 .B <level>
857 can be specified as one of the following keywords:
858 .RS
859 .TP
860 .B never
861 This is the default.
862 .B slapd
863 will not ask the client for a certificate.
864 .TP
865 .B allow
866 The client certificate is requested.  If no certificate is provided,
867 the session proceeds normally.  If a bad certificate is provided,
868 it will be ignored and the session proceeds normally.
869 .TP
870 .B try
871 The client certificate is requested.  If no certificate is provided,
872 the session proceeds normally.  If a bad certificate is provided,
873 the session is immediately terminated.
874 .TP
875 .B demand | hard | true
876 These keywords are all equivalent, for compatibility reasons.
877 The client certificate is requested.  If no certificate is provided,
878 or a bad certificate is provided, the session is immediately terminated.
879
880 Note that a valid client certificate is required in order to use the
881 SASL EXTERNAL authentication mechanism with a TLS session.  As such,
882 a non-default
883 .B TLSVerifyClient
884 setting must be chosen to enable SASL EXTERNAL authentication.
885 .RE
886 .SH GENERAL BACKEND OPTIONS
887 Options in this section only apply to the configuration file section
888 for the specified backend.  They are supported by every
889 type of backend.
890 .TP
891 .B backend <databasetype>
892 Mark the beginning of a backend definition. <databasetype>
893 should be one of
894 .B bdb,
895 .B dnssrv,
896 .B ldap,
897 .B ldbm,
898 .B meta,
899 .B monitor,
900 .B null,
901 .B passwd,
902 .B perl,
903 .B shell,
904 .B sql,
905 or
906 .B tcl,
907 depending on which backend will serve the database.
908
909 .SH GENERAL DATABASE OPTIONS
910 Options in this section only apply to the configuration file section
911 for the database in which they are defined.  They are supported by every
912 type of backend.  Note that the
913 .B database
914 and at least one
915 .B suffix
916 option are mandatory for each database.
917 .TP
918 .B database <databasetype>
919 Mark the beginning of a new database instance definition. <databasetype>
920 should be one of
921 .B bdb,
922 .B dnssrv,
923 .B ldap,
924 .B ldbm,
925 .B meta,
926 .B monitor,
927 .B null,
928 .B passwd,
929 .B perl,
930 .B shell,
931 .B sql,
932 or
933 .B tcl,
934 depending on which backend will serve the database.
935 .TP
936 .B lastmod on | off
937 Controls whether
938 .B slapd
939 will automatically maintain the 
940 modifiersName, modifyTimestamp, creatorsName, and 
941 createTimestamp attributes for entries.  By default, lastmod is on.
942 .TP
943 .B maxderefdepth <depth>
944 Specifies the maximum number of aliases to dereference when trying to
945 resolve an entry, used to avoid inifinite alias loops. The default is 1.
946 .TP
947 .B readonly on | off
948 This option puts the database into "read-only" mode.  Any attempts to 
949 modify the database will return an "unwilling to perform" error.  By
950 default, readonly is off.
951 .HP
952 .B replica host=<hostname>[:port] [tls=yes|critical]
953 .B [suffix=<suffix> [...]]
954 .B bindmethod=simple|sasl [binddn=<simple DN>] [credentials=<simple password>]
955 .B [saslmech=<SASL mech>] [secprops=<properties>] [realm=<realm>]
956 .B [authcId=<authentication ID>] [authzId=<authorization ID>]
957 .B [attr[!]=<attr list>]
958 .RS
959 Specify a replication site for this database.  Refer to the "OpenLDAP 
960 Administrator's Guide" for detailed information on setting up a replicated
961 .B slapd
962 directory service. Zero or more
963 .B suffix
964 instances can be used to select the subtrees that will be replicated
965 (defaults to all the database). A
966 .B bindmethod
967 of
968 .B simple
969 requires the options
970 .B binddn 
971 and
972 .B credentials  
973 and should only be used when adequate security services 
974 (e.g TLS or IPSEC) are in place. A
975 .B bindmethod 
976 of
977 .B sasl 
978 requires the option
979 .B saslmech. 
980 Specific security properties (as with the
981 .B sasl-secprops
982 keyword above) for a SASL bind can be set with the
983 .B secprops
984 option. A non-default SASL realm can be set with the
985 .B realm
986 option.
987 If the 
988 .B mechanism
989 will use Kerberos, a kerberos instance should be given in 
990 .B authcId.
991 An
992 .B attr list
993 can be given after the 
994 .B attr
995 keyword to allow the selective replication of the listed attributes only;
996 if the optional 
997 .B !
998 mark is used, the list is considered exclusive, i.e. the listed attributes
999 are not replicated.
1000 If an objectClass is listed, all the related attributes
1001 are (are not) replicated.
1002 .RE
1003 .TP
1004 .B replogfile <filename>
1005 Specify the name of the replication log file to log changes to.  
1006 The replication log is typically written by
1007 .BR slapd (8)
1008 and read by
1009 .BR slurpd (8).
1010 See
1011 .BR slapd.replog (5)
1012 for more information.  The specified file should be located
1013 in a directory with limited read/write/execute access as the replication
1014 logs may contain sensitive information.
1015 .TP
1016 .B rootdn <dn>
1017 Specify the distinguished name that is not subject to access control 
1018 or administrative limit restrictions for operations on this database.
1019 This DN may or may not be associated with an entry.  An empty root
1020 DN (the default) specifies no root access is to be granted.  It is
1021 recommended that the rootdn only be specified when needed (such as
1022 when initially populating a database).  If the rootdn is within
1023 a namingContext (suffix) of the database, a simple bind password
1024 may also be provided using the
1025 .B rootpw
1026 directive.
1027 .TP
1028 .B rootpw <password>
1029 Specify a password (or hash of the password) for the rootdn.  The
1030 password can only be set if the rootdn is within the namingContext
1031 (suffix) of the database.
1032 This option accepts all RFC 2307 userPassword formats known to
1033 the server (see 
1034 .B password-hash
1035 desription) as well as cleartext.
1036 .BR slappasswd (8) 
1037 may be used to generate a hash of a password.  Cleartext
1038 and \fB{CRYPT}\fP passwords are not recommended.  If empty
1039 (the default), authentication of the root DN is by other means
1040 (e.g. SASL).  Use of SASL is encouraged.
1041 .TP
1042 .B suffix <dn suffix>
1043 Specify the DN suffix of queries that will be passed to this 
1044 backend database.  Multiple suffix lines can be given and at least one is 
1045 required for each database definition.
1046 If the suffix of one database is "inside" that of another, the database
1047 with the inner suffix must come first in the configuration file.
1048 .TP
1049 .B subordinate
1050 Specify that the current backend database is a subordinate of another
1051 backend database. A subordinate database may have only one suffix. This
1052 option may be used to glue multiple databases into a single namingContext.
1053 If the suffix of the current database is within the namingContext of a
1054 superior database, searches against the superior database will be
1055 propagated to the subordinate as well. All of the databases
1056 associated with a single namingContext should have identical rootdns.
1057 Behavior of other LDAP operations is unaffected by this setting. In
1058 particular, it is not possible to use moddn to move an entry from
1059 one subordinate to another subordinate within the namingContext.
1060 .TP
1061 .B updatedn <dn>
1062 This option is only applicable in a slave
1063 .B slapd.
1064 It specifies the DN allowed to make changes to the replica (typically,
1065 this is the DN
1066 .BR slurpd (8)
1067 binds as when making changes to the replica).
1068 .TP
1069 .B updateref <url>
1070 Specify the referral to pass back when
1071 .BR slapd (8)
1072 is asked to modify a replicated local database.
1073 If specified multiple times, each url is provided.
1074 .SH DATABASE-SPECIFIC OPTIONS
1075 Each database may allow specific configuration options; they are
1076 documented separately in the
1077 .BR slapd-<backend> (5)
1078 manual pages.
1079 .SH EXAMPLES
1080 .LP
1081 Here is a short example of a configuration file:
1082 .LP
1083 .RS
1084 .nf
1085 include   SYSCONFDIR/schema/core.schema
1086 pidfile   LOCALSTATEDIR/slapd.pid
1087
1088 # Subtypes of "name" (e.g. "cn" and "ou") with the
1089 # option ";x-hidden" can be searched for/compared,
1090 # but are not shown.  See \fBslapd.access\fP(5).
1091 attributeoptions x-hidden lang-
1092 access to attr=name;x-hidden by * =cs
1093
1094 database  bdb
1095 suffix    "dc=our-domain,dc=com"
1096 # The database directory MUST exist prior to
1097 # running slapd AND should only be accessible
1098 # by the slapd/tools. Mode 700 recommended.
1099 directory LOCALSTATEDIR/openldap-data
1100 # Indices to maintain
1101 index     objectClass  eq
1102 index     cn,sn,mail   pres,eq,approx,sub
1103
1104 # We serve small clients that do not handle referrals,
1105 # so handle remote lookups on their behalf.
1106 database  ldap
1107 suffix    ""
1108 uri       ldap://ldap.some-server.com/
1109 lastmod   off
1110 .fi
1111 .RE
1112 .LP
1113 "OpenLDAP Administrator's Guide" contains a longer annotated
1114 example of a configuration file.
1115 The original ETCDIR/slapd.conf is another example.
1116 .SH FILES
1117 .TP
1118 ETCDIR/slapd.conf
1119 default slapd configuration file
1120 .SH SEE ALSO
1121 .BR ldap (3),
1122 .BR slapd-bdb (5),
1123 .BR slapd-dnssrv (5),
1124 .BR slapd-ldap (5),
1125 .BR slapd-ldbm (5),
1126 .BR slapd-meta (5),
1127 .BR slapd-null (5),
1128 .BR slapd-passwd (5),
1129 .BR slapd-perl (5),
1130 .BR slapd-shell (5),
1131 .BR slapd-sql (5),
1132 .BR slapd-tcl (5),
1133 .BR slapd.replog (5),
1134 .BR slapd.access (5),
1135 .BR locale (5),
1136 .BR slapd (8),
1137 .BR slapadd (8),
1138 .BR slapcat (8),
1139 .BR slapindex (8),
1140 .BR slappasswd (8),
1141 .BR slurpd (8),
1142 .LP
1143 "OpenLDAP Administrator's Guide" (http://www.OpenLDAP.org/doc/admin/)
1144 .SH ACKNOWLEDGEMENTS
1145 .B      OpenLDAP
1146 is developed and maintained by The OpenLDAP Project (http://www.openldap.org/).
1147 .B      OpenLDAP
1148 is derived from University of Michigan LDAP 3.3 Release.