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