8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21 /*
22 * Copyright 2014 Garrett D'Amore <garrett@damore.org>
23 *
24 * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
25 * Use is subject to license terms.
26 *
27 * Copyright 2014 Nexenta Systems, Inc. All rights reserved.
28 */
29
30 #ifndef _SYS_ACL_H
31 #define _SYS_ACL_H
32
33 #include <sys/types.h>
34 #include <sys/acl_impl.h>
35
36 #ifdef __cplusplus
37 extern "C" {
38 #endif
39
40 #define MAX_ACL_ENTRIES (1024) /* max entries of each type */
41 typedef struct acl {
42 int a_type; /* the type of ACL entry */
43 uid_t a_id; /* the entry in -uid or gid */
44 o_mode_t a_perm; /* the permission field */
45 } aclent_t;
46
47 typedef struct ace {
141 /*
142 * These are only applicable in a CIFS context.
143 * Here again, same as Windows, but with an ACE_ prefix added.
144 */
145 #define ACE_ACCESS_ALLOWED_COMPOUND_ACE_TYPE 0x04
146 #define ACE_ACCESS_ALLOWED_OBJECT_ACE_TYPE 0x05
147 #define ACE_ACCESS_DENIED_OBJECT_ACE_TYPE 0x06
148 #define ACE_SYSTEM_AUDIT_OBJECT_ACE_TYPE 0x07
149 #define ACE_SYSTEM_ALARM_OBJECT_ACE_TYPE 0x08
150 #define ACE_ACCESS_ALLOWED_CALLBACK_ACE_TYPE 0x09
151 #define ACE_ACCESS_DENIED_CALLBACK_ACE_TYPE 0x0A
152 #define ACE_ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_TYPE 0x0B
153 #define ACE_ACCESS_DENIED_CALLBACK_OBJECT_ACE_TYPE 0x0C
154 #define ACE_SYSTEM_AUDIT_CALLBACK_ACE_TYPE 0x0D
155 #define ACE_SYSTEM_ALARM_CALLBACK_ACE_TYPE 0x0E
156 #define ACE_SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_TYPE 0x0F
157 #define ACE_SYSTEM_ALARM_CALLBACK_OBJECT_ACE_TYPE 0x10
158
159 #define ACE_ALL_TYPES 0x001F
160
161 #ifdef _KERNEL
162
163 typedef struct ace_object {
164 uid_t a_who; /* uid or gid */
165 uint32_t a_access_mask; /* read,write,... */
166 uint16_t a_flags; /* see below */
167 uint16_t a_type; /* allow or deny */
168 uint8_t a_obj_type[16]; /* obj type */
169 uint8_t a_inherit_obj_type[16]; /* inherit obj */
170 } ace_object_t;
171
172 #endif
173
174 #define ACE_ALL_PERMS (ACE_READ_DATA|ACE_LIST_DIRECTORY|ACE_WRITE_DATA| \
175 ACE_ADD_FILE|ACE_APPEND_DATA|ACE_ADD_SUBDIRECTORY|ACE_READ_NAMED_ATTRS| \
176 ACE_WRITE_NAMED_ATTRS|ACE_EXECUTE|ACE_DELETE_CHILD|ACE_READ_ATTRIBUTES| \
177 ACE_WRITE_ATTRIBUTES|ACE_DELETE|ACE_READ_ACL|ACE_WRITE_ACL| \
178 ACE_WRITE_OWNER|ACE_SYNCHRONIZE)
179
180 #define ACE_ALL_WRITE_PERMS (ACE_WRITE_DATA|ACE_APPEND_DATA| \
181 ACE_WRITE_ATTRIBUTES|ACE_WRITE_NAMED_ATTRS|ACE_WRITE_ACL| \
|
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21 /*
22 * Copyright 2014 Garrett D'Amore <garrett@damore.org>
23 *
24 * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
25 * Use is subject to license terms.
26 *
27 * Copyright 2014 Nexenta Systems, Inc. All rights reserved.
28 * Copyright 2017 RackTop Systems.
29 */
30
31 #ifndef _SYS_ACL_H
32 #define _SYS_ACL_H
33
34 #include <sys/types.h>
35 #include <sys/acl_impl.h>
36
37 #ifdef __cplusplus
38 extern "C" {
39 #endif
40
41 #define MAX_ACL_ENTRIES (1024) /* max entries of each type */
42 typedef struct acl {
43 int a_type; /* the type of ACL entry */
44 uid_t a_id; /* the entry in -uid or gid */
45 o_mode_t a_perm; /* the permission field */
46 } aclent_t;
47
48 typedef struct ace {
142 /*
143 * These are only applicable in a CIFS context.
144 * Here again, same as Windows, but with an ACE_ prefix added.
145 */
146 #define ACE_ACCESS_ALLOWED_COMPOUND_ACE_TYPE 0x04
147 #define ACE_ACCESS_ALLOWED_OBJECT_ACE_TYPE 0x05
148 #define ACE_ACCESS_DENIED_OBJECT_ACE_TYPE 0x06
149 #define ACE_SYSTEM_AUDIT_OBJECT_ACE_TYPE 0x07
150 #define ACE_SYSTEM_ALARM_OBJECT_ACE_TYPE 0x08
151 #define ACE_ACCESS_ALLOWED_CALLBACK_ACE_TYPE 0x09
152 #define ACE_ACCESS_DENIED_CALLBACK_ACE_TYPE 0x0A
153 #define ACE_ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_TYPE 0x0B
154 #define ACE_ACCESS_DENIED_CALLBACK_OBJECT_ACE_TYPE 0x0C
155 #define ACE_SYSTEM_AUDIT_CALLBACK_ACE_TYPE 0x0D
156 #define ACE_SYSTEM_ALARM_CALLBACK_ACE_TYPE 0x0E
157 #define ACE_SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_TYPE 0x0F
158 #define ACE_SYSTEM_ALARM_CALLBACK_OBJECT_ACE_TYPE 0x10
159
160 #define ACE_ALL_TYPES 0x001F
161
162 #if defined(_KERNEL) || defined(_FAKE_KERNEL)
163
164 typedef struct ace_object {
165 uid_t a_who; /* uid or gid */
166 uint32_t a_access_mask; /* read,write,... */
167 uint16_t a_flags; /* see below */
168 uint16_t a_type; /* allow or deny */
169 uint8_t a_obj_type[16]; /* obj type */
170 uint8_t a_inherit_obj_type[16]; /* inherit obj */
171 } ace_object_t;
172
173 #endif
174
175 #define ACE_ALL_PERMS (ACE_READ_DATA|ACE_LIST_DIRECTORY|ACE_WRITE_DATA| \
176 ACE_ADD_FILE|ACE_APPEND_DATA|ACE_ADD_SUBDIRECTORY|ACE_READ_NAMED_ATTRS| \
177 ACE_WRITE_NAMED_ATTRS|ACE_EXECUTE|ACE_DELETE_CHILD|ACE_READ_ATTRIBUTES| \
178 ACE_WRITE_ATTRIBUTES|ACE_DELETE|ACE_READ_ACL|ACE_WRITE_ACL| \
179 ACE_WRITE_OWNER|ACE_SYNCHRONIZE)
180
181 #define ACE_ALL_WRITE_PERMS (ACE_WRITE_DATA|ACE_APPEND_DATA| \
182 ACE_WRITE_ATTRIBUTES|ACE_WRITE_NAMED_ATTRS|ACE_WRITE_ACL| \
|