2 <!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
3 <html><head><title>Python: module posix1e</title>
4 </head><body bgcolor="#f0f0f8">
6 <table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
8 <td valign=bottom> <br>
9 <font color="#ffffff" face="helvetica, arial"> <br><big><big><strong>posix1e</strong></big></big></font></td
10 ><td align=right valign=bottom
11 ><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/home/iusty/work/pylibacl/build/lib.linux-x86_64-2.4/posix1e.so">/home/iusty/work/pylibacl/build/lib.linux-x86_64-2.4/posix1e.so</a></font></td></tr></table>
12 <p><tt>POSIX.1e ACLs manipulation<br>
14 This module provides support for manipulating POSIX.1e ACLS<br>
16 Depending on the operating system support for POSIX.1e, <br>
17 the <a href="#ACL">ACL</a> type will have more or less capabilities:<br>
18 - level 1, only basic support, you can create<br>
19 ACLs from files and text descriptions;<br>
20 once created, the type is immutable<br>
21 - level 2, complete support, you can alter<br>
22 the <a href="#ACL">ACL</a> once it is created<br>
24 Also, in level 2, more types are available, corresponding<br>
25 to acl_entry_t (<a href="#Entry">Entry</a> type), acl_permset_t (<a href="#Permset">Permset</a> type).<br>
28 >>> import posix1e<br>
29 >>> acl1 = posix1e.<a href="#ACL">ACL</a>(file="file.txt") <br>
30 >>> print acl1<br>
35 >>> b = posix1e.<a href="#ACL">ACL</a>(text="u::rx,g::-,o::-")<br>
36 >>> print b<br>
41 >>> b.applyto("file.txt")<br>
42 >>> print posix1e.<a href="#ACL">ACL</a>(file="file.txt")<br>
49 <table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
50 <tr bgcolor="#ee77aa">
51 <td colspan=3 valign=bottom> <br>
52 <font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
54 <tr><td bgcolor="#ee77aa"><tt> </tt></td><td> </td>
56 <dt><font face="helvetica, arial"><a href="__builtin__.html#object">__builtin__.object</a>
59 <dt><font face="helvetica, arial"><a href="posix1e.html#ACL">ACL</a>
60 </font></dt><dt><font face="helvetica, arial"><a href="posix1e.html#Entry">Entry</a>
61 </font></dt><dt><font face="helvetica, arial"><a href="posix1e.html#Permset">Permset</a>
66 <table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
67 <tr bgcolor="#ffc8d8">
68 <td colspan=3 valign=bottom> <br>
69 <font color="#000000" face="helvetica, arial"><a name="ACL">class <strong>ACL</strong></a>(<a href="__builtin__.html#object">__builtin__.object</a>)</font></td></tr>
71 <tr bgcolor="#ffc8d8"><td rowspan=2><tt> </tt></td>
72 <td colspan=2><tt>Type which represents a POSIX <a href="#ACL">ACL</a><br>
75 Only one keword parameter should be provided:<br>
76 - file="...", meaning create <a href="#ACL">ACL</a> representing<br>
77 the access <a href="#ACL">ACL</a> of that file<br>
78 - filedef="...", meaning create <a href="#ACL">ACL</a> representing<br>
79 the default <a href="#ACL">ACL</a> of that directory<br>
80 - fd=<int>, meaning create <a href="#ACL">ACL</a> representing<br>
81 the access <a href="#ACL">ACL</a> of that file descriptor<br>
82 - text="...", meaning create <a href="#ACL">ACL</a> from a <br>
83 textual description<br>
84 - acl=<<a href="#ACL">ACL</a> instance>, meaning create a copy<br>
85 of an existing <a href="#ACL">ACL</a> instance<br>
86 - mode=<int>, meaning create an <a href="#ACL">ACL</a> from a numeric mode<br>
87 (e.g. mode=0644) (this is valid only when the C library<br>
88 provides the acl_from_mode call)<br>
89 If no parameters are passed, create an empty <a href="#ACL">ACL</a>; this<br>
90 makes sense only when your OS supports <a href="#ACL">ACL</a> modification<br>
91 (i.e. it implements full POSIX.1e support)<br> </tt></td></tr>
93 <td width="100%">Methods defined here:<br>
94 <dl><dt><a name="ACL-__cmp__"><strong>__cmp__</strong></a>(...)</dt><dd><tt>x.<a href="#ACL-__cmp__">__cmp__</a>(y) <==> cmp(x,y)</tt></dd></dl>
96 <dl><dt><a name="ACL-__eq__"><strong>__eq__</strong></a>(...)</dt><dd><tt>x.<a href="#ACL-__eq__">__eq__</a>(y) <==> x==y</tt></dd></dl>
98 <dl><dt><a name="ACL-__ge__"><strong>__ge__</strong></a>(...)</dt><dd><tt>x.<a href="#ACL-__ge__">__ge__</a>(y) <==> x>=y</tt></dd></dl>
100 <dl><dt><a name="ACL-__getstate__"><strong>__getstate__</strong></a>(...)</dt><dd><tt>Dumps the <a href="#ACL">ACL</a> to an external format.</tt></dd></dl>
102 <dl><dt><a name="ACL-__gt__"><strong>__gt__</strong></a>(...)</dt><dd><tt>x.<a href="#ACL-__gt__">__gt__</a>(y) <==> x>y</tt></dd></dl>
104 <dl><dt><a name="ACL-__init__"><strong>__init__</strong></a>(...)</dt><dd><tt>x.<a href="#ACL-__init__">__init__</a>(...) initializes x; see x.__class__.__doc__ for signature</tt></dd></dl>
106 <dl><dt><a name="ACL-__iter__"><strong>__iter__</strong></a>(...)</dt><dd><tt>x.<a href="#ACL-__iter__">__iter__</a>() <==> iter(x)</tt></dd></dl>
108 <dl><dt><a name="ACL-__le__"><strong>__le__</strong></a>(...)</dt><dd><tt>x.<a href="#ACL-__le__">__le__</a>(y) <==> x<=y</tt></dd></dl>
110 <dl><dt><a name="ACL-__lt__"><strong>__lt__</strong></a>(...)</dt><dd><tt>x.<a href="#ACL-__lt__">__lt__</a>(y) <==> x<y</tt></dd></dl>
112 <dl><dt><a name="ACL-__ne__"><strong>__ne__</strong></a>(...)</dt><dd><tt>x.<a href="#ACL-__ne__">__ne__</a>(y) <==> x!=y</tt></dd></dl>
114 <dl><dt><a name="ACL-__setstate__"><strong>__setstate__</strong></a>(...)</dt><dd><tt>Loads the <a href="#ACL">ACL</a> from an external format.</tt></dd></dl>
116 <dl><dt><a name="ACL-__str__"><strong>__str__</strong></a>(...)</dt><dd><tt>x.<a href="#ACL-__str__">__str__</a>() <==> str(x)</tt></dd></dl>
118 <dl><dt><a name="ACL-append"><strong>append</strong></a>(...)</dt><dd><tt>Append a new <a href="#Entry">Entry</a> to the <a href="#ACL">ACL</a> and return it.<br>
120 This is a convenience function to create a new <a href="#Entry">Entry</a> <br>
121 and append it to the <a href="#ACL">ACL</a>.<br>
122 If a parameter of type <a href="#Entry">Entry</a> instance is given, the <br>
123 entry will be a copy of that one (as if copied with <br>
124 <a href="#Entry">Entry</a>.copy()), otherwise, the new entry will be empty.</tt></dd></dl>
126 <dl><dt><a name="ACL-applyto"><strong>applyto</strong></a>(...)</dt><dd><tt>Apply the <a href="#ACL">ACL</a> to a file or filehandle.<br>
129 - either a filename or a file-like <a href="__builtin__.html#object">object</a> or an integer; this<br>
130 represents the filesystem <a href="__builtin__.html#object">object</a> on which to act<br>
131 - optional flag representing the type of <a href="#ACL">ACL</a> to set, either<br>
132 ACL_TYPE_ACCESS (default) or ACL_TYPE_DEFAULT</tt></dd></dl>
134 <dl><dt><a name="ACL-calc_mask"><strong>calc_mask</strong></a>(...)</dt><dd><tt>Compute the file group class mask.<br>
136 The <a href="#ACL-calc_mask">calc_mask</a>() method calculates and sets the permissions <br>
137 associated with the ACL_MASK <a href="#Entry">Entry</a> of the <a href="#ACL">ACL</a>.<br>
138 The value of the new permissions is the union of the permissions <br>
139 granted by all entries of tag type ACL_GROUP, ACL_GROUP_OBJ, or <br>
140 ACL_USER. If the <a href="#ACL">ACL</a> already contains an ACL_MASK entry, its <br>
141 permissions are overwritten; if it does not contain an ACL_MASK <br>
142 <a href="#Entry">Entry</a>, one is added.<br>
144 The order of existing entries in the <a href="#ACL">ACL</a> is undefined after this <br>
145 function.</tt></dd></dl>
147 <dl><dt><a name="ACL-check"><strong>check</strong></a>(...)</dt><dd><tt>Check the <a href="#ACL">ACL</a> validity.<br>
149 This is a non-portable, Linux specific extension that allow more<br>
150 information to be retrieved in case an <a href="#ACL">ACL</a> is not valid than the<br>
151 validate() method.<br>
153 This method will return either False (the <a href="#ACL">ACL</a> is valid), or a tuple<br>
154 with two elements. The first element is one of the following<br>
156 - ACL_MULTI_ERROR: The <a href="#ACL">ACL</a> contains multiple entries that have a<br>
157 tag type that may occur at most once<br>
158 - ACL_DUPLICATE_ERROR: The <a href="#ACL">ACL</a> contains multiple ACL_USER or <br>
159 ACL_GROUP entries with the same ID<br>
160 - ACL_MISS_ERROR: A required entry is missing<br>
161 - ACL_ENTRY_ERROR: The <a href="#ACL">ACL</a> contains an invalid entry tag type<br>
163 The second element of the tuple is the index of the entry that is<br>
164 invalid (in the same order as by iterating over the <a href="#ACL">ACL</a> entry)</tt></dd></dl>
166 <dl><dt><a name="ACL-delete_entry"><strong>delete_entry</strong></a>(...)</dt><dd><tt>Deletes an entry from the <a href="#ACL">ACL</a>.<br>
168 Note: Only with level 2<br>
170 - the <a href="#Entry">Entry</a> <a href="__builtin__.html#object">object</a> which should be deleted; note that after<br>
171 this function is called, that <a href="__builtin__.html#object">object</a> is unusable any longer<br>
172 and should be deleted</tt></dd></dl>
174 <dl><dt><a name="ACL-next"><strong>next</strong></a>(...)</dt><dd><tt>x.<a href="#ACL-next">next</a>() -> the next value, or raise StopIteration</tt></dd></dl>
176 <dl><dt><a name="ACL-to_any_text"><strong>to_any_text</strong></a>(...)</dt><dd><tt>Convert the <a href="#ACL">ACL</a> to a custom text format.<br>
178 This method encapsulates the acl_to_any_text function. It allows a <br>
179 customized text format to be generated for the <a href="#ACL">ACL</a>. See<br>
180 acl_to_any_text(3) for more details.<br>
183 - prefix: if given, this string will be prepended to all lines<br>
184 - separator: a single character (defaults to '\n'); this will be<br>
185 user to separate the entries in the <a href="#ACL">ACL</a><br>
186 - options: a bitwise combination of:<br>
187 TEXT_ABBREVIATE: use 'u' instead of 'user', 'g' instead of <br>
188 'group', etc.<br>
189 TEXT_NUMERIC_IDS: User and group IDs are included as decimal<br>
190 numbers instead of names<br>
191 TEXT_SOME_EFFECTIVE: Include comments denoting the effective<br>
192 permissions when some are masked<br>
193 TEXT_ALL_EFFECTIVE: Include comments after all <a href="#ACL">ACL</a> entries<br>
194 affected by an ACL_MASK entry<br>
195 TEXT_SMART_INDENT: Used in combination with the _EFFECTIVE<br>
196 options, this will ensure that comments <br>
197 are alligned to the fourth tab position<br>
198 (assuming one tab equal eight spaces</tt></dd></dl>
200 <dl><dt><a name="ACL-valid"><strong>valid</strong></a>(...)</dt><dd><tt>Test the <a href="#ACL">ACL</a> for validity.<br>
202 This method tests the <a href="#ACL">ACL</a> to see if it is a valid <a href="#ACL">ACL</a><br>
203 in terms of the filesystem. More precisely, it checks that:<br>
205 The <a href="#ACL">ACL</a> contains exactly one entry with each of the<br>
206 ACL_USER_OBJ, ACL_GROUP_OBJ, and ACL_OTHER tag types. Entries<br>
207 with ACL_USER and ACL_GROUP tag types may appear zero or more<br>
208 times in an <a href="#ACL">ACL</a>. An <a href="#ACL">ACL</a> that contains entries of ACL_USER or<br>
209 ACL_GROUP tag types must contain exactly one entry of the <br>
210 ACL_MASK tag type. If an <a href="#ACL">ACL</a> contains no entries of<br>
211 ACL_USER or ACL_GROUP tag types, the ACL_MASK entry is optional.<br>
213 All user ID qualifiers must be unique among all entries of<br>
214 the ACL_USER tag type, and all group IDs must be unique among all<br>
215 entries of ACL_GROUP tag type.<br>
217 The method will return 1 for a valid <a href="#ACL">ACL</a> and 0 for an invalid one.<br>
218 This has been chosen because the specification for acl_valid in<br>
219 the POSIX.1e standard documents only one possible value for errno<br>
220 in case of an invalid <a href="#ACL">ACL</a>, so we can't differentiate between<br>
221 classes of errors. Other suggestions are welcome.</tt></dd></dl>
224 Data and other attributes defined here:<br>
225 <dl><dt><strong>__new__</strong> = <built-in method __new__ of type object><dd><tt>T.<a href="#ACL-__new__">__new__</a>(S, ...) -> a new <a href="__builtin__.html#object">object</a> with type S, a subtype of T</tt></dl>
227 </td></tr></table> <p>
228 <table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
229 <tr bgcolor="#ffc8d8">
230 <td colspan=3 valign=bottom> <br>
231 <font color="#000000" face="helvetica, arial"><a name="Entry">class <strong>Entry</strong></a>(<a href="__builtin__.html#object">__builtin__.object</a>)</font></td></tr>
233 <tr bgcolor="#ffc8d8"><td rowspan=2><tt> </tt></td>
234 <td colspan=2><tt>Type which represents an entry in an <a href="#ACL">ACL</a>.<br>
236 The type exists only if the OS has full support for POSIX.1e<br>
237 Can be created either by:<br>
238 e = posix1e.<a href="#Entry">Entry</a>(myACL) # this creates a new entry in the <a href="#ACL">ACL</a><br>
240 for entry in myACL:<br>
241 print entry<br>
243 Note that the <a href="#Entry">Entry</a> keeps a reference to its <a href="#ACL">ACL</a>, so even if <br>
244 you delete the <a href="#ACL">ACL</a>, it won't be cleaned up and will continue to <br>
245 exist until its <a href="#Entry">Entry</a>(ies) will be deleted.<br> </tt></td></tr>
247 <td width="100%">Methods defined here:<br>
248 <dl><dt><a name="Entry-__init__"><strong>__init__</strong></a>(...)</dt><dd><tt>x.<a href="#Entry-__init__">__init__</a>(...) initializes x; see x.__class__.__doc__ for signature</tt></dd></dl>
250 <dl><dt><a name="Entry-__str__"><strong>__str__</strong></a>(...)</dt><dd><tt>x.<a href="#Entry-__str__">__str__</a>() <==> str(x)</tt></dd></dl>
252 <dl><dt><a name="Entry-copy"><strong>copy</strong></a>(...)</dt><dd><tt>Copy an <a href="#ACL">ACL</a> entry.<br>
254 This method sets all the parameters to those of another<br>
255 entry, even one of another's <a href="#ACL">ACL</a><br>
257 - src, instance of type <a href="#Entry">Entry</a></tt></dd></dl>
260 Data and other attributes defined here:<br>
261 <dl><dt><strong>__new__</strong> = <built-in method __new__ of type object><dd><tt>T.<a href="#Entry-__new__">__new__</a>(S, ...) -> a new <a href="__builtin__.html#object">object</a> with type S, a subtype of T</tt></dl>
263 <dl><dt><strong>parent</strong> = <attribute 'parent' of 'posix1e.Entry' objects><dd><tt>The parent <a href="#ACL">ACL</a> of this entry</tt></dl>
265 <dl><dt><strong>permset</strong> = <attribute 'permset' of 'posix1e.Entry' objects><dd><tt>The permission set of this <a href="#ACL">ACL</a> entry</tt></dl>
267 <dl><dt><strong>qualifier</strong> = <attribute 'qualifier' of 'posix1e.Entry' objects><dd><tt>The qualifier of the current entry<br>
269 If the tag type is ACL_USER, this should be a user id.<br>
270 If the tag type if ACL_GROUP, this should be a group id.<br>
271 Else, it doesn't matter.</tt></dl>
273 <dl><dt><strong>tag_type</strong> = <attribute 'tag_type' of 'posix1e.Entry' objects><dd><tt>The tag type of the current entry<br>
275 This is one of:<br>
276 - ACL_UNDEFINED_TAG<br>
277 - ACL_USER_OBJ<br>
278 - ACL_USER<br>
279 - ACL_GROUP_OBJ<br>
280 - ACL_GROUP<br>
281 - ACL_MASK<br>
282 - ACL_OTHER</tt></dl>
284 </td></tr></table> <p>
285 <table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
286 <tr bgcolor="#ffc8d8">
287 <td colspan=3 valign=bottom> <br>
288 <font color="#000000" face="helvetica, arial"><a name="Permset">class <strong>Permset</strong></a>(<a href="__builtin__.html#object">__builtin__.object</a>)</font></td></tr>
290 <tr bgcolor="#ffc8d8"><td rowspan=2><tt> </tt></td>
291 <td colspan=2><tt>Type which represents the permission set in an <a href="#ACL">ACL</a> entry<br>
293 The type exists only if the OS has full support for POSIX.1e<br>
294 Can be created either by:<br>
295 perms = myEntry.permset<br>
297 perms = posix1e.<a href="#Permset">Permset</a>(myEntry)<br>
299 Note that the <a href="#Permset">Permset</a> keeps a reference to its <a href="#Entry">Entry</a>, so even if <br>
300 you delete the entry, it won't be cleaned up and will continue to <br>
301 exist until its <a href="#Permset">Permset</a> will be deleted.<br> </tt></td></tr>
303 <td width="100%">Methods defined here:<br>
304 <dl><dt><a name="Permset-__init__"><strong>__init__</strong></a>(...)</dt><dd><tt>x.<a href="#Permset-__init__">__init__</a>(...) initializes x; see x.__class__.__doc__ for signature</tt></dd></dl>
306 <dl><dt><a name="Permset-__str__"><strong>__str__</strong></a>(...)</dt><dd><tt>x.<a href="#Permset-__str__">__str__</a>() <==> str(x)</tt></dd></dl>
308 <dl><dt><a name="Permset-add"><strong>add</strong></a>(...)</dt><dd><tt>Add a permission to the permission set.<br>
310 The <a href="#Permset-add">add</a>() function adds the permission contained in <br>
311 the argument perm to the permission set. An attempt <br>
312 to add a permission that is already contained in the <br>
313 permission set is not considered an error.<br>
315 - perm a permission (ACL_WRITE, ACL_READ, ACL_EXECUTE, ...<br>
316 Return value:<br>
318 Can raise: IOError</tt></dd></dl>
320 <dl><dt><a name="Permset-clear"><strong>clear</strong></a>(...)</dt><dd><tt>Clear all permissions from the permission set.</tt></dd></dl>
322 <dl><dt><a name="Permset-delete"><strong>delete</strong></a>(...)</dt><dd><tt>Delete a permission from the permission set.<br>
324 The <a href="#Permset-delete">delete</a>() function deletes the permission contained in <br>
325 the argument perm from the permission set. An attempt <br>
326 to delete a permission that is not contained in the <br>
327 permission set is not considered an error.<br>
329 - perm a permission (ACL_WRITE, ACL_READ, ACL_EXECUTE, ...<br>
330 Return value:<br>
332 Can raise: IOError</tt></dd></dl>
334 <dl><dt><a name="Permset-test"><strong>test</strong></a>(...)</dt><dd><tt>Test if a permission exists in the permission set.<br>
336 The <a href="#Permset-test">test</a>() function tests if the permission contained in <br>
337 the argument perm exits the permission set.<br>
339 - perm a permission (ACL_WRITE, ACL_READ, ACL_EXECUTE, ...<br>
340 Return value:<br>
342 Can raise: IOError</tt></dd></dl>
345 Data and other attributes defined here:<br>
346 <dl><dt><strong>__new__</strong> = <built-in method __new__ of type object><dd><tt>T.<a href="#Permset-__new__">__new__</a>(S, ...) -> a new <a href="__builtin__.html#object">object</a> with type S, a subtype of T</tt></dl>
348 <dl><dt><strong>execute</strong> = <attribute 'execute' of 'posix1e.Permset' objects><dd><tt>Execute permsission<br>
350 This is a convenience method of access; the <br>
351 same effect can be achieved using the functions<br>
352 <a href="#Permset-add">add</a>(), <a href="#Permset-test">test</a>(), <a href="#Permset-delete">delete</a>(), and those can take any <br>
353 permission defined by your platform.</tt></dl>
355 <dl><dt><strong>read</strong> = <attribute 'read' of 'posix1e.Permset' objects><dd><tt>Read permsission<br>
357 This is a convenience method of access; the <br>
358 same effect can be achieved using the functions<br>
359 <a href="#Permset-add">add</a>(), <a href="#Permset-test">test</a>(), <a href="#Permset-delete">delete</a>(), and those can take any <br>
360 permission defined by your platform.</tt></dl>
362 <dl><dt><strong>write</strong> = <attribute 'write' of 'posix1e.Permset' objects><dd><tt>Write permsission<br>
364 This is a convenience method of access; the <br>
365 same effect can be achieved using the functions<br>
366 <a href="#Permset-add">add</a>(), <a href="#Permset-test">test</a>(), <a href="#Permset-delete">delete</a>(), and those can take any <br>
367 permission defined by your platform.</tt></dl>
369 </td></tr></table></td></tr></table><p>
370 <table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
371 <tr bgcolor="#eeaa77">
372 <td colspan=3 valign=bottom> <br>
373 <font color="#ffffff" face="helvetica, arial"><big><strong>Functions</strong></big></font></td></tr>
375 <tr><td bgcolor="#eeaa77"><tt> </tt></td><td> </td>
376 <td width="100%"><dl><dt><a name="-delete_default"><strong>delete_default</strong></a>(...)</dt><dd><tt>Delete the default <a href="#ACL">ACL</a> from a directory.<br>
378 This function deletes the default <a href="#ACL">ACL</a> associated with <br>
379 a directory (the <a href="#ACL">ACL</a> which will be ANDed with the mode<br>
380 parameter to the open, creat functions).<br>
382 - a string representing the directory whose default <a href="#ACL">ACL</a><br>
383 should be deleted</tt></dd></dl>
384 </td></tr></table><p>
385 <table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
386 <tr bgcolor="#55aa55">
387 <td colspan=3 valign=bottom> <br>
388 <font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
390 <tr><td bgcolor="#55aa55"><tt> </tt></td><td> </td>
391 <td width="100%"><strong>ACL_DUPLICATE_ERROR</strong> = 8192<br>
392 <strong>ACL_ENTRY_ERROR</strong> = 16384<br>
393 <strong>ACL_EXECUTE</strong> = 1<br>
394 <strong>ACL_GROUP</strong> = 8<br>
395 <strong>ACL_GROUP_OBJ</strong> = 4<br>
396 <strong>ACL_MASK</strong> = 16<br>
397 <strong>ACL_MISS_ERROR</strong> = 12288<br>
398 <strong>ACL_MULTI_ERROR</strong> = 4096<br>
399 <strong>ACL_OTHER</strong> = 32<br>
400 <strong>ACL_READ</strong> = 4<br>
401 <strong>ACL_TYPE_ACCESS</strong> = 32768<br>
402 <strong>ACL_TYPE_DEFAULT</strong> = 16384<br>
403 <strong>ACL_UNDEFINED_TAG</strong> = 0<br>
404 <strong>ACL_USER</strong> = 2<br>
405 <strong>ACL_USER_OBJ</strong> = 1<br>
406 <strong>ACL_WRITE</strong> = 2<br>
407 <strong>TEXT_ABBREVIATE</strong> = 16<br>
408 <strong>TEXT_ALL_EFFECTIVE</strong> = 2<br>
409 <strong>TEXT_NUMERIC_IDS</strong> = 8<br>
410 <strong>TEXT_SMART_INDENT</strong> = 4<br>
411 <strong>TEXT_SOME_EFFECTIVE</strong> = 1</td></tr></table>