]> git.sur5r.net Git - openldap/blob - doc/man/man5/slapd.conf.5
clarify how to specify 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 Use
721 .B -1
722 or 
723 .B unlimited
724 to specify no limits.
725 The second format allows a fine grain setting of the size limits.
726 Extra args can be added on the same line.
727 See
728 .BR limits
729 for an explanation of the different flags.
730 .TP
731 .B sockbuf_max_incoming <integer>
732 Specify the maximum incoming LDAP PDU size for anonymous sessions.
733 The default is 262143.
734 .TP
735 .B sockbuf_max_incoming_auth <integer>
736 Specify the maximum incoming LDAP PDU size for authenticated sessions.
737 The default is 4194303.
738 .TP
739 .B srvtab <filename>
740 Specify the srvtab file in which the kerberos keys necessary for
741 authenticating clients using kerberos can be found. This option is only
742 meaningful if you are using Kerberos authentication.
743 .TP
744 .B threads <integer>
745 Specify the maximum size of the primary thread pool.
746 The default is 32.
747 .TP
748 .B timelimit {<integer>|unlimited}
749 .TP
750 .B timelimit time[.{soft|hard}]=<integer> [...]
751 Specify the maximum number of seconds (in real time)
752 .B slapd
753 will spend answering a search request.  The default time limit is 3600.
754 Use
755 .B -1
756 or 
757 .B unlimited
758 to specify no limits.
759 The second format allows a fine grain setting of the time limits.
760 Extra args can be added on the same line.
761 See
762 .BR limits
763 for an explanation of the different flags.
764 .TP
765 .B ucdata-path <path>
766 Specify the path to the directory containing the Unicode character
767 tables. The default path is LOCALSTATEDIR/ucdata.
768 .SH TLS OPTIONS
769 If
770 .B slapd
771 is built with support for Transport Layer Security, there are more options
772 you can specify.
773 .TP
774 .B TLSCipherSuite <cipher-suite-spec>
775 Permits configuring what ciphers will be accepted and the preference order.
776 <cipher-suite-spec> should be a cipher specification for OpenSSL.  Example:
777
778 TLSCipherSuite HIGH:MEDIUM:+SSLv2
779
780 To check what ciphers a given spec selects, use:
781
782 openssl ciphers -v <cipher-suite-spec>
783 .TP
784 .B TLSCACertificateFile <filename>
785 Specifies the file that contains certificates for all of the Certificate
786 Authorities that
787 .B slapd
788 will recognize.
789 .TP
790 .B TLSCACertificatePath <path>
791 Specifies the path of a directory that contains Certificate Authority
792 certificates in separate individual files. Usually only one of this
793 or the TLSCACertificateFile is used.
794 .TP
795 .B TLSCertificateFile <filename>
796 Specifies the file that contains the
797 .B slapd
798 server certificate.
799 .TP
800 .B TLSCertificateKeyFile <filename>
801 Specifies the file that contains the
802 .B slapd
803 server private key that matches the certificate stored in the
804 .B TLSCertificateFile
805 file.  Currently, the private key must not be protected with a password, so
806 it is of critical importance that it is protected carefully. 
807 .TP
808 .B TLSRandFile <filename>
809 Specifies the file to obtain random bits from when /dev/[u]random
810 is not available.  Generally set to the name of the EGD/PRNGD socket.
811 The environment variable RANDFILE can also be used to specify the filename.
812 .TP
813 .B TLSVerifyClient <level>
814 Specifies what checks to perform on client certificates in an
815 incoming TLS session, if any.
816 The
817 .B <level>
818 can be specified as one of the following keywords:
819 .RS
820 .TP
821 .B never
822 This is the default.
823 .B slapd
824 will not ask the client for a certificate.
825 .TP
826 .B allow
827 The client certificate is requested.  If no certificate is provided,
828 the session proceeds normally.  If a bad certificate is provided,
829 it will be ignored and the session proceeds normally.
830 .TP
831 .B try
832 The client certificate is requested.  If no certificate is provided,
833 the session proceeds normally.  If a bad certificate is provided,
834 the session is immediately terminated.
835 .TP
836 .B demand | hard | true
837 These keywords are all equivalent, for compatibility reasons.
838 The client certificate is requested.  If no certificate is provided,
839 or a bad certificate is provided, the session is immediately terminated.
840
841 Note that a valid client certificate is required in order to use the
842 SASL EXTERNAL authentication mechanism with a TLS session.  As such,
843 a non-default
844 .B TLSVerifyClient
845 setting must be chosen to enable SASL EXTERNAL authentication.
846 .RE
847 .SH GENERAL BACKEND OPTIONS
848 Options in this section only apply to the configuration file section
849 for the specified backend.  They are supported by every
850 type of backend.
851 .TP
852 .B backend <databasetype>
853 Mark the beginning of a backend definition. <databasetype>
854 should be one of
855 .B bdb,
856 .B dnssrv,
857 .B ldap,
858 .B ldbm,
859 .B meta,
860 .B monitor,
861 .B null,
862 .B passwd,
863 .B perl,
864 .B shell,
865 .B sql,
866 or
867 .B tcl,
868 depending on which backend will serve the database.
869
870 .SH GENERAL DATABASE OPTIONS
871 Options in this section only apply to the configuration file section
872 for the database in which they are defined.  They are supported by every
873 type of backend.  Note that the
874 .B database
875 and at least one
876 .B suffix
877 option are mandatory for each database.
878 .TP
879 .B database <databasetype>
880 Mark the beginning of a new database instance definition. <databasetype>
881 should be one of
882 .B bdb,
883 .B dnssrv,
884 .B ldap,
885 .B ldbm,
886 .B meta,
887 .B monitor,
888 .B null,
889 .B passwd,
890 .B perl,
891 .B shell,
892 .B sql,
893 or
894 .B tcl,
895 depending on which backend will serve the database.
896 .TP
897 .B lastmod on | off
898 Controls whether
899 .B slapd
900 will automatically maintain the 
901 modifiersName, modifyTimestamp, creatorsName, and 
902 createTimestamp attributes for entries.  By default, lastmod is on.
903 .TP
904 .B maxderefdepth <depth>
905 Specifies the maximum number of aliases to dereference when trying to
906 resolve an entry, used to avoid inifinite alias loops. The default is 1.
907 .TP
908 .B readonly on | off
909 This option puts the database into "read-only" mode.  Any attempts to 
910 modify the database will return an "unwilling to perform" error.  By
911 default, readonly is off.
912 .HP
913 .B replica host=<hostname>[:port] [tls=yes|critical]
914 .B [suffix=<suffix> [...]]
915 .B bindmethod=simple|sasl [binddn=<simple DN>] [credentials=<simple password>]
916 .B [saslmech=<SASL mech>] [secprops=<properties>] [realm=<realm>]
917 .B [authcId=<authentication ID>] [authzId=<authorization ID>]
918 .B [attr[!]=<attr list>]
919 .RS
920 Specify a replication site for this database.  Refer to the "OpenLDAP 
921 Administrator's Guide" for detailed information on setting up a replicated
922 .B slapd
923 directory service. Zero or more
924 .B suffix
925 instances can be used to select the subtrees that will be replicated
926 (defaults to all the database). A
927 .B bindmethod
928 of
929 .B simple
930 requires the options
931 .B binddn 
932 and
933 .B credentials  
934 and should only be used when adequate security services 
935 (e.g TLS or IPSEC) are in place. A
936 .B bindmethod 
937 of
938 .B sasl 
939 requires the option
940 .B saslmech. 
941 Specific security properties (as with the
942 .B sasl-secprops
943 keyword above) for a SASL bind can be set with the
944 .B secprops
945 option. A non-default SASL realm can be set with the
946 .B realm
947 option.
948 If the 
949 .B mechanism
950 will use Kerberos, a kerberos instance should be given in 
951 .B authcId.
952 An
953 .B attr list
954 can be given after the 
955 .B attr
956 keyword to allow the selective replication of the listed attributes only;
957 if the optional 
958 .B !
959 mark is used, the list is considered exclusive, i.e. the listed attributes
960 are not replicated.
961 If an objectClass is listed, all the related attributes
962 are (are not) replicated.
963 .RE
964 .TP
965 .B replogfile <filename>
966 Specify the name of the replication log file to log changes to.  
967 The replication log is typically written by
968 .BR slapd (8)
969 and read by
970 .BR slurpd (8).
971 See
972 .BR slapd.replog (5)
973 for more information.  The specified file should be located
974 in a directory with limited read/write/execute access as the replication
975 logs may contain sensitive information.
976 .TP
977 .B rootdn <dn>
978 Specify the distinguished name that is not subject to access control 
979 or administrative limit restrictions for operations on this database.
980 This DN may or may not be associated with an entry.  An empty root
981 DN (the default) specifies no root access is to be granted.  It is
982 recommended that the rootdn only be specified when needed (such as
983 when initially populating a database).  If the rootdn is within
984 a namingContext (suffix) of the database, a simple bind password
985 may also be provided using the
986 .B rootpw
987 directive.
988 .TP
989 .B rootpw <password>
990 Specify a password (or hash of the password) for the rootdn.  The
991 password can only be set if the rootdn is within the namingContext
992 (suffix) of the database.
993 This option accepts all RFC 2307 userPassword formats known to
994 the server (see 
995 .B password-hash
996 desription) as well as cleartext.
997 .BR slappasswd (8) 
998 may be used to generate a hash of a password.  Cleartext
999 and \fB{CRYPT}\fP passwords are not recommended.  If empty
1000 (the default), authentication of the root DN is by other means
1001 (e.g. SASL).  Use of SASL is encouraged.
1002 .TP
1003 .B suffix <dn suffix>
1004 Specify the DN suffix of queries that will be passed to this 
1005 backend database.  Multiple suffix lines can be given and at least one is 
1006 required for each database definition.
1007 If the suffix of one database is "inside" that of another, the database
1008 with the inner suffix must come first in the configuration file.
1009 .TP
1010 .B suffixalias <alias> <aliased suffix>
1011 Specify an alternate suffix that may be used to reference an already defined
1012 database suffix. Operations specifying DNs residing under the alias 
1013 will execute as if they had specified the aliased suffix.
1014 .TP
1015 .B subordinate
1016 Specify that the current backend database is a subordinate of another
1017 backend database. A subordinate database may have only one suffix. This
1018 option may be used to glue multiple databases into a single namingContext.
1019 If the suffix of the current database is within the namingContext of a
1020 superior database, searches against the superior database will be
1021 propagated to the subordinate as well. All of the databases
1022 associated with a single namingContext should have identical rootdns.
1023 Behavior of other LDAP operations is unaffected by this setting. In
1024 particular, it is not possible to use moddn to move an entry from
1025 one subordinate to another subordinate within the namingContext.
1026 .TP
1027 .B updatedn <dn>
1028 This option is only applicable in a slave
1029 .B slapd.
1030 It specifies the DN allowed to make changes to the replica (typically,
1031 this is the DN
1032 .BR slurpd (8)
1033 binds as when making changes to the replica).
1034 .TP
1035 .B updateref <url>
1036 Specify the referral to pass back when
1037 .BR slapd (8)
1038 is asked to modify a replicated local database.
1039 If specified multiple times, each url is provided.
1040 .SH DATABASE-SPECIFIC OPTIONS
1041 Each database may allow specific configuration options; they are
1042 documented separately in the
1043 .BR slapd-<backend> (5)
1044 manual pages.
1045 .SH EXAMPLES
1046 .LP
1047 Here is a short example of a configuration file:
1048 .LP
1049 .RS
1050 .nf
1051 include   SYSCONFDIR/schema/core.schema
1052 pidfile   LOCALSTATEDIR/slapd.pid
1053
1054 database  bdb
1055 suffix    "dc=our-domain,dc=com"
1056 # The database directory MUST exist prior to
1057 # running slapd AND should only be accessible
1058 # by the slapd/tools. Mode 700 recommended.
1059 directory LOCALSTATEDIR/openldap-data
1060 # Indices to maintain
1061 index     objectClass  eq
1062 index     cn,sn,mail   pres,eq,approx,sub
1063
1064 # We serve small clients that do not handle referrals,
1065 # so handle remote lookups on their behalf.
1066 database  ldap
1067 suffix    ""
1068 uri       ldap://ldap.some-server.com/
1069 lastmod   off
1070 .fi
1071 .RE
1072 .LP
1073 "OpenLDAP Administrator's Guide" contains a longer annotated
1074 example of a configuration file.
1075 The original ETCDIR/slapd.conf is another example.
1076 .SH FILES
1077 .TP
1078 ETCDIR/slapd.conf
1079 default slapd configuration file
1080 .SH SEE ALSO
1081 .BR ldap (3),
1082 .BR slapd-bdb (5),
1083 .BR slapd-dnssrv (5),
1084 .BR slapd-ldap (5),
1085 .BR slapd-ldbm (5),
1086 .BR slapd-meta (5),
1087 .BR slapd-null (5),
1088 .BR slapd-passwd (5),
1089 .BR slapd-perl (5),
1090 .BR slapd-shell (5),
1091 .BR slapd-sql (5),
1092 .BR slapd-tcl (5),
1093 .BR slapd.replog (5),
1094 .BR slapd.access (5),
1095 .BR locale (5),
1096 .BR slapd (8),
1097 .BR slapadd (8),
1098 .BR slapcat (8),
1099 .BR slapindex (8),
1100 .BR slappassword (8),
1101 .BR slurpd (8),
1102 .LP
1103 "OpenLDAP Administrator's Guide" (http://www.OpenLDAP.org/doc/admin/)
1104 .SH ACKNOWLEDGEMENTS
1105 .B      OpenLDAP
1106 is developed and maintained by The OpenLDAP Project (http://www.openldap.org/).
1107 .B      OpenLDAP
1108 is derived from University of Michigan LDAP 3.3 Release.