8322 nl: misleading-indentation
[unleashed/tickless.git] / usr / src / man / man3sec / acl_totext.3sec
blob6e55c2323c0f8d364ad5c3e42df2b1edca5ec75e
1 '\" te
2 .\" Copyright (c) 20068 Sun Microsystems, Inc. All Rights Reserved.
3 .\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License").  You may not use this file except in compliance with the License.
4 .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.  See the License for the specific language governing permissions and limitations under the License.
5 .\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE.  If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
6 .TH ACL_TOTEXT 3SEC "Jun 16, 2008"
7 .SH NAME
8 acl_totext, acl_fromtext \- convert internal representation  to or from
9 external representation
10 .SH SYNOPSIS
11 .LP
12 .nf
13 cc [ \fIflag\fR\&.\|.\|. ] \fIfile\fR\&.\|.\|. \fB-lsec\fR [ \fIlibrary\fR\&.\|.\|. ]
14 #include <sys/acl.h>
16 \fBchar *\fR\fBacl_totext\fR(\fBacl_t *\fR\fIaclp\fR, \fBint\fR \fIflags\fR);
17 .fi
19 .LP
20 .nf
21 \fBint\fR \fBacl_fromtext\fR(\fBchar *\fR\fIacltextp\fR, \fBacl_t **\fR\fIaclp\fR);
22 .fi
24 .SH DESCRIPTION
25 .sp
26 .LP
27 The \fBacl_totext()\fR function converts an internal ACL representation pointed
28 to by \fIaclp\fR into an external ACL representation. The memory for the
29 external text string is obtained using \fBmalloc\fR(3C). The caller is
30 responsible for freeing the memory upon completion.
31 .sp
32 .LP
33 The format of the external ACL is controlled by the \fIflags\fR argument.
34 Values for \fIflags\fR are constructed by a bitwise-inclusive-OR of \fIflags\fR
35 from the following list, defined in <\fBsys/acl.h\fR>.
36 .sp
37 .ne 2
38 .na
39 \fB\fBACL_COMPACT_FMT\fR\fR
40 .ad
41 .RS 19n
42 For NFSv4 ACLs, the ACL entries will be formatted using the compact ACL format
43 detailed in \fBls\fR(1) for the \fB-V\fR option.
44 .RE
46 .sp
47 .ne 2
48 .na
49 \fB\fBACL_APPEND_ID\fR\fR
50 .ad
51 .RS 19n
52 Append the \fBuid\fR or \fBgid\fR for additional user or group entries.  This
53 flag is used to construt ACL entries in a manner that is suitable for archive
54 utilities such as \fBtar\fR(1). When the ACL is translated from the external
55 format to internal representation using \fBacl_fromtext()\fR, the appended ID
56 will be used to populate the \fBuid\fR or \fBgid\fR field of the ACL entry when
57 the user or group name does not exist on the host system. The appended id will
58 be ignored when the user or group name does exist on the system.
59 .RE
61 .sp
62 .ne 2
63 .na
64 \fB\fBACL_SID_FMT\fR\fR
65 .ad
66 .RS 19n
67 For NFSv4 ACLs, the ACL entries for user or group entries will use the
68 \fBusersid\fR or \fBgroupsid\fR format when the "id" field in the ACL entry is
69 an ephemeral \fBuid\fR or \fBgid\fR.  The raw \fBsid\fR format will only be
70 used when the "id" cannot be resolved to a windows name.
71 .RE
73 .sp
74 .LP
75 The \fBacl_fromtext()\fR function converts an external ACL representation
76 pointed to by \fIacltextp\fR into an internal ACL representation. The memory
77 for the list of ACL entries is obtained using \fBmalloc\fR(3C). The caller is
78 responsible for freeing the memory upon completion. Depending on type of ACLs a
79 file system supports, one of two external external representations are
80 possible. For POSIX draft file systems such as ufs, the external representation
81 is described in \fBacltotext\fR(3SEC). The external ACL representation For
82 NFSv4-style ACLs is detailed as follows.
83 .sp
84 .LP
85 Each \fBacl_entry\fR contains one ACL entry. The external representation of an
86 ACL entry contains three, four or five colon separated fields. The first field
87 contains the ACL entry type. The entry type keywords are defined as:
88 .sp
89 .ne 2
90 .na
91 \fB\fBeveryone@\fR\fR
92 .ad
93 .RS 13n
94 This ACL entry specifies the access granted to any user or group that does not
95 match any previous ACL entry.
96 .RE
98 .sp
99 .ne 2
101 \fB\fBgroup\fR\fR
103 .RS 13n
104 This ACL entry with a GID specifies the access granted to a additional group of
105 the object.
109 .ne 2
111 \fB\fBgroup@\fR\fR
113 .RS 13n
114 This ACL entry with no GID specified in the ACL entry field specifies the
115 access granted to the owning group of the object.
119 .ne 2
121 \fB\fBgroupsid\fR\fR
123 .RS 13n
124 This ACL entry with a SID or Windows name specifies the access granted to a
125 Windows group. This type of entry is for a CIFS server created file.
129 .ne 2
131 \fB\fBowner@\fR\fR
133 .RS 13n
134 This ACL entry with no UID specified in the ACL entry field specifies the
135 access granted to the owner of the object.
139 .ne 2
141 \fB\fBsid\fR\fR
143 .RS 13n
144 This ACL entry with a SID or Windows name when the entry could be either a
145 group or a user.
149 .ne 2
151 \fB\fBuser\fR\fR
153 .RS 13n
154 This ACL entry with a UID specifies the access granted to a additional user of
155 the object.
159 .ne 2
161 \fB\fBusersid\fR\fR
163 .RS 13n
164 This ACL entry with a SID or Windows name specifies the access granted to a
165 Windows user. This type of entry is for a CIFS server created file.
170 The second field contains the ACL entry ID, and is used only for user or group
171 ACL entries. This field is not used for \fBowner@\fR, \fBgroup@\fR, or
172 \fBeveryone@\fR entries.
174 .ne 2
176 \fB\fBuid\fR\fR
178 .RS 7n
179 This field contains a user-name or user-ID. If the user-name cannot be resolved
180 to a UID, then the entry is assumed to be a numeric UID.
184 .ne 2
186 \fB\fBgid\fR\fR
188 .RS 7n
189 This field contains a group-name or group-ID. If the group-name can't be
190 resolved to a GID, then the entry is assumed to be a numeric GID.
195 The third field contains the discretionary access permissions. The format of
196 the permissions depends on whether \fBACL_COMPACT_FMT\fR is specified. When the
197 \fIflags\fR field does not request \fBACL_COMPACT_FMT\fR, the following format
198 is used with a forward slash (/) separating the permissions.
200 .ne 2
202 \fB\fBadd_file\fR\fR
204 .RS 20n
205 Add a file to a directory.
209 .ne 2
211 \fB\fBadd_subdirectory\fR\fR
213 .RS 20n
214 Add a subdirectory.
218 .ne 2
220 \fB\fBappend\fR\fR
222 .RS 20n
223 Append data.
227 .ne 2
229 \fB\fBdelete\fR\fR
231 .RS 20n
232 Delete.
236 .ne 2
238 \fB\fBdelete_child\fR\fR
240 .RS 20n
241 Delete child.
245 .ne 2
247 \fB\fBexecute\fR\fR
249 .RS 20n
250 Execute permission.
254 .ne 2
256 \fB\fBlist_directory\fR\fR
258 .RS 20n
259 List a directory.
263 .ne 2
265 \fB\fBread_acl\fR\fR
267 .RS 20n
268 Read ACL.
272 .ne 2
274 \fB\fBread_data\fR\fR
276 .RS 20n
277 Read permission.
281 .ne 2
283 \fB\fBread_attributes\fR\fR
285 .RS 20n
286 Read attributes.
290 .ne 2
292 \fB\fBread_xattr\fR\fR
294 .RS 20n
295 Read named attributes.
299 .ne 2
301 \fB\fBsynchronize\fR\fR
303 .RS 20n
304 Synchronize.
308 .ne 2
310 \fB\fBwrite_acl\fR\fR
312 .RS 20n
313 Write ACL.
317 .ne 2
319 \fB\fBwrite_attributes\fR\fR
321 .RS 20n
322 Write attributes.
326 .ne 2
328 \fB\fBwrite_data\fR\fR
330 .RS 20n
331 Write permission.
335 .ne 2
337 \fB\fBwrite_owner\fR\fR
339 .RS 20n
340 Write owner.
344 .ne 2
346 \fB\fBwrite_xattr\fR\fR
348 .RS 20n
349 Write named attributes.
354 This format allows permissions to be specified as, for example:
355 \fBread_data\fR/\fBread_xattr\fR/\fBread_attributes\fR.
358 When \fBACL_COMPACT_FMT\fR is specified, the permissions consist of 14 unique
359 letters.  A hyphen (-) character is used to indicate that the permission at
360 that position is not specified.
362 .ne 2
364 \fB\fBa\fR\fR
366 .RS 5n
367 read attributes
371 .ne 2
373 \fB\fBA\fR\fR
375 .RS 5n
376 write attributes
380 .ne 2
382 \fB\fBc\fR\fR
384 .RS 5n
385 read ACL
389 .ne 2
391 \fB\fBC\fR\fR
393 .RS 5n
394 write ACL
398 .ne 2
400 \fB\fBd\fR\fR
402 .RS 5n
403 delete
407 .ne 2
409 \fB\fBD\fR\fR
411 .RS 5n
412 delete child
416 .ne 2
418 \fB\fBo\fR\fR
420 .RS 5n
421 write owner
425 .ne 2
427 \fB\fBp\fR\fR
429 .RS 5n
430 append
434 .ne 2
436 \fB\fBr\fR\fR
438 .RS 5n
439 read_data
443 .ne 2
445 \fB\fBR\fR\fR
447 .RS 5n
448 read named attributes
452 .ne 2
454 \fB\fBs\fR\fR
456 .RS 5n
457 synchronize
461 .ne 2
463 \fB\fBw\fR\fR
465 .RS 5n
466 write_data
470 .ne 2
472 \fB\fBW\fR\fR
474 .RS 5n
475 write named attributes
479 .ne 2
481 \fB\fBx\fR\fR
483 .RS 5n
484 execute
489 This format allows compact permissions to be represented as, for example:
490 \fBrw--d-a-------\fR
493 The fourth field is optional when \fBACL_COMPACT_FMT\fR is not specified, in
494 which case the field will be present only when the ACL entry has inheritance
495 flags set. The following is the list of inheritance flags separated by a slash
496 (/) character.
498 .ne 2
500 \fB\fBdir_inherit\fR\fR
502 .RS 16n
503 \fBACE_DIRECTORY_INHERIT_ACE\fR
507 .ne 2
509 \fB\fBfile_inherit\fR\fR
511 .RS 16n
512 \fBACE_FILE_INHERIT_ACE\fR
516 .ne 2
518 \fB\fBinherit_only\fR\fR
520 .RS 16n
521 \fBACE_INHERIT_ONLY_ACE\fR
525 .ne 2
527 \fB\fBno_propagate\fR\fR
529 .RS 16n
530 \fBACE_NO_PROPAGATE_INHERIT_ACE\fR
535 When \fBACL_COMPACT_FMT\fR is specified the inheritance will always be present
536 and is represented as positional arguments. A hyphen (-) character is used to
537 indicate that the inheritance flag at that position is not specified.
539 .ne 2
541 \fB\fBd\fR\fR
543 .RS 5n
544 \fBdir_inherit\fR
548 .ne 2
550 \fB\fBf\fR\fR
552 .RS 5n
553 \fBfile_inherit\fR
557 .ne 2
559 \fB\fBF\fR\fR
561 .RS 5n
562 failed access (not currently supported)
566 .ne 2
568 \fB\fBi\fR\fR
570 .RS 5n
571 \fBinherit_only\fR
575 .ne 2
577 \fB\fBn\fR\fR
579 .RS 5n
580 \fBno_propagate\fR
584 .ne 2
586 \fB\fBS\fR\fR
588 .RS 5n
589 successful access (not currently supported)
594 The fifth field contains the type of the ACE (\fBallow\fR or \fBdeny\fR):
596 .ne 2
598 \fB\fBallow\fR\fR
600 .RS 9n
601 The mask specified in field three should be allowed.
605 .ne 2
607 \fB\fBdeny\fR\fR
609 .RS 9n
610 The mask specified in field three should be denied.
613 .SH RETURN VALUES
616 Upon successful completion, the \fBacl_totext()\fR function returns a pointer
617 to a text string. Otherwise, it returns \fINULL\fR.
620 Upon successful completion, the \fBacl_fromtext()\fR function returns 0.
621 Otherwise, the return value is set to one of the following:
623 .ne 2
625 \fB\fBEACL_FIELD_NOT_BLANK\fR\fR
627 .RS 28n
628 A field that should be blank is not blank.
632 .ne 2
634 \fB\fBEACL_FLAGS_ERROR\fR\fR
636 .RS 28n
637 An invalid ACL flag was specified.
641 .ne 2
643 \fB\fBEACL_INHERIT_ERROR\fR\fR
645 .RS 28n
646 An invalid inheritance field was specified.
650 .ne 2
652 \fB\fBEACL_INVALID_ACCESS_TYPE\fR\fR
654 .RS 28n
655 An invalid access type was specified.
659 .ne 2
661 \fB\fBEACL_INVALID_STR\fR\fR
663 .RS 28n
664 The string is \fINULL\fR.
668 .ne 2
670 \fB\fBEACL_INVALID_USER_GROUP\fR\fR
672 .RS 28n
673 The required user or group name not found.
677 .ne 2
679 \fB\fBEACL_MISSING_FIELDS\fR\fR
681 .RS 28n
682 The ACL needs more fields to be specified.
686 .ne 2
688 \fB\fBEACL_PERM_MASK_ERROR\fR\fR
690 .RS 28n
691 The permission mask is invalid.
695 .ne 2
697 \fB\fBEACL_UNKNOWN_DATA\fR\fR
699 .RS 28n
700 Unknown data was found in the ACL.
703 .SH EXAMPLES
705 \fBExample 1 \fRExamples of permissions when \fBACL_COMPACT_FMT\fR is not
706 specified.
708 .in +2
710 user:joe:read_data/write_data:file_inherit/dir_inherit:allow
712 .in -2
716 .in +2
718 owner@:read_acl:allow,user:tom:read_data:file_inherit/inherit_only:deny
720 .in -2
724 \fBExample 2 \fRExamples of permissions when \fBACL_COMPACT_FMT\fR is
725 specified.
727 .in +2
729 user:joe:rw------------:fd----:allow
731 .in -2
735 .in +2
737 owner@:----------c---:------allow,user:tom:r-------------:f-i---:deny
739 .in -2
742 .SH ATTRIBUTES
745 See \fBattributes\fR(5) for descriptions of the following attributes:
750 box;
751 c | c
752 l | l .
753 ATTRIBUTE TYPE  ATTRIBUTE VALUE
755 Interface Stability     Committed
757 MT-Level        Safe
760 .SH SEE ALSO
763 \fBls\fR(1), \fBtar\fR(1), \fBacl\fR(2), \fBmalloc\fR(3C),
764 \fBaclfromtext\fR(3SEC), \fBacl\fR(5), \fBattributes\fR(5)