1987da915Sopenharmony_ci#include "types.h"
2987da915Sopenharmony_ci#include "layout.h"
3987da915Sopenharmony_ci#include "sd.h"
4987da915Sopenharmony_ci
5987da915Sopenharmony_ci/**
6987da915Sopenharmony_ci * init_system_file_sd -
7987da915Sopenharmony_ci *
8987da915Sopenharmony_ci * NTFS 3.1 - System files security decriptors
9987da915Sopenharmony_ci * =====================================================
10987da915Sopenharmony_ci *
11987da915Sopenharmony_ci * Create the security descriptor for system file number @sys_file_no and
12987da915Sopenharmony_ci * return a pointer to the descriptor.
13987da915Sopenharmony_ci *
14987da915Sopenharmony_ci * Note the root directory system file (".") is very different and handled by a
15987da915Sopenharmony_ci * different function.
16987da915Sopenharmony_ci *
17987da915Sopenharmony_ci * The sd is returned in *@sd_val and has length *@sd_val_len.
18987da915Sopenharmony_ci *
19987da915Sopenharmony_ci * Do NOT free *@sd_val as it is static memory. This also means that you can
20987da915Sopenharmony_ci * only use *@sd_val until the next call to this function.
21987da915Sopenharmony_ci */
22987da915Sopenharmony_civoid init_system_file_sd(int sys_file_no, u8 **sd_val, int *sd_val_len)
23987da915Sopenharmony_ci{
24987da915Sopenharmony_ci	static u8 sd_array[0x68];
25987da915Sopenharmony_ci	SECURITY_DESCRIPTOR_RELATIVE *sd;
26987da915Sopenharmony_ci	ACL *acl;
27987da915Sopenharmony_ci	ACCESS_ALLOWED_ACE *aa_ace;
28987da915Sopenharmony_ci	SID *sid;
29987da915Sopenharmony_ci	le32 *sub_authorities;
30987da915Sopenharmony_ci
31987da915Sopenharmony_ci	if (sys_file_no < 0) {
32987da915Sopenharmony_ci		*sd_val = NULL;
33987da915Sopenharmony_ci		*sd_val_len = 0;
34987da915Sopenharmony_ci		return;
35987da915Sopenharmony_ci	}
36987da915Sopenharmony_ci	*sd_val = sd_array;
37987da915Sopenharmony_ci	sd = (SECURITY_DESCRIPTOR_RELATIVE*)&sd_array;
38987da915Sopenharmony_ci	sd->revision = 1;
39987da915Sopenharmony_ci	sd->alignment = 0;
40987da915Sopenharmony_ci	sd->control = SE_SELF_RELATIVE | SE_DACL_PRESENT;
41987da915Sopenharmony_ci	*sd_val_len = 0x64;
42987da915Sopenharmony_ci	sd->owner = const_cpu_to_le32(0x48);
43987da915Sopenharmony_ci	sd->group = const_cpu_to_le32(0x54);
44987da915Sopenharmony_ci	sd->sacl = const_cpu_to_le32(0);
45987da915Sopenharmony_ci	sd->dacl = const_cpu_to_le32(0x14);
46987da915Sopenharmony_ci	/*
47987da915Sopenharmony_ci	 * Now at offset 0x14, as specified in the security descriptor, we have
48987da915Sopenharmony_ci	 * the DACL.
49987da915Sopenharmony_ci	 */
50987da915Sopenharmony_ci	acl = (ACL*)((char*)sd + le32_to_cpu(sd->dacl));
51987da915Sopenharmony_ci	acl->revision = 2;
52987da915Sopenharmony_ci	acl->alignment1 = 0;
53987da915Sopenharmony_ci	acl->size = const_cpu_to_le16(0x34);
54987da915Sopenharmony_ci	acl->ace_count = const_cpu_to_le16(2);
55987da915Sopenharmony_ci	acl->alignment2 = const_cpu_to_le16(0);
56987da915Sopenharmony_ci	/*
57987da915Sopenharmony_ci	 * Now at offset 0x1c, just after the DACL's ACL, we have the first
58987da915Sopenharmony_ci	 * ACE of the DACL. The type of the ACE is access allowed.
59987da915Sopenharmony_ci	 */
60987da915Sopenharmony_ci	aa_ace = (ACCESS_ALLOWED_ACE*)((char*)acl + sizeof(ACL));
61987da915Sopenharmony_ci	aa_ace->type = ACCESS_ALLOWED_ACE_TYPE;
62987da915Sopenharmony_ci	aa_ace->flags = 0;
63987da915Sopenharmony_ci	aa_ace->size = const_cpu_to_le16(0x14);
64987da915Sopenharmony_ci	switch (sys_file_no) {
65987da915Sopenharmony_ci	case FILE_AttrDef:
66987da915Sopenharmony_ci	case FILE_Boot:
67987da915Sopenharmony_ci		aa_ace->mask = SYNCHRONIZE | STANDARD_RIGHTS_READ |
68987da915Sopenharmony_ci			FILE_READ_ATTRIBUTES | FILE_READ_EA | FILE_READ_DATA;
69987da915Sopenharmony_ci		break;
70987da915Sopenharmony_ci	default:
71987da915Sopenharmony_ci		aa_ace->mask = SYNCHRONIZE | STANDARD_RIGHTS_WRITE |
72987da915Sopenharmony_ci			FILE_WRITE_ATTRIBUTES | FILE_READ_ATTRIBUTES |
73987da915Sopenharmony_ci			FILE_WRITE_EA | FILE_READ_EA | FILE_APPEND_DATA |
74987da915Sopenharmony_ci			FILE_WRITE_DATA | FILE_READ_DATA;
75987da915Sopenharmony_ci		break;
76987da915Sopenharmony_ci	}
77987da915Sopenharmony_ci	aa_ace->sid.revision = 1;
78987da915Sopenharmony_ci	aa_ace->sid.sub_authority_count = 1;
79987da915Sopenharmony_ci	aa_ace->sid.identifier_authority.value[0] = 0;
80987da915Sopenharmony_ci	aa_ace->sid.identifier_authority.value[1] = 0;
81987da915Sopenharmony_ci	aa_ace->sid.identifier_authority.value[2] = 0;
82987da915Sopenharmony_ci	aa_ace->sid.identifier_authority.value[3] = 0;
83987da915Sopenharmony_ci	aa_ace->sid.identifier_authority.value[4] = 0;
84987da915Sopenharmony_ci	/* SECURITY_NT_SID_AUTHORITY (S-1-5) */
85987da915Sopenharmony_ci	aa_ace->sid.identifier_authority.value[5] = 5;
86987da915Sopenharmony_ci	aa_ace->sid.sub_authority[0] =
87987da915Sopenharmony_ci			const_cpu_to_le32(SECURITY_LOCAL_SYSTEM_RID);
88987da915Sopenharmony_ci	/*
89987da915Sopenharmony_ci	 * Now at offset 0x30 within security descriptor, just after the first
90987da915Sopenharmony_ci	 * ACE of the DACL. All system files, except the root directory, have
91987da915Sopenharmony_ci	 * a second ACE.
92987da915Sopenharmony_ci	 */
93987da915Sopenharmony_ci	/* The second ACE of the DACL. Type is access allowed. */
94987da915Sopenharmony_ci	aa_ace = (ACCESS_ALLOWED_ACE*)((char*)aa_ace +
95987da915Sopenharmony_ci			le16_to_cpu(aa_ace->size));
96987da915Sopenharmony_ci	aa_ace->type = ACCESS_ALLOWED_ACE_TYPE;
97987da915Sopenharmony_ci	aa_ace->flags = 0;
98987da915Sopenharmony_ci	aa_ace->size = const_cpu_to_le16(0x18);
99987da915Sopenharmony_ci	/* Only $AttrDef and $Boot behave differently to everything else. */
100987da915Sopenharmony_ci	switch (sys_file_no) {
101987da915Sopenharmony_ci	case FILE_AttrDef:
102987da915Sopenharmony_ci	case FILE_Boot:
103987da915Sopenharmony_ci		aa_ace->mask = SYNCHRONIZE | STANDARD_RIGHTS_READ |
104987da915Sopenharmony_ci				FILE_READ_ATTRIBUTES | FILE_READ_EA |
105987da915Sopenharmony_ci				FILE_READ_DATA;
106987da915Sopenharmony_ci		break;
107987da915Sopenharmony_ci	default:
108987da915Sopenharmony_ci		aa_ace->mask = SYNCHRONIZE | STANDARD_RIGHTS_READ |
109987da915Sopenharmony_ci				FILE_WRITE_ATTRIBUTES |
110987da915Sopenharmony_ci				FILE_READ_ATTRIBUTES | FILE_WRITE_EA |
111987da915Sopenharmony_ci				FILE_READ_EA | FILE_APPEND_DATA |
112987da915Sopenharmony_ci				FILE_WRITE_DATA | FILE_READ_DATA;
113987da915Sopenharmony_ci		break;
114987da915Sopenharmony_ci	}
115987da915Sopenharmony_ci	aa_ace->sid.revision = 1;
116987da915Sopenharmony_ci	aa_ace->sid.sub_authority_count = 2;
117987da915Sopenharmony_ci	/* SECURITY_NT_SID_AUTHORITY (S-1-5) */
118987da915Sopenharmony_ci	aa_ace->sid.identifier_authority.value[0] = 0;
119987da915Sopenharmony_ci	aa_ace->sid.identifier_authority.value[1] = 0;
120987da915Sopenharmony_ci	aa_ace->sid.identifier_authority.value[2] = 0;
121987da915Sopenharmony_ci	aa_ace->sid.identifier_authority.value[3] = 0;
122987da915Sopenharmony_ci	aa_ace->sid.identifier_authority.value[4] = 0;
123987da915Sopenharmony_ci	aa_ace->sid.identifier_authority.value[5] = 5;
124987da915Sopenharmony_ci	sub_authorities = aa_ace->sid.sub_authority;
125987da915Sopenharmony_ci	*sub_authorities++ =
126987da915Sopenharmony_ci			const_cpu_to_le32(SECURITY_BUILTIN_DOMAIN_RID);
127987da915Sopenharmony_ci	*sub_authorities =
128987da915Sopenharmony_ci			const_cpu_to_le32(DOMAIN_ALIAS_RID_ADMINS);
129987da915Sopenharmony_ci	/*
130987da915Sopenharmony_ci	 * Now at offset 0x48 into the security descriptor, as specified in the
131987da915Sopenharmony_ci	 * security descriptor, we now have the owner SID.
132987da915Sopenharmony_ci	 */
133987da915Sopenharmony_ci	sid = (SID*)((char*)sd + le32_to_cpu(sd->owner));
134987da915Sopenharmony_ci	sid->revision = 1;
135987da915Sopenharmony_ci	sid->sub_authority_count = 1;
136987da915Sopenharmony_ci	/* SECURITY_NT_SID_AUTHORITY (S-1-5) */
137987da915Sopenharmony_ci	sid->identifier_authority.value[0] = 0;
138987da915Sopenharmony_ci	sid->identifier_authority.value[1] = 0;
139987da915Sopenharmony_ci	sid->identifier_authority.value[2] = 0;
140987da915Sopenharmony_ci	sid->identifier_authority.value[3] = 0;
141987da915Sopenharmony_ci	sid->identifier_authority.value[4] = 0;
142987da915Sopenharmony_ci	sid->identifier_authority.value[5] = 5;
143987da915Sopenharmony_ci	sid->sub_authority[0] = const_cpu_to_le32(SECURITY_LOCAL_SYSTEM_RID);
144987da915Sopenharmony_ci	/*
145987da915Sopenharmony_ci	 * Now at offset 0x54 into the security descriptor, as specified in the
146987da915Sopenharmony_ci	 * security descriptor, we have the group SID.
147987da915Sopenharmony_ci	 */
148987da915Sopenharmony_ci	sid = (SID*)((char*)sd + le32_to_cpu(sd->group));
149987da915Sopenharmony_ci	sid->revision = 1;
150987da915Sopenharmony_ci	sid->sub_authority_count = 2;
151987da915Sopenharmony_ci	/* SECURITY_NT_SID_AUTHORITY (S-1-5) */
152987da915Sopenharmony_ci	sid->identifier_authority.value[0] = 0;
153987da915Sopenharmony_ci	sid->identifier_authority.value[1] = 0;
154987da915Sopenharmony_ci	sid->identifier_authority.value[2] = 0;
155987da915Sopenharmony_ci	sid->identifier_authority.value[3] = 0;
156987da915Sopenharmony_ci	sid->identifier_authority.value[4] = 0;
157987da915Sopenharmony_ci	sid->identifier_authority.value[5] = 5;
158987da915Sopenharmony_ci	sub_authorities = sid->sub_authority;
159987da915Sopenharmony_ci	*sub_authorities++ = const_cpu_to_le32(SECURITY_BUILTIN_DOMAIN_RID);
160987da915Sopenharmony_ci	*sub_authorities = const_cpu_to_le32(DOMAIN_ALIAS_RID_ADMINS);
161987da915Sopenharmony_ci}
162987da915Sopenharmony_ci
163987da915Sopenharmony_ci/**
164987da915Sopenharmony_ci * init_root_sd -
165987da915Sopenharmony_ci *
166987da915Sopenharmony_ci * Creates the security_descriptor for the root folder on ntfs 3.1 as created
167987da915Sopenharmony_ci * by Windows Vista (when the format is done from the disk management MMC
168987da915Sopenharmony_ci * snap-in, note this is different from the format done from the disk
169987da915Sopenharmony_ci * properties in Windows Explorer).
170987da915Sopenharmony_ci */
171987da915Sopenharmony_civoid init_root_sd(u8 **sd_val, int *sd_val_len)
172987da915Sopenharmony_ci{
173987da915Sopenharmony_ci	SECURITY_DESCRIPTOR_RELATIVE *sd;
174987da915Sopenharmony_ci	ACL *acl;
175987da915Sopenharmony_ci	ACCESS_ALLOWED_ACE *ace;
176987da915Sopenharmony_ci	SID *sid;
177987da915Sopenharmony_ci	le32 *sub_authorities;
178987da915Sopenharmony_ci
179987da915Sopenharmony_ci	static char sd_array[0x102c];
180987da915Sopenharmony_ci	*sd_val_len = 0x102c;
181987da915Sopenharmony_ci	*sd_val = (u8*)&sd_array;
182987da915Sopenharmony_ci
183987da915Sopenharmony_ci	//security descriptor relative
184987da915Sopenharmony_ci	sd = (SECURITY_DESCRIPTOR_RELATIVE*)sd_array;
185987da915Sopenharmony_ci	sd->revision = SECURITY_DESCRIPTOR_REVISION;
186987da915Sopenharmony_ci	sd->alignment = 0;
187987da915Sopenharmony_ci	sd->control = SE_SELF_RELATIVE | SE_DACL_PRESENT;
188987da915Sopenharmony_ci	sd->owner = const_cpu_to_le32(0x1014);
189987da915Sopenharmony_ci	sd->group = const_cpu_to_le32(0x1020);
190987da915Sopenharmony_ci	sd->sacl = const_cpu_to_le32(0);
191987da915Sopenharmony_ci	sd->dacl = const_cpu_to_le32(sizeof(SECURITY_DESCRIPTOR_RELATIVE));
192987da915Sopenharmony_ci
193987da915Sopenharmony_ci	//acl
194987da915Sopenharmony_ci	acl = (ACL*)((u8*)sd + sizeof(SECURITY_DESCRIPTOR_RELATIVE));
195987da915Sopenharmony_ci	acl->revision = ACL_REVISION;
196987da915Sopenharmony_ci	acl->alignment1 = 0;
197987da915Sopenharmony_ci	acl->size = const_cpu_to_le16(0x1000);
198987da915Sopenharmony_ci	acl->ace_count = const_cpu_to_le16(0x08);
199987da915Sopenharmony_ci	acl->alignment2 = const_cpu_to_le16(0);
200987da915Sopenharmony_ci
201987da915Sopenharmony_ci	//ace1
202987da915Sopenharmony_ci	ace = (ACCESS_ALLOWED_ACE*)((u8*)acl + sizeof(ACL));
203987da915Sopenharmony_ci	ace->type = ACCESS_ALLOWED_ACE_TYPE;
204987da915Sopenharmony_ci	ace->flags = 0;
205987da915Sopenharmony_ci	ace->size = const_cpu_to_le16(0x18);
206987da915Sopenharmony_ci	ace->mask = STANDARD_RIGHTS_ALL | FILE_WRITE_ATTRIBUTES |
207987da915Sopenharmony_ci			 FILE_LIST_DIRECTORY | FILE_WRITE_DATA |
208987da915Sopenharmony_ci			 FILE_ADD_SUBDIRECTORY | FILE_READ_EA | FILE_WRITE_EA |
209987da915Sopenharmony_ci			 FILE_TRAVERSE | FILE_DELETE_CHILD |
210987da915Sopenharmony_ci			 FILE_READ_ATTRIBUTES;
211987da915Sopenharmony_ci	ace->sid.revision = SID_REVISION;
212987da915Sopenharmony_ci	ace->sid.sub_authority_count = 0x02;
213987da915Sopenharmony_ci	/* SECURITY_NT_SID_AUTHORITY (S-1-5) */
214987da915Sopenharmony_ci	ace->sid.identifier_authority.value[0] = 0;
215987da915Sopenharmony_ci	ace->sid.identifier_authority.value[1] = 0;
216987da915Sopenharmony_ci	ace->sid.identifier_authority.value[2] = 0;
217987da915Sopenharmony_ci	ace->sid.identifier_authority.value[3] = 0;
218987da915Sopenharmony_ci	ace->sid.identifier_authority.value[4] = 0;
219987da915Sopenharmony_ci	ace->sid.identifier_authority.value[5] = 5;
220987da915Sopenharmony_ci	sub_authorities = ace->sid.sub_authority;
221987da915Sopenharmony_ci	*sub_authorities++ =
222987da915Sopenharmony_ci			const_cpu_to_le32(SECURITY_BUILTIN_DOMAIN_RID);
223987da915Sopenharmony_ci	*sub_authorities = const_cpu_to_le32(DOMAIN_ALIAS_RID_ADMINS);
224987da915Sopenharmony_ci
225987da915Sopenharmony_ci	//ace2
226987da915Sopenharmony_ci	ace = (ACCESS_ALLOWED_ACE*)((u8*)ace + le16_to_cpu(ace->size));
227987da915Sopenharmony_ci	ace->type = ACCESS_ALLOWED_ACE_TYPE;
228987da915Sopenharmony_ci	ace->flags = OBJECT_INHERIT_ACE | CONTAINER_INHERIT_ACE |
229987da915Sopenharmony_ci			INHERIT_ONLY_ACE;
230987da915Sopenharmony_ci	ace->size = const_cpu_to_le16(0x18);
231987da915Sopenharmony_ci	ace->mask = GENERIC_ALL;
232987da915Sopenharmony_ci	ace->sid.revision = SID_REVISION;
233987da915Sopenharmony_ci	ace->sid.sub_authority_count = 0x02;
234987da915Sopenharmony_ci	/* SECURITY_NT_SID_AUTHORITY (S-1-5) */
235987da915Sopenharmony_ci	ace->sid.identifier_authority.value[0] = 0;
236987da915Sopenharmony_ci	ace->sid.identifier_authority.value[1] = 0;
237987da915Sopenharmony_ci	ace->sid.identifier_authority.value[2] = 0;
238987da915Sopenharmony_ci	ace->sid.identifier_authority.value[3] = 0;
239987da915Sopenharmony_ci	ace->sid.identifier_authority.value[4] = 0;
240987da915Sopenharmony_ci	ace->sid.identifier_authority.value[5] = 5;
241987da915Sopenharmony_ci	sub_authorities = ace->sid.sub_authority;
242987da915Sopenharmony_ci	*sub_authorities++ =
243987da915Sopenharmony_ci			const_cpu_to_le32(SECURITY_BUILTIN_DOMAIN_RID);
244987da915Sopenharmony_ci	*sub_authorities = const_cpu_to_le32(DOMAIN_ALIAS_RID_ADMINS);
245987da915Sopenharmony_ci
246987da915Sopenharmony_ci	//ace3
247987da915Sopenharmony_ci	ace = (ACCESS_ALLOWED_ACE*)((u8*)ace + le16_to_cpu(ace->size));
248987da915Sopenharmony_ci	ace->type = ACCESS_ALLOWED_ACE_TYPE;
249987da915Sopenharmony_ci	ace->flags = 0;
250987da915Sopenharmony_ci	ace->size = const_cpu_to_le16(0x14);
251987da915Sopenharmony_ci	ace->mask = STANDARD_RIGHTS_ALL | FILE_WRITE_ATTRIBUTES |
252987da915Sopenharmony_ci			 FILE_LIST_DIRECTORY | FILE_WRITE_DATA |
253987da915Sopenharmony_ci			 FILE_ADD_SUBDIRECTORY | FILE_READ_EA | FILE_WRITE_EA |
254987da915Sopenharmony_ci			 FILE_TRAVERSE | FILE_DELETE_CHILD |
255987da915Sopenharmony_ci			 FILE_READ_ATTRIBUTES;
256987da915Sopenharmony_ci	ace->sid.revision = SID_REVISION;
257987da915Sopenharmony_ci	ace->sid.sub_authority_count = 0x01;
258987da915Sopenharmony_ci	/* SECURITY_NT_SID_AUTHORITY (S-1-5) */
259987da915Sopenharmony_ci	ace->sid.identifier_authority.value[0] = 0;
260987da915Sopenharmony_ci	ace->sid.identifier_authority.value[1] = 0;
261987da915Sopenharmony_ci	ace->sid.identifier_authority.value[2] = 0;
262987da915Sopenharmony_ci	ace->sid.identifier_authority.value[3] = 0;
263987da915Sopenharmony_ci	ace->sid.identifier_authority.value[4] = 0;
264987da915Sopenharmony_ci	ace->sid.identifier_authority.value[5] = 5;
265987da915Sopenharmony_ci	ace->sid.sub_authority[0] =
266987da915Sopenharmony_ci			const_cpu_to_le32(SECURITY_LOCAL_SYSTEM_RID);
267987da915Sopenharmony_ci
268987da915Sopenharmony_ci	//ace4
269987da915Sopenharmony_ci	ace = (ACCESS_ALLOWED_ACE*)((u8*)ace + le16_to_cpu(ace->size));
270987da915Sopenharmony_ci	ace->type = ACCESS_ALLOWED_ACE_TYPE;
271987da915Sopenharmony_ci	ace->flags = OBJECT_INHERIT_ACE | CONTAINER_INHERIT_ACE |
272987da915Sopenharmony_ci			INHERIT_ONLY_ACE;
273987da915Sopenharmony_ci	ace->size = const_cpu_to_le16(0x14);
274987da915Sopenharmony_ci	ace->mask = GENERIC_ALL;
275987da915Sopenharmony_ci	ace->sid.revision = SID_REVISION;
276987da915Sopenharmony_ci	ace->sid.sub_authority_count = 0x01;
277987da915Sopenharmony_ci	/* SECURITY_NT_SID_AUTHORITY (S-1-5) */
278987da915Sopenharmony_ci	ace->sid.identifier_authority.value[0] = 0;
279987da915Sopenharmony_ci	ace->sid.identifier_authority.value[1] = 0;
280987da915Sopenharmony_ci	ace->sid.identifier_authority.value[2] = 0;
281987da915Sopenharmony_ci	ace->sid.identifier_authority.value[3] = 0;
282987da915Sopenharmony_ci	ace->sid.identifier_authority.value[4] = 0;
283987da915Sopenharmony_ci	ace->sid.identifier_authority.value[5] = 5;
284987da915Sopenharmony_ci	ace->sid.sub_authority[0] =
285987da915Sopenharmony_ci			const_cpu_to_le32(SECURITY_LOCAL_SYSTEM_RID);
286987da915Sopenharmony_ci
287987da915Sopenharmony_ci	//ace5
288987da915Sopenharmony_ci	ace = (ACCESS_ALLOWED_ACE*)((char*)ace + le16_to_cpu(ace->size));
289987da915Sopenharmony_ci	ace->type = ACCESS_ALLOWED_ACE_TYPE;
290987da915Sopenharmony_ci	ace->flags = 0;
291987da915Sopenharmony_ci	ace->size = const_cpu_to_le16(0x14);
292987da915Sopenharmony_ci	ace->mask = SYNCHRONIZE | READ_CONTROL | DELETE |
293987da915Sopenharmony_ci			FILE_WRITE_ATTRIBUTES | FILE_READ_ATTRIBUTES |
294987da915Sopenharmony_ci			FILE_TRAVERSE | FILE_WRITE_EA | FILE_READ_EA |
295987da915Sopenharmony_ci			FILE_ADD_SUBDIRECTORY | FILE_ADD_FILE |
296987da915Sopenharmony_ci			FILE_LIST_DIRECTORY;
297987da915Sopenharmony_ci	ace->sid.revision = SID_REVISION;
298987da915Sopenharmony_ci	ace->sid.sub_authority_count = 0x01;
299987da915Sopenharmony_ci	/* SECURITY_NT_SID_AUTHORITY (S-1-5) */
300987da915Sopenharmony_ci	ace->sid.identifier_authority.value[0] = 0;
301987da915Sopenharmony_ci	ace->sid.identifier_authority.value[1] = 0;
302987da915Sopenharmony_ci	ace->sid.identifier_authority.value[2] = 0;
303987da915Sopenharmony_ci	ace->sid.identifier_authority.value[3] = 0;
304987da915Sopenharmony_ci	ace->sid.identifier_authority.value[4] = 0;
305987da915Sopenharmony_ci	ace->sid.identifier_authority.value[5] = 5;
306987da915Sopenharmony_ci	ace->sid.sub_authority[0] =
307987da915Sopenharmony_ci			const_cpu_to_le32(SECURITY_AUTHENTICATED_USER_RID);
308987da915Sopenharmony_ci
309987da915Sopenharmony_ci	//ace6
310987da915Sopenharmony_ci	ace = (ACCESS_ALLOWED_ACE*)((u8*)ace + le16_to_cpu(ace->size));
311987da915Sopenharmony_ci	ace->type = ACCESS_ALLOWED_ACE_TYPE;
312987da915Sopenharmony_ci	ace->flags = OBJECT_INHERIT_ACE | CONTAINER_INHERIT_ACE |
313987da915Sopenharmony_ci			INHERIT_ONLY_ACE;
314987da915Sopenharmony_ci	ace->size = const_cpu_to_le16(0x14);
315987da915Sopenharmony_ci	ace->mask = GENERIC_READ | GENERIC_WRITE | GENERIC_EXECUTE | DELETE;
316987da915Sopenharmony_ci	ace->sid.revision = SID_REVISION;
317987da915Sopenharmony_ci	ace->sid.sub_authority_count = 0x01;
318987da915Sopenharmony_ci	/* SECURITY_NT_SID_AUTHORITY (S-1-5) */
319987da915Sopenharmony_ci	ace->sid.identifier_authority.value[0] = 0;
320987da915Sopenharmony_ci	ace->sid.identifier_authority.value[1] = 0;
321987da915Sopenharmony_ci	ace->sid.identifier_authority.value[2] = 0;
322987da915Sopenharmony_ci	ace->sid.identifier_authority.value[3] = 0;
323987da915Sopenharmony_ci	ace->sid.identifier_authority.value[4] = 0;
324987da915Sopenharmony_ci	ace->sid.identifier_authority.value[5] = 5;
325987da915Sopenharmony_ci	ace->sid.sub_authority[0] =
326987da915Sopenharmony_ci			const_cpu_to_le32(SECURITY_AUTHENTICATED_USER_RID);
327987da915Sopenharmony_ci
328987da915Sopenharmony_ci	//ace7
329987da915Sopenharmony_ci	ace = (ACCESS_ALLOWED_ACE*)((u8*)ace + le16_to_cpu(ace->size));
330987da915Sopenharmony_ci	ace->type = ACCESS_ALLOWED_ACE_TYPE;
331987da915Sopenharmony_ci	ace->flags = 0;
332987da915Sopenharmony_ci	ace->size = const_cpu_to_le16(0x18);
333987da915Sopenharmony_ci	ace->mask = SYNCHRONIZE | READ_CONTROL | FILE_READ_ATTRIBUTES |
334987da915Sopenharmony_ci			FILE_TRAVERSE | FILE_READ_EA | FILE_LIST_DIRECTORY;
335987da915Sopenharmony_ci	ace->sid.revision = SID_REVISION;
336987da915Sopenharmony_ci	ace->sid.sub_authority_count = 0x02;
337987da915Sopenharmony_ci	/* SECURITY_NT_SID_AUTHORITY (S-1-5) */
338987da915Sopenharmony_ci	ace->sid.identifier_authority.value[0] = 0;
339987da915Sopenharmony_ci	ace->sid.identifier_authority.value[1] = 0;
340987da915Sopenharmony_ci	ace->sid.identifier_authority.value[2] = 0;
341987da915Sopenharmony_ci	ace->sid.identifier_authority.value[3] = 0;
342987da915Sopenharmony_ci	ace->sid.identifier_authority.value[4] = 0;
343987da915Sopenharmony_ci	ace->sid.identifier_authority.value[5] = 5;
344987da915Sopenharmony_ci	sub_authorities = ace->sid.sub_authority;
345987da915Sopenharmony_ci	*sub_authorities++ =
346987da915Sopenharmony_ci			const_cpu_to_le32(SECURITY_BUILTIN_DOMAIN_RID);
347987da915Sopenharmony_ci	*sub_authorities = const_cpu_to_le32(DOMAIN_ALIAS_RID_USERS);
348987da915Sopenharmony_ci
349987da915Sopenharmony_ci	//ace8
350987da915Sopenharmony_ci	ace = (ACCESS_ALLOWED_ACE*)((u8*)ace + le16_to_cpu(ace->size));
351987da915Sopenharmony_ci	ace->type = ACCESS_ALLOWED_ACE_TYPE;
352987da915Sopenharmony_ci	ace->flags = OBJECT_INHERIT_ACE | CONTAINER_INHERIT_ACE |
353987da915Sopenharmony_ci			INHERIT_ONLY_ACE;
354987da915Sopenharmony_ci	ace->size = const_cpu_to_le16(0x18);
355987da915Sopenharmony_ci	ace->mask = GENERIC_READ | GENERIC_EXECUTE;
356987da915Sopenharmony_ci	ace->sid.revision = SID_REVISION;
357987da915Sopenharmony_ci	ace->sid.sub_authority_count = 0x02;
358987da915Sopenharmony_ci	/* SECURITY_NT_SID_AUTHORITY (S-1-5) */
359987da915Sopenharmony_ci	ace->sid.identifier_authority.value[0] = 0;
360987da915Sopenharmony_ci	ace->sid.identifier_authority.value[1] = 0;
361987da915Sopenharmony_ci	ace->sid.identifier_authority.value[2] = 0;
362987da915Sopenharmony_ci	ace->sid.identifier_authority.value[3] = 0;
363987da915Sopenharmony_ci	ace->sid.identifier_authority.value[4] = 0;
364987da915Sopenharmony_ci	ace->sid.identifier_authority.value[5] = 5;
365987da915Sopenharmony_ci	sub_authorities = ace->sid.sub_authority;
366987da915Sopenharmony_ci	*sub_authorities++ =
367987da915Sopenharmony_ci			const_cpu_to_le32(SECURITY_BUILTIN_DOMAIN_RID);
368987da915Sopenharmony_ci	*sub_authorities = const_cpu_to_le32(DOMAIN_ALIAS_RID_USERS);
369987da915Sopenharmony_ci
370987da915Sopenharmony_ci	//owner sid
371987da915Sopenharmony_ci	sid = (SID*)((char*)sd + le32_to_cpu(sd->owner));
372987da915Sopenharmony_ci	sid->revision = 0x01;
373987da915Sopenharmony_ci	sid->sub_authority_count = 0x01;
374987da915Sopenharmony_ci	/* SECURITY_NT_SID_AUTHORITY (S-1-5) */
375987da915Sopenharmony_ci	sid->identifier_authority.value[0] = 0;
376987da915Sopenharmony_ci	sid->identifier_authority.value[1] = 0;
377987da915Sopenharmony_ci	sid->identifier_authority.value[2] = 0;
378987da915Sopenharmony_ci	sid->identifier_authority.value[3] = 0;
379987da915Sopenharmony_ci	sid->identifier_authority.value[4] = 0;
380987da915Sopenharmony_ci	sid->identifier_authority.value[5] = 5;
381987da915Sopenharmony_ci	sid->sub_authority[0] = const_cpu_to_le32(SECURITY_LOCAL_SYSTEM_RID);
382987da915Sopenharmony_ci
383987da915Sopenharmony_ci	//group sid
384987da915Sopenharmony_ci	sid = (SID*)((char*)sd + le32_to_cpu(sd->group));
385987da915Sopenharmony_ci	sid->revision = 0x01;
386987da915Sopenharmony_ci	sid->sub_authority_count = 0x01;
387987da915Sopenharmony_ci	/* SECURITY_NT_SID_AUTHORITY (S-1-5) */
388987da915Sopenharmony_ci	sid->identifier_authority.value[0] = 0;
389987da915Sopenharmony_ci	sid->identifier_authority.value[1] = 0;
390987da915Sopenharmony_ci	sid->identifier_authority.value[2] = 0;
391987da915Sopenharmony_ci	sid->identifier_authority.value[3] = 0;
392987da915Sopenharmony_ci	sid->identifier_authority.value[4] = 0;
393987da915Sopenharmony_ci	sid->identifier_authority.value[5] = 5;
394987da915Sopenharmony_ci	sid->sub_authority[0] = const_cpu_to_le32(SECURITY_LOCAL_SYSTEM_RID);
395987da915Sopenharmony_ci}
396987da915Sopenharmony_ci
397987da915Sopenharmony_ci/**
398987da915Sopenharmony_ci * init_secure_sds -
399987da915Sopenharmony_ci *
400987da915Sopenharmony_ci * NTFS 3.1 - System files security decriptors
401987da915Sopenharmony_ci * ===========================================
402987da915Sopenharmony_ci * Create the security descriptor entries in $SDS data stream like they
403987da915Sopenharmony_ci * are in a partition, newly formatted with windows 2003
404987da915Sopenharmony_ci */
405987da915Sopenharmony_civoid init_secure_sds(char *sd_val)
406987da915Sopenharmony_ci{
407987da915Sopenharmony_ci	SECURITY_DESCRIPTOR_HEADER *sds;
408987da915Sopenharmony_ci	SECURITY_DESCRIPTOR_RELATIVE *sd;
409987da915Sopenharmony_ci	ACL *acl;
410987da915Sopenharmony_ci	ACCESS_ALLOWED_ACE *ace;
411987da915Sopenharmony_ci	SID *sid;
412987da915Sopenharmony_ci
413987da915Sopenharmony_ci/*
414987da915Sopenharmony_ci * security descriptor #1
415987da915Sopenharmony_ci */
416987da915Sopenharmony_ci	//header
417987da915Sopenharmony_ci	sds = (SECURITY_DESCRIPTOR_HEADER*)((char*)sd_val);
418987da915Sopenharmony_ci	sds->hash = const_cpu_to_le32(0xF80312F0);
419987da915Sopenharmony_ci	sds->security_id = const_cpu_to_le32(0x0100);
420987da915Sopenharmony_ci	sds->offset = const_cpu_to_le64(0x00);
421987da915Sopenharmony_ci	sds->length = const_cpu_to_le32(0x7C);
422987da915Sopenharmony_ci	//security descriptor relative
423987da915Sopenharmony_ci	sd = (SECURITY_DESCRIPTOR_RELATIVE*)((char*)sds +
424987da915Sopenharmony_ci			sizeof(SECURITY_DESCRIPTOR_HEADER));
425987da915Sopenharmony_ci	sd->revision = 0x01;
426987da915Sopenharmony_ci	sd->alignment = 0x00;
427987da915Sopenharmony_ci	sd->control = SE_SELF_RELATIVE | SE_DACL_PRESENT;
428987da915Sopenharmony_ci	sd->owner = const_cpu_to_le32(0x48);
429987da915Sopenharmony_ci	sd->group = const_cpu_to_le32(0x58);
430987da915Sopenharmony_ci	sd->sacl = const_cpu_to_le32(0x00);
431987da915Sopenharmony_ci	sd->dacl = const_cpu_to_le32(0x14);
432987da915Sopenharmony_ci
433987da915Sopenharmony_ci	//acl
434987da915Sopenharmony_ci	acl = (ACL*)((char*)sd + sizeof(SECURITY_DESCRIPTOR_RELATIVE));
435987da915Sopenharmony_ci	acl->revision = 0x02;
436987da915Sopenharmony_ci	acl->alignment1 = 0x00;
437987da915Sopenharmony_ci	acl->size = const_cpu_to_le16(0x34);
438987da915Sopenharmony_ci	acl->ace_count = const_cpu_to_le16(0x02);
439987da915Sopenharmony_ci	acl->alignment2 = const_cpu_to_le16(0x00);
440987da915Sopenharmony_ci
441987da915Sopenharmony_ci	//ace1
442987da915Sopenharmony_ci	ace = (ACCESS_ALLOWED_ACE*)((char*)acl + sizeof(ACL));
443987da915Sopenharmony_ci	ace->type = 0x00;
444987da915Sopenharmony_ci	ace->flags = 0x00;
445987da915Sopenharmony_ci	ace->size = const_cpu_to_le16(0x14);
446987da915Sopenharmony_ci	ace->mask = const_cpu_to_le32(0x120089);
447987da915Sopenharmony_ci	ace->sid.revision = 0x01;
448987da915Sopenharmony_ci	ace->sid.sub_authority_count = 0x01;
449987da915Sopenharmony_ci	/* SECURITY_NT_SID_AUTHORITY (S-1-5) */
450987da915Sopenharmony_ci	ace->sid.identifier_authority.value[0] = 0;
451987da915Sopenharmony_ci	ace->sid.identifier_authority.value[1] = 0;
452987da915Sopenharmony_ci	ace->sid.identifier_authority.value[2] = 0;
453987da915Sopenharmony_ci	ace->sid.identifier_authority.value[3] = 0;
454987da915Sopenharmony_ci	ace->sid.identifier_authority.value[4] = 0;
455987da915Sopenharmony_ci	ace->sid.identifier_authority.value[5] = 5;
456987da915Sopenharmony_ci	ace->sid.sub_authority[0] =
457987da915Sopenharmony_ci			const_cpu_to_le32(SECURITY_LOCAL_SYSTEM_RID);
458987da915Sopenharmony_ci	//ace2
459987da915Sopenharmony_ci	ace = (ACCESS_ALLOWED_ACE*)((char*)ace + le16_to_cpu(ace->size));
460987da915Sopenharmony_ci	ace->type = 0x00;
461987da915Sopenharmony_ci	ace->flags = 0x00;
462987da915Sopenharmony_ci	ace->size = const_cpu_to_le16(0x18);
463987da915Sopenharmony_ci	ace->mask = const_cpu_to_le32(0x120089);
464987da915Sopenharmony_ci	ace->sid.revision = 0x01;
465987da915Sopenharmony_ci	ace->sid.sub_authority_count = 0x02;
466987da915Sopenharmony_ci	/* SECURITY_NT_SID_AUTHORITY (S-1-5) */
467987da915Sopenharmony_ci	ace->sid.identifier_authority.value[0] = 0;
468987da915Sopenharmony_ci	ace->sid.identifier_authority.value[1] = 0;
469987da915Sopenharmony_ci	ace->sid.identifier_authority.value[2] = 0;
470987da915Sopenharmony_ci	ace->sid.identifier_authority.value[3] = 0;
471987da915Sopenharmony_ci	ace->sid.identifier_authority.value[4] = 0;
472987da915Sopenharmony_ci	ace->sid.identifier_authority.value[5] = 5;
473987da915Sopenharmony_ci	ace->sid.sub_authority[0] =
474987da915Sopenharmony_ci		const_cpu_to_le32(SECURITY_BUILTIN_DOMAIN_RID);
475987da915Sopenharmony_ci	ace->sid.sub_authority[1] =
476987da915Sopenharmony_ci		const_cpu_to_le32(DOMAIN_ALIAS_RID_ADMINS);
477987da915Sopenharmony_ci
478987da915Sopenharmony_ci	//owner sid
479987da915Sopenharmony_ci	sid = (SID*)((char*)sd + le32_to_cpu(sd->owner));
480987da915Sopenharmony_ci	sid->revision = 0x01;
481987da915Sopenharmony_ci	sid->sub_authority_count = 0x02;
482987da915Sopenharmony_ci	/* SECURITY_NT_SID_AUTHORITY (S-1-5) */
483987da915Sopenharmony_ci	sid->identifier_authority.value[0] = 0;
484987da915Sopenharmony_ci	sid->identifier_authority.value[1] = 0;
485987da915Sopenharmony_ci	sid->identifier_authority.value[2] = 0;
486987da915Sopenharmony_ci	sid->identifier_authority.value[3] = 0;
487987da915Sopenharmony_ci	sid->identifier_authority.value[4] = 0;
488987da915Sopenharmony_ci	sid->identifier_authority.value[5] = 5;
489987da915Sopenharmony_ci	sid->sub_authority[0] =
490987da915Sopenharmony_ci		const_cpu_to_le32(SECURITY_BUILTIN_DOMAIN_RID);
491987da915Sopenharmony_ci	sid->sub_authority[1] =
492987da915Sopenharmony_ci		const_cpu_to_le32(DOMAIN_ALIAS_RID_ADMINS);
493987da915Sopenharmony_ci	//group sid
494987da915Sopenharmony_ci	sid = (SID*)((char*)sd + le32_to_cpu(sd->group));
495987da915Sopenharmony_ci	sid->revision = 0x01;
496987da915Sopenharmony_ci	sid->sub_authority_count = 0x02;
497987da915Sopenharmony_ci	/* SECURITY_NT_SID_AUTHORITY (S-1-5) */
498987da915Sopenharmony_ci	sid->identifier_authority.value[0] = 0;
499987da915Sopenharmony_ci	sid->identifier_authority.value[1] = 0;
500987da915Sopenharmony_ci	sid->identifier_authority.value[2] = 0;
501987da915Sopenharmony_ci	sid->identifier_authority.value[3] = 0;
502987da915Sopenharmony_ci	sid->identifier_authority.value[4] = 0;
503987da915Sopenharmony_ci	sid->identifier_authority.value[5] = 5;
504987da915Sopenharmony_ci	sid->sub_authority[0] =
505987da915Sopenharmony_ci		const_cpu_to_le32(SECURITY_BUILTIN_DOMAIN_RID);
506987da915Sopenharmony_ci	sid->sub_authority[1] =
507987da915Sopenharmony_ci		const_cpu_to_le32(DOMAIN_ALIAS_RID_ADMINS);
508987da915Sopenharmony_ci/*
509987da915Sopenharmony_ci * security descriptor #2
510987da915Sopenharmony_ci */
511987da915Sopenharmony_ci	//header
512987da915Sopenharmony_ci	sds = (SECURITY_DESCRIPTOR_HEADER*)((char*)sd_val + 0x80);
513987da915Sopenharmony_ci	sds->hash = const_cpu_to_le32(0xB32451);
514987da915Sopenharmony_ci	sds->security_id = const_cpu_to_le32(0x0101);
515987da915Sopenharmony_ci	sds->offset = const_cpu_to_le64(0x80);
516987da915Sopenharmony_ci	sds->length = const_cpu_to_le32(0x7C);
517987da915Sopenharmony_ci
518987da915Sopenharmony_ci	//security descriptor relative
519987da915Sopenharmony_ci	sd = (SECURITY_DESCRIPTOR_RELATIVE*)((char*)sds +
520987da915Sopenharmony_ci		 sizeof(SECURITY_DESCRIPTOR_HEADER));
521987da915Sopenharmony_ci	sd->revision = 0x01;
522987da915Sopenharmony_ci	sd->alignment = 0x00;
523987da915Sopenharmony_ci	sd->control = SE_SELF_RELATIVE | SE_DACL_PRESENT;
524987da915Sopenharmony_ci	sd->owner = const_cpu_to_le32(0x48);
525987da915Sopenharmony_ci	sd->group = const_cpu_to_le32(0x58);
526987da915Sopenharmony_ci	sd->sacl = const_cpu_to_le32(0x00);
527987da915Sopenharmony_ci	sd->dacl = const_cpu_to_le32(0x14);
528987da915Sopenharmony_ci
529987da915Sopenharmony_ci	//acl
530987da915Sopenharmony_ci	acl = (ACL*)((char*)sd + sizeof(SECURITY_DESCRIPTOR_RELATIVE));
531987da915Sopenharmony_ci	acl->revision = 0x02;
532987da915Sopenharmony_ci	acl->alignment1 = 0x00;
533987da915Sopenharmony_ci	acl->size = const_cpu_to_le16(0x34);
534987da915Sopenharmony_ci	acl->ace_count = const_cpu_to_le16(0x02);
535987da915Sopenharmony_ci	acl->alignment2 = const_cpu_to_le16(0x00);
536987da915Sopenharmony_ci
537987da915Sopenharmony_ci	//ace1
538987da915Sopenharmony_ci	ace = (ACCESS_ALLOWED_ACE*)((char*)acl + sizeof(ACL));
539987da915Sopenharmony_ci	ace->type = 0x00;
540987da915Sopenharmony_ci	ace->flags = 0x00;
541987da915Sopenharmony_ci	ace->size = const_cpu_to_le16(0x14);
542987da915Sopenharmony_ci	ace->mask = const_cpu_to_le32(0x12019F);
543987da915Sopenharmony_ci	ace->sid.revision = 0x01;
544987da915Sopenharmony_ci	ace->sid.sub_authority_count = 0x01;
545987da915Sopenharmony_ci	/* SECURITY_NT_SID_AUTHORITY (S-1-5) */
546987da915Sopenharmony_ci	ace->sid.identifier_authority.value[0] = 0;
547987da915Sopenharmony_ci	ace->sid.identifier_authority.value[1] = 0;
548987da915Sopenharmony_ci	ace->sid.identifier_authority.value[2] = 0;
549987da915Sopenharmony_ci	ace->sid.identifier_authority.value[3] = 0;
550987da915Sopenharmony_ci	ace->sid.identifier_authority.value[4] = 0;
551987da915Sopenharmony_ci	ace->sid.identifier_authority.value[5] = 5;
552987da915Sopenharmony_ci	ace->sid.sub_authority[0] =
553987da915Sopenharmony_ci		const_cpu_to_le32(SECURITY_LOCAL_SYSTEM_RID);
554987da915Sopenharmony_ci	//ace2
555987da915Sopenharmony_ci	ace = (ACCESS_ALLOWED_ACE*)((char*)ace + le16_to_cpu(ace->size));
556987da915Sopenharmony_ci	ace->type = 0x00;
557987da915Sopenharmony_ci	ace->flags = 0x00;
558987da915Sopenharmony_ci	ace->size = const_cpu_to_le16(0x18);
559987da915Sopenharmony_ci	ace->mask = const_cpu_to_le32(0x12019F);
560987da915Sopenharmony_ci	ace->sid.revision = 0x01;
561987da915Sopenharmony_ci	ace->sid.sub_authority_count = 0x02;
562987da915Sopenharmony_ci	/* SECURITY_NT_SID_AUTHORITY (S-1-5) */
563987da915Sopenharmony_ci	ace->sid.identifier_authority.value[0] = 0;
564987da915Sopenharmony_ci	ace->sid.identifier_authority.value[1] = 0;
565987da915Sopenharmony_ci	ace->sid.identifier_authority.value[2] = 0;
566987da915Sopenharmony_ci	ace->sid.identifier_authority.value[3] = 0;
567987da915Sopenharmony_ci	ace->sid.identifier_authority.value[4] = 0;
568987da915Sopenharmony_ci	ace->sid.identifier_authority.value[5] = 5;
569987da915Sopenharmony_ci	ace->sid.sub_authority[0] =
570987da915Sopenharmony_ci		const_cpu_to_le32(SECURITY_BUILTIN_DOMAIN_RID);
571987da915Sopenharmony_ci	ace->sid.sub_authority[1] =
572987da915Sopenharmony_ci		const_cpu_to_le32(DOMAIN_ALIAS_RID_ADMINS);
573987da915Sopenharmony_ci
574987da915Sopenharmony_ci	//owner sid
575987da915Sopenharmony_ci	sid = (SID*)((char*)sd + le32_to_cpu(sd->owner));
576987da915Sopenharmony_ci	sid->revision = 0x01;
577987da915Sopenharmony_ci	sid->sub_authority_count = 0x02;
578987da915Sopenharmony_ci	/* SECURITY_NT_SID_AUTHORITY (S-1-5) */
579987da915Sopenharmony_ci	sid->identifier_authority.value[0] = 0;
580987da915Sopenharmony_ci	sid->identifier_authority.value[1] = 0;
581987da915Sopenharmony_ci	sid->identifier_authority.value[2] = 0;
582987da915Sopenharmony_ci	sid->identifier_authority.value[3] = 0;
583987da915Sopenharmony_ci	sid->identifier_authority.value[4] = 0;
584987da915Sopenharmony_ci	sid->identifier_authority.value[5] = 5;
585987da915Sopenharmony_ci	sid->sub_authority[0] =
586987da915Sopenharmony_ci		const_cpu_to_le32(SECURITY_BUILTIN_DOMAIN_RID);
587987da915Sopenharmony_ci	sid->sub_authority[1] =
588987da915Sopenharmony_ci		const_cpu_to_le32(DOMAIN_ALIAS_RID_ADMINS);
589987da915Sopenharmony_ci
590987da915Sopenharmony_ci	//group sid
591987da915Sopenharmony_ci	sid = (SID*)((char*)sd + le32_to_cpu(sd->group));
592987da915Sopenharmony_ci	sid->revision = 0x01;
593987da915Sopenharmony_ci	sid->sub_authority_count = 0x02;
594987da915Sopenharmony_ci	/* SECURITY_NT_SID_AUTHORITY (S-1-5) */
595987da915Sopenharmony_ci	sid->identifier_authority.value[0] = 0;
596987da915Sopenharmony_ci	sid->identifier_authority.value[1] = 0;
597987da915Sopenharmony_ci	sid->identifier_authority.value[2] = 0;
598987da915Sopenharmony_ci	sid->identifier_authority.value[3] = 0;
599987da915Sopenharmony_ci	sid->identifier_authority.value[4] = 0;
600987da915Sopenharmony_ci	sid->identifier_authority.value[5] = 5;
601987da915Sopenharmony_ci	sid->sub_authority[0] =
602987da915Sopenharmony_ci		const_cpu_to_le32(SECURITY_BUILTIN_DOMAIN_RID);
603987da915Sopenharmony_ci	sid->sub_authority[1] =
604987da915Sopenharmony_ci		const_cpu_to_le32(DOMAIN_ALIAS_RID_ADMINS);
605987da915Sopenharmony_ci
606987da915Sopenharmony_ci	return;
607987da915Sopenharmony_ci}
608