]> git.sur5r.net Git - openldap/blob - doc/man/man5/slapo-unique.5
ITS#6023 minor formatting tweaks
[openldap] / doc / man / man5 / slapo-unique.5
1 .TH SLAPO-UNIQUE 5 "RELEASEDATE" "OpenLDAP LDVERSION"
2 .\" Copyright 2004-2009 The OpenLDAP Foundation All Rights Reserved.
3 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
4 .\" $OpenLDAP$
5 .SH NAME
6 slapo\-unique \- Attribute Uniqueness overlay to slapd
7 .SH SYNOPSIS
8 ETCDIR/slapd.conf
9 .SH DESCRIPTION
10 The Attribute Uniqueness overlay can be used with a backend database such as
11 .BR slapd\-bdb (5)
12 to enforce the uniqueness of some or all attributes within a
13 scope. This subtree defaults to all objects within the subtree of the
14 database for which the Uniqueness overlay is configured.
15 .LP
16 Uniqueness is enforced by searching the subtree to ensure that the values of
17 all attributes presented with an
18 .BR add ,
19 .B modify
20 or
21 .B modrdn
22 operation are unique within the scope.
23 For example, if uniqueness were enforced for the
24 .B uid
25 attribute, the subtree would be searched for any other records which also
26 have a
27 .B uid
28 attribute containing the same value. If any are found, the request is
29 rejected.
30 .LP
31 The search is performed using the rootdn of the database, to avoid issues
32 with ACLs preventing the overlay from seeing all of the relevant data. As
33 such, the database must have a rootdn configured.
34 .SH CONFIGURATION
35 These
36 .B slapd.conf
37 options apply to the Attribute Uniqueness overlay.
38 They should appear after the
39 .B overlay
40 directive.
41 .TP
42 .B unique_uri <[strict ][ignore ]URI[URI...]...>
43 Configure the base, attributes, scope, and filter for uniqueness
44 checking.  Multiple URIs may be specified within a domain,
45 allowing complex selections of objects.  Multiple
46 .B unique_uri
47 statements or
48 .B olcUniqueURI
49 attributes will create independent domains, each with their own
50 independent lists of URIs and ignore/strict settings.
51
52 The LDAP URI syntax is a subset of
53 .B RFC-4516,
54 and takes the form:
55
56 ldap:///[base dn]?[attributes...]?scope[?filter]
57
58 The
59 .B base dn
60 defaults to that of the back-end database.
61 Specified base dns must be within the subtree of the back-end database.
62
63 If no
64 .B attributes
65 are specified, the URI applies to all non-operational attributes.
66
67 The
68 .B scope
69 component is effectively mandatory, because LDAP URIs default to
70 .B base
71 scope, which is not valid for uniqueness, because groups of one object
72 are always unique.  Scopes of
73 .B sub
74 (for subtree) and
75 .B one
76 for one-level are valid.
77
78 The
79 .B filter
80 component causes the domain to apply uniqueness constraints only to
81 matching objects.  e.g.
82 .B ldap:///?cn?sub?(sn=e*)
83 would require unique
84 .B cn
85 attributes for all objects in the subtree of the back-end database whose
86 .B sn
87 starts with an e.
88
89 It is possible to assert uniqueness upon all non-operational
90 attributes except those listed by prepending the keyword
91 .B ignore
92 If not configured, all non-operational (e.g., system) attributes must be
93 unique. Note that the
94 .B attributes
95 list of an
96 .B ignore
97 URI should generally contain the
98 .BR objectClass ,
99 .BR dc ,
100 .B ou
101 and
102 .B o
103 attributes, as these will generally not be unique, nor are they operational
104 attributes.
105
106 It is possible to set strict checking for the uniqueness domain by
107 prepending the keyword
108 .B strict.
109 By default, uniqueness is not enforced
110 for null values. Enabling
111 .B strict
112 mode extends the concept of uniqueness to include null values, such
113 that only one attribute within a subtree will be allowed to have a
114 null value.  Strictness applies to all URIs within a uniqueness
115 domain, but some domains may be strict while others are not.
116 .LP
117 It is not possible to set both URIs and legacy slapo\-unique configuration
118 parameters simultaneously. In general, the legacy configuration options
119 control pieces of a single unfiltered subtree domain.
120 .TP
121 .B unique_base <basedn>
122 This legacy configuration parameter should be converted to the
123 .B base dn
124 component of the above
125 .B unique_uri
126 style of parameter.
127 .TP
128 .B unique_ignore <attribute...>
129 This legacy configuration parameter should be converted to a
130 .B unique_uri
131 parameter with
132 .B ignore
133 keyword as described above.
134 .TP
135 .B unique_attributes <attribute...>
136 This legacy configuration parameter should be converted to a
137 .B unique_uri
138 parameter, as described above.
139 .TP
140 .B unique_strict
141 This legacy configuration parameter should be converted to a
142 .B strict
143 keyword prepended to a
144 .B unique_uri
145 parameter, as described above.
146 .SH CAVEATS
147 .LP
148 .B unique_uri
149 cannot be used with the old-style of configuration, and vice versa.
150 .B unique_uri
151 can implement everything the older system can do, however.
152 .LP
153 Typical attributes for the
154 .B ignore ldap:///...
155 URIs are intentionally not hardcoded into the overlay to allow for
156 maximum flexibility in meeting site-specific requirements.
157 .SH FILES
158 .TP
159 ETCDIR/slapd.conf
160 default slapd configuration file
161 .SH SEE ALSO
162 .BR slapd.conf (5),
163 .BR slapd\-config (5).