Store a mac with confirmed sudo passwords, so that they cannot be modified by editing...
[mirror/userdir-ldap.git] / userdir-ldap.schema
1 # Revision history:
2 #
3 # XXX
4 #   - [PP] Now version controlled in db.d.o bzr repository - 2007-12-25
5 #   - [HE] Add 'purpose', 'physicalHost' to debianServer - 2007-12-25
6 #   - [zobel] Add 'VoIP' - 2008-05-10
7 #
8 # 0.7 [RM]
9 #   - Add 'gender' and 'birthDate' to debianDeveloper
10 #   - Add 'mailDisableMessage' to debianAccount
11 #   - Add 'mailDisableMessage', 'mailCallout', 'mailGreylisting', 'mailRBL',
12 #         'mailRHSBL', and 'mailWhitelist' to debianDeveloper and debianRoleAccount
13
14 # 0.6 [JT]
15 #   - Add 'access' as a MAY for debianServer objectclass.
16 #   - Make activity-from a UTF-8 string rather than ASCII.
17 #   - add new debianRoleAccount objectclass.
18 #
19 # 0.5 [JT]
20 #   - Add 'access' as a MAY for debianDeveloper objectclass.
21 #   - Add 'gid' attribute.
22 #   - Make homeDirectory a MAY not MUST for debianAccount.
23 #   - drop userPassword and memberUID MAYs from debianGroup.
24 #   - add SUP top STRUCTURAL to debianGroup.
25 #
26 # 0.4
27 #   - add a UTF8-enabled 'gecos' attribute type, conflicts with RFC2307
28 #   - add debianAccount, which is roughly equivalent to posixAccount but
29 #     permits UTF8 gecos fields
30 #   - add debianGroup, which is the same as above but for posixGroup
31 #
32 # 0.3
33 #   - Remove labeledURI, jpegPhoto from the list of supported 
34 #     attributes; using inetOrgPerson instead of organizationalPerson as
35 #     a structural objectclass gives us both of these, and several other 
36 #     attributes that may be useful.
37 #   - Add echelon attributes for MIA work to the debiandeveloper
38 #     objectclass. (accountcomment,accountstatus)
39 #   - Add specification for debianServer objectclass, used for Debian 
40 #     server listings
41 #
42 # 0.2
43 #   - grammarfied 'allowedHosts' to 'allowedHost' as
44 #      1.3.6.1.4.1.9586.100.4.2.12.
45 #   - add 'privateSub' as 1.3.6.1.4.1.9586.100.4.4.5.
46 #   - add 'jabberJID' as 1.3.6.1.4.1.9586.100.4.2.13.
47 #   - change 'icqUIN' to an integer type (see? I told you it wasn't
48 #     approved for use yet! ;)
49 #
50 # 0.1
51 #   - initial revision
52 #
53 #
54 # Project: db.debian.org
55 # Contact: Debian directory administrators <admin@db.debian.org>
56 # Type:    X.500/LDAP
57 # Section: Project
58 #
59 # enterprise.Debian.project.userdir / 1.3.6.1.4.1.9586.100.4
60 #
61 # .1 - public LDAP objectClasses
62 #   .1 - debianAccount
63 #   .2 - debianGroup
64 #
65 # .2 - public LDAP attributeTypes
66 #   .1 - sshRSAAuthKey
67 #   .2 - activity-from
68 #   .3 - activity-pgp
69 #   .4 - comment
70 #   .5 - icqUin
71 #   .6 - ircNick
72 #   .7 - latitude
73 #   .8 - longitude
74 #   .9 - middlename (mn)
75 #   .10 - onVacation
76 #   .11 - supplementaryGid
77 #   .12 - allowedHost
78 #   .13 - jabberJID
79 #   .14 - access
80 #   .15 - admin
81 #   .16 - architecture
82 #   .17 - bandwidth
83 #   .18 - disk
84 #   .19 - distribution
85 #   .20 - host
86 #   .21 - hostname
87 #   .22 - machine
88 #   .23 - memory
89 #   .24 - sponsor
90 #   .25 - sponsor-admin
91 #   .26 - sshRSAHostKey
92 #   .27 - status
93 #   .28 - gecos
94 #   .29 - gid
95 #   .30 - gender
96 #   .31 - birthdate
97 #   .32 - mailDisableMessage
98 #   .33 - purpose
99 #   .34 - physicalHost
100 #   .35 - VoIP
101 #   .36 - sudoPassword
102 #
103 # .3 - experimental LDAP objectClasses
104 #   .1 - debianDeveloper
105 #   .2 - debianServer
106 #   .3 - debianRoleAccount
107
108 # .4 - experimental LDAP attributeTypes
109 #   .1 - allowedHosts - OBSOLETED
110 #   .2 - dnsZoneEntry
111 #   .3 - emailForward
112 #   .4 - keyFingerPrint
113 #   .5 - privateSub
114 #   .6 - accountComment
115 #   .7 - accountStatus
116 #   .8 - perform callouts
117 #   .9 - perform greylisting
118 #   .11 - DNS RBL
119 #   .12 - RHS RBL
120 #   .13 - whitelist
121
122 # Public attribute types
123 attributetype ( 1.3.6.1.4.1.9586.100.4.2.1 
124         NAME 'sshRSAAuthKey'
125         DESC 'textual form of an SSH public key compatible with authorized_keys'
126         EQUALITY caseIgnoreMatch
127         SUBSTR caseIgnoreSubstringsMatch
128         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
129
130 attributetype ( 1.3.6.1.4.1.9586.100.4.2.2
131         NAME 'activity-from'
132         DESC 'last known activity from user email address'
133         EQUALITY caseExactMatch
134         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
135
136 attributetype ( 1.3.6.1.4.1.9586.100.4.2.3
137         NAME 'activity-pgp'
138         DESC 'last known activity from user PGP key'
139         EQUALITY caseExactIA5Match
140         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
141
142 attributetype ( 1.3.6.1.4.1.9586.100.4.2.4
143         NAME 'comment'
144         DESC 'user-editable comment'
145         EQUALITY caseExactIA5Match
146         SUBSTR caseIgnoreIA5SubstringsMatch
147         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
148
149 attributetype ( 1.3.6.1.4.1.9586.100.4.2.5
150         NAME 'icqUin'
151         DESC 'UIN for ICQ instant messaging system'
152         EQUALITY integerMatch
153         SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
154
155 attributetype ( 1.3.6.1.4.1.9586.100.4.2.6
156         NAME 'ircNick'
157         DESC 'Internet Relay Chat nickname'
158         EQUALITY caseIgnoreIA5Match
159         SUBSTR caseIgnoreIA5SubstringsMatch
160         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
161
162 attributetype ( 1.3.6.1.4.1.9586.100.4.2.7
163         NAME 'latitude'
164         DESC 'latitude coordinate'
165         EQUALITY caseExactIA5Match
166         SUBSTR caseExactIA5SubstringsMatch
167         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
168
169 attributetype ( 1.3.6.1.4.1.9586.100.4.2.8
170         NAME 'longitude'
171         DESC 'longitude coordinate'
172         EQUALITY caseExactIA5Match
173         SUBSTR caseExactIA5SubstringsMatch
174         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
175
176 attributetype ( 1.3.6.1.4.1.9586.100.4.2.9
177         NAME ( 'mn' 'middlename' )
178         SUP name )
179
180 attributetype ( 1.3.6.1.4.1.9586.100.4.2.10
181         NAME 'onVacation'
182         DESC 'vacation message'   
183         EQUALITY caseIgnoreMatch
184         SUBSTR caseIgnoreSubstringsMatch
185         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
186
187 attributetype ( 1.3.6.1.4.1.9586.100.4.2.11
188         NAME 'supplementaryGid'
189         DESC 'additional Unix group id of user'
190         EQUALITY caseIgnoreMatch
191         SUBSTR caseIgnoreSubstringsMatch
192         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
193
194 attributetype ( 1.3.6.1.4.1.9586.100.4.2.12
195         NAME 'allowedHost'
196         DESC 'host name this account is allowed access to'
197         EQUALITY caseIgnoreIA5Match
198         SUBSTR caseIgnoreIA5SubstringsMatch
199         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
200
201 attributetype ( 1.3.6.1.4.1.9586.100.4.2.13
202         NAME 'jabberJID'
203         DESC 'JID for Jabber instant messaging protocol'
204         EQUALITY caseIgnoreIA5Match
205         SUBSTR caseIgnoreIA5SubstringsMatch
206         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
207
208 attributetype ( 1.3.6.1.4.1.9586.100.4.2.14
209         NAME 'access'
210         DESC 'nature of access allowed to server'
211         EQUALITY caseIgnoreMatch
212         SUBSTR caseIgnoreSubstringsMatch
213         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
214
215 attributetype ( 1.3.6.1.4.1.9586.100.4.2.15
216         NAME 'admin'
217         DESC 'email address of server administrator'
218         EQUALITY caseIgnoreIA5Match
219         SUBSTR caseIgnoreIA5SubstringsMatch
220         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
221
222 attributetype ( 1.3.6.1.4.1.9586.100.4.2.16
223         NAME 'architecture'
224         DESC 'hardware architecture of server'
225         EQUALITY caseIgnoreIA5Match
226         SUBSTR caseIgnoreIA5SubstringsMatch
227         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} SINGLE-VALUE )
228
229 attributetype ( 1.3.6.1.4.1.9586.100.4.2.17
230         NAME 'bandwidth'
231         DESC 'type of network connection for server'
232         EQUALITY caseIgnoreMatch
233         SUBSTR caseIgnoreSubstringsMatch
234         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )
235
236 attributetype ( 1.3.6.1.4.1.9586.100.4.2.18
237         NAME 'disk'
238         DESC 'amount of disk space available to server'
239         EQUALITY caseIgnoreMatch
240         SUBSTR caseIgnoreSubstringsMatch
241         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{64} )
242
243 attributetype ( 1.3.6.1.4.1.9586.100.4.2.19
244         NAME 'distribution'
245         DESC 'host OS distribution'
246         EQUALITY caseIgnoreIA5Match
247         SUBSTR caseIgnoreIA5SubstringsMatch
248         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} SINGLE-VALUE )
249
250 #attributetype ( 1.3.6.1.4.1.9586.100.4.2.20
251 #       NAME 'host'
252 #       DESC '(short) host name of server'
253 #       EQUALITY caseIgnoreIA5Match
254 #       SUBSTR caseIgnoreIA5SubstringsMatch
255 #       SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} SINGLE-VALUE )
256
257 attributetype ( 1.3.6.1.4.1.9586.100.4.2.21
258         NAME 'hostname'
259         DESC 'FQDN of the server'
260         EQUALITY caseIgnoreIA5Match
261         SUBSTR caseIgnoreIA5SubstringsMatch
262         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
263
264 attributetype ( 1.3.6.1.4.1.9586.100.4.2.22
265         NAME 'machine'
266         DESC 'description of physical hardware'
267         EQUALITY caseIgnoreMatch
268         SUBSTR caseIgnoreSubstringsMatch
269         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} SINGLE-VALUE )
270
271 attributetype ( 1.3.6.1.4.1.9586.100.4.2.23
272         NAME 'memory'
273         DESC 'amount of RAM available to server'
274         EQUALITY caseIgnoreMatch
275         SUBSTR caseIgnoreSubstringsMatch
276         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{64} )
277
278 attributetype ( 1.3.6.1.4.1.9586.100.4.2.24
279         NAME 'sponsor'
280         DESC 'name of the sponsor of this server'
281         EQUALITY caseIgnoreMatch
282         SUBSTR caseIgnoreSubstringsMatch
283         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
284
285 attributetype ( 1.3.6.1.4.1.9586.100.4.2.25
286         NAME 'sponsor-admin'
287         DESC 'email address of sponsoring server administrator'
288         EQUALITY caseIgnoreIA5Match
289         SUBSTR caseIgnoreIA5SubstringsMatch
290         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
291
292 attributetype ( 1.3.6.1.4.1.9586.100.4.2.26
293         NAME 'sshRSAHostKey'
294         DESC 'textual form of an SSH public host key compatible with known_hosts'
295         EQUALITY caseIgnoreMatch
296         SUBSTR caseIgnoreSubstringsMatch
297         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
298
299 attributetype ( 1.3.6.1.4.1.9586.100.4.2.27
300         NAME 'status'
301         DESC 'administrative status of server'
302         EQUALITY caseIgnoreMatch
303         SUBSTR caseIgnoreSubstringsMatch
304         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
305
306 attributetype ( 1.3.6.1.4.1.9586.100.4.2.28
307         NAME 'gecos'
308         DESC 'The GECOS field; the common name'
309         EQUALITY caseIgnoreMatch
310         SUBSTR caseIgnoreSubstringsMatch
311         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
312
313 attributetype ( 1.3.6.1.4.1.9586.100.4.2.29
314         NAME 'gid'
315         DESC 'Group Name'
316         EQUALITY caseExactIA5Match
317         SUBSTR caseExactIA5SubstringsMatch
318         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
319
320 attributetype ( 1.3.6.1.4.1.9586.100.4.2.30
321         NAME 'gender'
322         DESC 'ISO 5218 representation of human gender'
323         EQUALITY integerMatch
324         SINGLE-VALUE
325         SYNTAX 1.3.6.1.4.1.1466.115.121.1.27{1} )
326
327 attributetype ( 1.3.6.1.4.1.9586.100.4.2.31
328         NAME 'birthDate'
329         DESC 'Date of birth in YYYYMMDD format'
330         EQUALITY numericStringMatch
331         SINGLE-VALUE
332         SYNTAX 1.3.6.1.4.1.1466.115.121.1.36{8} )
333
334 attributetype ( 1.3.6.1.4.1.9586.100.4.2.32
335         NAME 'mailDisableMessage'
336         DESC 'Message returned when all mail is disabled'
337         EQUALITY caseIgnoreIA5Match
338         SUBSTR caseIgnoreIA5SubstringsMatch
339         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
340
341 attributetype ( 1.3.6.1.4.1.9586.100.4.2.33
342         NAME 'purpose'
343         DESC 'purposes of this server'
344         EQUALITY caseIgnoreMatch
345         SUBSTR caseIgnoreSubstringsMatch
346         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
347
348 attributetype ( 1.3.6.1.4.1.9586.100.4.2.34
349         NAME 'physicalHost'
350         DESC 'FQDN of the physical host of this virtual server'
351         EQUALITY caseIgnoreIA5Match
352         SUBSTR caseIgnoreIA5SubstringsMatch
353         SINGLE-VALUE
354         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
355
356 attributetype ( 1.3.6.1.4.1.9586.100.4.2.35
357         NAME 'VoIP'
358         DESC 'VoIP URL to communicate with that person'
359         EQUALITY caseIgnoreIA5Match
360         SUBSTR caseIgnoreIA5SubstringsMatch
361         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
362
363 attributetype ( 1.3.6.1.4.1.9586.100.4.2.36
364         NAME 'sudoPassword'
365         DESC 'sudo password'
366         EQUALITY octetStringMatch
367         SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )
368
369
370 # Public object classes
371
372 objectclass ( 1.3.6.1.4.1.9586.100.4.1.1
373         NAME 'debianAccount'
374         DESC 'Abstraction of an account with POSIX attributes and UTF8 support'
375         SUP top AUXILIARY
376         MUST ( cn $ uid $ uidNumber $ gidNumber )
377         MAY ( userPassword $ loginShell $ gecos $ homeDirectory $ description $ mailDisableMessage $ sudoPassword ) )
378
379 objectclass ( 1.3.6.1.4.1.9586.100.4.1.2
380         NAME 'debianGroup'
381         SUP top STRUCTURAL
382         DESC 'attributes used for Debian groups'
383         MUST ( gid $ gidNumber )
384         MAY ( description ) )
385
386 # Experimental attribute types
387
388 # There are existing schemas for doing DNS in LDAP; would one of
389 # these be better?  c.f. draft-miller-dns-ldap-schema-00 (expired)
390 attributetype ( 1.3.6.1.4.1.9586.100.4.4.2
391         NAME 'dnsZoneEntry'
392         DESC 'DNS zone record for user'
393         EQUALITY octetStringMatch
394         SUBSTR caseIgnoreSubstringsMatch
395         SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )
396
397 # rfc822mailbox (RFC1274) is recommended as a replacement for this in
398 # general.
399 attributetype ( 1.3.6.1.4.1.9586.100.4.4.3
400         NAME 'emailForward'
401         DESC 'forwarding address for email sent to this account'
402         EQUALITY caseIgnoreIA5Match
403         SUBSTR caseIgnoreIA5SubstringsMatch
404         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE)
405
406 # Network Associates also has a schema for PGP keys / key IDs which may
407 # or may not be applicable:
408 # http://www.openldap.org/lists/openldap-devel/200010/msg00071.html
409 attributetype ( 1.3.6.1.4.1.9586.100.4.4.4 
410         NAME 'keyFingerPrint'
411         EQUALITY caseIgnoreMatch  
412         SUBSTR caseIgnoreSubstringsMatch
413         SYNTAX  1.3.6.1.4.1.1466.115.121.1.15 )
414
415 # Rather Debian-specific, not useful to the public.
416 attributetype ( 1.3.6.1.4.1.9586.100.4.4.5 
417         NAME 'privateSub'
418         DESC 'email subscription address for debian-private mailing list'
419         EQUALITY caseIgnoreIA5Match
420         SUBSTR caseIgnoreIA5SubstringsMatch
421         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE)
422
423 # Echelon attributes; re-evaluate later
424 attributetype ( 1.3.6.1.4.1.9586.100.4.4.6
425         NAME 'accountComment'
426         DESC 'additional comments regarding the account status'
427         EQUALITY caseIgnoreIA5Match
428         SUBSTR caseIgnoreIA5SubstringsMatch
429         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
430
431 attributetype ( 1.3.6.1.4.1.9586.100.4.4.7
432         NAME 'accountStatus'
433         DESC 'Debian developer account status'
434         EQUALITY caseIgnoreIA5Match
435         SUBSTR caseIgnoreIA5SubstringsMatch
436         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
437
438 # mail attributes; not public information
439 attributetype ( 1.3.6.1.4.1.9586.100.4.4.8
440         NAME 'mailCallout'
441         DESC 'Whether or not to require a successful callout attempt on email delivery'
442         EQUALITY booleanMatch
443         SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
444
445 attributetype ( 1.3.6.1.4.1.9586.100.4.4.9
446         NAME 'mailGreylisting'
447         DESC 'Whether or not to perform greylisting on email delivery'
448         EQUALITY booleanMatch
449         SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
450
451 attributetype ( 1.3.6.1.4.1.9586.100.4.4.11
452         NAME 'mailRBL'
453         DESC 'RBL sites to check at SMTP accept time'
454         EQUALITY caseIgnoreIA5Match
455         SUBSTR caseIgnoreIA5SubstringsMatch
456         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
457
458 attributetype ( 1.3.6.1.4.1.9586.100.4.4.12
459         NAME 'mailRHSBL'
460         DESC 'RHSBL sites to check at SMTP accept time'
461         EQUALITY caseIgnoreIA5Match
462         SUBSTR caseIgnoreIA5SubstringsMatch
463         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
464
465 attributetype ( 1.3.6.1.4.1.9586.100.4.4.13
466         NAME 'mailWhitelist'
467         DESC 'sites to whitelist from additional SMTP accept time checks'
468         EQUALITY caseIgnoreIA5Match
469         SUBSTR caseIgnoreIA5SubstringsMatch
470         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
471
472 # Experimental objectclasses:
473
474 objectclass ( 1.3.6.1.4.1.9586.100.4.3.1
475         NAME 'debianDeveloper'
476         DESC 'additional account attributes used by Debian'
477         SUP top AUXILIARY
478         MUST ( uid $ cn $ sn )
479         MAY ( accountComment $ accountStatus $ activity-from $
480               activity-pgp $ allowedHost $ comment $ countryName $
481               dnsZoneEntry $ emailForward $ icqUin $ ircNick $
482               jabberJID $ keyFingerPrint $ latitude $ longitude $ mn $
483               onVacation $ privateSub $ sshRSAAuthKey $ supplementaryGid $
484               access $ gender $ birthDate $ mailCallout $ mailGreylisting $
485               mailRBL $ mailRHSBL $ mailWhitelist $ VoIP
486         ) )
487
488 objectclass ( 1.3.6.1.4.1.9586.100.4.3.2
489         NAME 'debianServer'
490         DESC 'Internet-connected server associated with Debian'
491         SUP top STRUCTURAL
492         MUST ( host $ hostname )
493         MAY ( c $ access $ admin $ architecture $ bandwidth $ description $ disk $
494               distribution $ l $ machine $ memory $ sponsor $
495               sponsor-admin $ sshRSAHostKey $ status $ purpose $ physicalHost
496         ) )
497
498 objectclass ( 1.3.6.1.4.1.9586.100.4.3.3
499         NAME 'debianRoleAccount'
500         DESC 'Abstraction of an account with POSIX attributes and UTF8 support'
501         SUP account STRUCTURAL
502         MAY ( emailForward $ supplementaryGid $ allowedHost $ labeledURI $
503               mailCallout $ mailGreylisting $ mailRBL $ mailRHSBL $
504               mailWhitelist
505         ) )