]> git.sur5r.net Git - openldap/blob - doc/man/man5/slapd-sock.5
Note use as an overlay
[openldap] / doc / man / man5 / slapd-sock.5
1 .TH SLAPD-SOCK 5 "RELEASEDATE" "OpenLDAP LDVERSION"
2 .\" Copyright 2007-2011 The OpenLDAP Foundation All Rights Reserved.
3 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
4 .\" $OpenLDAP$
5 .SH NAME
6 slapd\-sock \- Socket backend/overlay to slapd
7 .SH SYNOPSIS
8 ETCDIR/slapd.conf
9 .SH DESCRIPTION
10 The Socket backend to
11 .BR slapd (8)
12 uses an external program to handle queries, similarly to
13 .BR slapd\-shell (5).
14 However, in this case the external program listens on a Unix domain socket.
15 This makes it possible to have a pool of processes, which persist between
16 requests. This allows multithreaded operation and a higher level of
17 efficiency. The external program must have been started independently;
18 .BR slapd (8)
19 itself will not start it.
20
21 This module may also be used as an overlay on top of some other database.
22 Use as an overlay allows external actions to be triggered in response to
23 operations on the main database.
24 .SH CONFIGURATION
25 These
26 .B slapd.conf
27 options apply to the SOCK backend database.
28 That is, they must follow a "database sock" line and come before any
29 subsequent "backend" or "database" lines.
30 Other database options are described in the
31 .BR slapd.conf (5)
32 manual page.
33
34 Alternatively, to use this module as an overlay, these directives must
35 follow an "overlay sock" line within an existing database definition.
36 .TP
37 .B extensions      [ binddn | peername | ssf | connid ]*
38 Enables the sending of additional meta-attributes with each request.
39 .nf
40 binddn: <bound DN>
41 peername: IP=<address>:<port>
42 ssf: <SSF value>
43 connid: <connection ID>
44 .fi
45 .TP
46 .B socketpath      <pathname>
47 Gives the path to a Unix domain socket to which the commands will
48 be sent and from which replies are received.
49 .SH PROTOCOL
50 The protocol is essentially the same as
51 .BR slapd\-shell (5)
52 with the addition of a newline to terminate the command parameters. The
53 following commands are sent:
54 .RS
55 .nf
56 ADD
57 msgid: <message id>
58 <repeat { "suffix:" <database suffix DN> }>
59 <entry in LDIF format>
60 <blank line>
61 .fi
62 .RE
63 .PP
64 .RS
65 .nf
66 BIND
67 msgid: <message id>
68 <repeat { "suffix:" <database suffix DN> }>
69 dn: <DN>
70 method: <method number>
71 credlen: <length of <credentials>>
72 cred: <credentials>
73 <blank line>
74 .fi
75 .RE
76 .PP
77 .RS
78 .nf
79 COMPARE
80 msgid: <message id>
81 <repeat { "suffix:" <database suffix DN> }>
82 dn: <DN>
83 <attribute>: <value>
84 <blank line>
85 .fi
86 .RE
87 .PP
88 .RS
89 .nf
90 DELETE
91 msgid: <message id>
92 <repeat { "suffix:" <database suffix DN> }>
93 dn: <DN>
94 <blank line>
95 .fi
96 .RE
97 .PP
98 .RS
99 .nf
100 MODIFY
101 msgid: <message id>
102 <repeat { "suffix:" <database suffix DN> }>
103 dn: <DN>
104 <repeat {
105     <"add"/"delete"/"replace">: <attribute>
106     <repeat { <attribute>: <value> }>
107     \-
108 }>
109 <blank line>
110 .fi
111 .RE
112 .PP
113 .RS
114 .nf
115 MODRDN
116 msgid: <message id>
117 <repeat { "suffix:" <database suffix DN> }>
118 dn: <DN>
119 newrdn: <new RDN>
120 deleteoldrdn: <0 or 1>
121 <if new superior is specified: "newSuperior: <DN>">
122 <blank line>
123 .fi
124 .RE
125 .PP
126 .RS
127 .nf
128 SEARCH
129 msgid: <message id>
130 <repeat { "suffix:" <database suffix DN> }>
131 base: <base DN>
132 scope: <0-2, see ldap.h>
133 deref: <0-3, see ldap.h>
134 sizelimit: <size limit>
135 timelimit: <time limit>
136 filter: <filter>
137 attrsonly: <0 or 1>
138 attrs: <"all" or space-separated attribute list>
139 <blank line>
140 .fi
141 .RE
142 .PP
143 .RS
144 .nf
145 UNBIND
146 msgid: <message id>
147 <repeat { "suffix:" <database suffix DN> }>
148 <blank line>
149 .fi
150 .RE
151 .LP
152 The commands - except \fBunbind\fP - should output:
153 .RS
154 .nf
155 RESULT
156 code: <integer>
157 matched: <matched DN>
158 info: <text>
159 .fi
160 .RE
161 where only RESULT is mandatory, and then close the socket.
162 The \fBsearch\fP RESULT should be preceded by the entries in LDIF
163 format, each entry followed by a blank line.
164 Lines starting with `#' or `DEBUG:' are ignored.
165 .SH ACCESS CONTROL
166 The
167 .B sock
168 backend does not honor all ACL semantics as described in
169 .BR slapd.access (5).
170 In general, access to objects is checked by using a dummy object
171 that contains only the DN, so access rules that rely on the contents
172 of the object are not honored.
173 In detail:
174 .LP
175 The
176 .B add
177 operation does not require
178 .B write (=w)
179 access to the 
180 .B children
181 pseudo-attribute of the parent entry.
182 .LP
183 The
184 .B bind
185 operation requires 
186 .B auth (=x)
187 access to the 
188 .B entry
189 pseudo-attribute of the entry whose identity is being assessed;
190 .B auth (=x)
191 access to the credentials is not checked, but rather delegated 
192 to the underlying program.
193 .LP
194 The
195 .B compare
196 operation requires 
197 .B compare (=c)
198 access to the 
199 .B entry
200 pseudo-attribute
201 of the object whose value is being asserted;
202 .B compare (=c)
203 access to the attribute whose value is being asserted is not checked.
204 .LP
205 The
206 .B delete
207 operation does not require
208 .B write (=w)
209 access to the 
210 .B children
211 pseudo-attribute of the parent entry.
212 .LP
213 The
214 .B modify
215 operation requires
216 .B write (=w)
217 access to the 
218 .B entry 
219 pseudo-attribute;
220 .B write (=w)
221 access to the specific attributes that are modified is not checked.
222 .LP
223 The
224 .B modrdn
225 operation does not require
226 .B write (=w)
227 access to the 
228 .B children
229 pseudo-attribute of the parent entry, nor to that of the new parent,
230 if different;
231 .B write (=w)
232 access to the distinguished values of the naming attributes
233 is not checked.
234 .LP
235 The
236 .B search 
237 operation does not require
238 .B search (=s)
239 access to the 
240 .B entry
241 pseudo_attribute of the searchBase;
242 .B search (=s)
243 access to the attributes and values used in the filter is not checked.
244
245 .SH EXAMPLE
246 There is an example script in the slapd/back\-sock/ directory
247 in the OpenLDAP source tree.
248 .SH FILES
249 .TP
250 ETCDIR/slapd.conf
251 default slapd configuration file
252 .SH SEE ALSO
253 .BR slapd.conf (5),
254 .BR slapd\-config (5),
255 .BR slapd (8).
256 .SH AUTHOR
257 Brian Candler, with enhancements by Howard Chu