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