1 #ifndef _WIMLIB_SECURITY_DESCRIPTOR_H
2 #define _WIMLIB_SECURITY_DESCRIPTOR_H
4 #include "wimlib/compiler.h"
5 #include "wimlib/types.h"
7 /* Note: the data types in this header are prefixed with wimlib_ to avoid
8 * conflicts with the same types being defined in the libntfs-3g headers. */
10 /* Windows NT security descriptor, in self-relative format */
12 /* Security descriptor revision; should be 1 */
18 /* Bitwise OR of flags defined below, such as SE_DACL_PRESENT */
21 /* Offset of owenr SID structure in the security descriptor */
24 /* Offset of group SID structure in the security descriptor */
27 /* Offset of System Access Control List (SACL) in security descriptor,
28 * or 0 if no SACL is present */
31 /* Offset of Discretionary Access Control List (DACL) in security
32 * descriptor, or 0 if no DACL is present */
34 } _packed_attribute wimlib_SECURITY_DESCRIPTOR_RELATIVE;
36 #define wimlib_SE_OWNER_DEFAULTED 0x0001
37 #define wimlib_SE_GROUP_DEFAULTED 0x0002
38 #define wimlib_SE_DACL_PRESENT 0x0004
39 #define wimlib_SE_DACL_DEFAULTED 0x0008
40 #define wimlib_SE_SACL_PRESENT 0x0010
41 #define wimlib_SE_SACL_DEFAULTED 0x0020
42 #define wimlib_SE_DACL_AUTO_INHERIT_REQ 0x0100
43 #define wimlib_SE_SACL_AUTO_INHERIT_REQ 0x0200
44 #define wimlib_SE_DACL_AUTO_INHERITED 0x0400
45 #define wimlib_SE_SACL_AUTO_INHERITED 0x0800
46 #define wimlib_SE_DACL_PROTECTED 0x1000
47 #define wimlib_SE_SACL_PROTECTED 0x2000
48 #define wimlib_SE_RM_CONTROL_VALID 0x4000
49 #define wimlib_SE_SELF_RELATIVE 0x8000
51 /* Header of a Windows NT access control entry */
56 /* Bitwise OR of inherit ACE flags */
59 /* Size of the access control entry, including this header */
61 } _packed_attribute wimlib_ACE_HEADER;
63 /* Windows NT access control entry to grant rights to a user or group */
65 wimlib_ACE_HEADER hdr;
68 } _packed_attribute wimlib_ACCESS_ALLOWED_ACE;
70 /* Windows NT access control entry to deny rights to a user or group */
72 wimlib_ACE_HEADER hdr;
75 } _packed_attribute wimlib_ACCESS_DENIED_ACE;
77 /* Windows NT access control entry to audit access to the object */
79 wimlib_ACE_HEADER hdr;
82 } _packed_attribute wimlib_SYSTEM_AUDIT_ACE;
85 /* Header of a Windows NT access control list */
87 /* ACL_REVISION or ACL_REVISION_DS */
93 /* Total size of the ACL, including all access control entries */
96 /* Number of access control entry structures that follow the ACL
102 } _packed_attribute wimlib_ACL;
104 /* Windows NT security identifier (user or group) */
108 u8 sub_authority_count;
110 /* Identifies the authority that issued the SID */
111 u8 identifier_authority[6];
113 le32 sub_authority[];
114 } _packed_attribute wimlib_SID;