📄 security_descriptor.html
字号:
<td>一般读</td>
<td>所有需要读取文件的事</td>
</tr>
</table>
<h2>SID (安全标识符)</h2>
<p>
一个典型的SID看起来象:S-1-5-21-646518322-1873620750-619646970-1110
</p>
<p>它由'S-p-q-r-s-t-u-v'组成。</p>
<table border="1" summary="" cellspacing="0">
<tr>
<td>S</td>
<td>安全</td>
</tr>
<tr>
<td>p</td>
<td>修订号 (当前是1)</td>
</tr>
<tr>
<td>q</td>
<td>NT 著作权. 这个数值分为6个字节 (48 比特 数字)。</td>
</tr>
<tr>
<td>r - v</td>
<td>NT 子著作权 (在这里可以有多个)</td>
</tr>
</table>
<p>磁盘上的SID存为:<br>
S-1-5-21-646518322-1873620750-619646970-1110<br>
十六进制形式为:<br>
S-1-5-15-26891632-6fad2f0e-24ef0ffa-456 (5 个子著作权)</p>
<table border="1" summary="" cellspacing="0">
<tr>
<td>0x00</td>
<td>01</td>
<td>05</td>
<td>00</td>
<td>00</td>
<td>00</td>
<td>00</td>
<td>00</td>
<td>05</td>
</tr>
<tr>
<td>0x08</td>
<td>15</td>
<td>00</td>
<td>00</td>
<td>00</td>
<td>32</td>
<td>16</td>
<td>89</td>
<td>26</td>
</tr>
<tr>
<td>0x10</td>
<td>0e</td>
<td>2f</td>
<td>ad</td>
<td>6f</td>
<td>fa</td>
<td>0f</td>
<td>ef</td>
<td>24</td>
</tr>
<tr>
<td>0x18</td>
<td>56</td>
<td>04</td>
<td>00</td>
<td>00</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>
<p>这是一个可变长度的结构。可以更多或更少,子著作权使结构更大或更小。</p>
<h3>安全描述符控制标记</h3>
<table border="1" summary="" cellspacing="0">
<tr>
<th class="numeric">标记</th>
<th>描述</th>
</tr>
<tr>
<td class="numeric">0x0001</td>
<td>默认所有者</td>
</tr>
<tr>
<td class="numeric">0x0002</td>
<td>默认群组</td>
</tr>
<tr>
<td class="numeric">0x0004</td>
<td>当前的DACL</td>
</tr>
<tr>
<td class="numeric">0x0008</td>
<td>默认的DACL</td>
</tr>
<tr>
<td class="numeric">0x0010</td>
<td>当前的SACL</td>
</tr>
<tr>
<td class="numeric">0x0020</td>
<td>默认的 SACL</td>
</tr>
<tr>
<td class="numeric">0x0100</td>
<td>要求自动延续的DACL</td>
</tr>
<tr>
<td class="numeric">0x0200</td>
<td>要求自动延续的SACL</td>
</tr>
<tr>
<td class="numeric">0x0400</td>
<td>自动延续的DACL</td>
</tr>
<tr>
<td class="numeric">0x0800</td>
<td>自动延续的SACL</td>
</tr>
<tr>
<td class="numeric">0x1000</td>
<td>DACL 保护</td>
</tr>
<tr>
<td class="numeric">0x2000</td>
<td>SACL 保护</td>
</tr>
<tr>
<td class="numeric">0x4000</td>
<td>RM 控制有效</td>
</tr>
<tr>
<td class="numeric">0x8000</td>
<td>自相关的</td>
</tr>
</table>
<h3>默认的所有者</h3>
<p>
在设置时,这个布尔数学系统的标记用所有者域指示SID所指向的,
是由一个默认的机构提供,而不是由安全描述符的初始供给者明确地提供。
这也许会影响SID关于所有者延续的处理。
</p>
<h3>默认群组</h3>
<p>
在设置时,这个布尔数学系统的标记用所有者域指示SID所指向的,
是由一个默认的机构提供,而不是由安全描述符的初始供给者明确地提供。
这也许会影响SID关于初始群组的处理。
</p>
<h3>当前DACL</h3>
<p>
在设置时,这个布尔数学系统的标记指示包含一个ACL目录的安全描述符。
如果此标记已经设置且安全标识符的DACL域是零,那么就明确说明了一个无效的ACL。
</p>
<h3>默认的DACL</h3>
<p>
在设置时,这个布尔数学系统的标记用所有者域指示SID所指向的,
是由一个默认的机构提供,而不是由安全描述符的初始供给者明确地提供。
这也许会影响ACL关于一个ACL延续的处理。如果没有设置DACL当前标记则可忽略此标记。
</p>
<h3>当前SACL</h3>
<p>
在设置时,这个布尔数学系统的标记指示包含一个由SACL域指向的系统ACL的安全描述符。
如果此标记已经设置且安全描述符的SACL域为零,则指定了一个空(但是存在)的ACL。
</p>
<h3>默认的SACL</h3>
<p>
在设置时,这个布尔数学系统的标记用所有者域指示SID所指向的,
是由一个默认的机构提供,而不是由安全描述符的初始供给者明确地提供。
这也许会影响ACL关于一个ACL延续的处理。如果设置了当前SACL,则此标记可忽略。
</p>
<h3>自相关</h3>
<p>
在设置时,这个布尔数学系统的标记指示安全描述符是自相关形式。
在这种形式中,安全描述符的所有域在内存中是连续的,所有指针域表示为从安全描述符开始的偏移量。
</p>
<pre>
SID结构是一个可变长度结构,用于唯一地识别用户或群组。
SID代表安全描述符。
SID的标准原文表示法为:S-R-I-S-S...
这里:
- 第一个“S”是文字符,确定下面的数字是一个SID。
- R 是SID的修订水平,表示为一个数字序列,可为十进制或十六进制
如果是后者,由“0x”做前缀)。
- I 是48比特的著作权标识符,表示为和上面的R相同的数字。
- S... 是一个或更多的子著作权值,表示为和上面的R相同的数字。
SID实例; 范围自相关SID,在WINDOWS NT/2K上有本地的管理群组:
S-1-5-32-544
转化到SID为:
修订本 = 1,
子著作权数 = 2,
著作权标识符 = {0,0,0,0,0,5}, NT的安全著作权
子著作权[0] = 32, SECURITY_BUILTIN_DOMAIN_RID
子著作权[1] = 544 DOMAIN_ALIAS_RID_ADMINS
ACE类型:
ACCESS_MIN_MS_ACE_TYPE = 0
ACCESS_ALLOWED_ACE_TYPE = 0
ACCESS_DENIED_ACE_TYPE = 1
SYSTEM_AUDIT_ACE_TYPE = 2
SYSTEM_ALARM_ACE_TYPE = 3 不在win2k下执行.
ACCESS_MAX_MS_V2_ACE_TYPE = 3
ACCESS_ALLOWED_COMPOUND_ACE_TYPE = 4
ACCESS_MAX_MS_V3_ACE_TYPE = 4
下面只在WIN2K环境里
ACCESS_MIN_MS_OBJECT_ACE_TYPE = 5
ACCESS_ALLOWED_OBJECT_ACE_TYPE = 5
ACCESS_DENIED_OBJECT_ACE_TYPE = 6
SYSTEM_AUDIT_OBJECT_ACE_TYPE = 7
SYSTEM_ALARM_OBJECT_ACE_TYPE = 8
ACCESS_MAX_MS_OBJECT_ACE_TYPE = 8
ACCESS_MAX_MS_V4_ACE_TYPE = 8
下面这个只针对WINNT和2K
ACCESS_MAX_MS_ACE_TYPE = 8
用于审计和延续的ACE标记(8比特):
SUCCESSFUL_ACCESS_ACE_FLAG只用于系统审计和警告ACE类型来指示
为访问成功产生一个信息(在WINDOWS里)。
FAILED_ACCESS_ACE_FLAG只用于系统审计和警告ACE类型来指示为访
问失败产生一个信息(在WINDOWS里)。
延续标记:
OBJECT_INHERIT_ACE = 0x01
CONTAINER_INHERIT_ACE = 0x02
NO_PROPAGATE_INHERIT_ACE = 0x04
INHERIT_ONLY_ACE = 0x08
INHERITED_ACE = 0x10 Win2k only
VALID_INHERIT_FLAGS = 0x1f
审计标记:
SUCCESSFUL_ACCESS_ACE_FLAG = 0x40
FAILED_ACCESS_ACE_FLAG = 0x80
访问标准权利的定义
标准权利:
删除 = 0x00010000
读取控制 = 0x00020000
DAC写入 = 0x00040000
所有者写入 = 0x00080000
同步 = 0x00100000
要求的标准权利 = 0x000f0000
标准权利读取 = 0x00020000
标准权利写入 = 0x00020000
标准权利执行 = 0x00020000
所有标准权利 = 0x001f0000
访问系统ACL和最大允许访问类型
访问系统安全 = 0x01000000
最大允许 = 0x02000000
一般权利:
所有一般的 = 0x10000000
一般执行 = 0x20000000
一般写入 = 0x40000000
一般读取 = 0x80000000
对象ACE标记(32比特):
ACE当前对象类型 = 1
ACE当前延续对象类型 = 2
ACL常数
当前修订本:
ACL修订本 = 2
ACL_REVISION_DS = 4
修订本历史:
ACL_REVISION1 = 1
MIN_ACL_REVISION = 2
ACL_REVISION2 = 2
ACL_REVISION3 = 3
ACL_REVISION4 = 4
MAX_ACL_REVISION = 4
绝对安全描述符不包含所有者和群组SID,在安全描述符里也没有SACL和DACL ACL。
作为替代,它包含到内存里哪些结构的指针。显然,绝对安全描述符只用于在内存
中安全描述符的表示法。在磁盘上,使用一个自相关的安全描述符。
属性:安全描述符(0x50).一个标准的自相关安全描述符。
注意:总是常驻的。
注意:在NTFS3.0+中不用,因为安全描述符存储在文件安全里并且正确的描述符使用
标准信息属性中的安全标识符.
在NTFS3.0+中,所有的安全描述符存储在文件安全里.只存储每个唯一的安全描述符。
文件安全包含非未命名数据属性,例如,它有零长度。但是它包含两个索引($SDH 和 $SII)
和一个命名的数据流($SDS).
每个唯一的安全描述符分配了一个唯一的安全标识符(安全验证,不要和SID混淆)。
安全验证对于NTFS卷来说是唯一的,用作一个到$SII的索引,它指出了安全验证到安
全描述符在$SDS数据流里的存储位置。$SII索引由安全验证升序分类。
一个简单的杂乱信号是从每个安全描述符计算的,这个杂乱信号用作到$SDH索引的一
个索引,它指出了安全描述符杂乱信号到安全描述符在$SDS数据流里的存储位置。此$SDH
索引由安全描述符杂乱信号分类且存储在一个B+子目录结构里。当搜索$SDH时(想确定是
否已经有一个新的安全描述符存在于$SDS数据流里),如果发现了一个匹配的杂乱信号,
但是安全描述符不匹配,就要继续在$SDH索引中的搜索,寻找下一个匹配的杂乱信号。
当发现一个精确的匹配时,就会从$SDH索引项读取在$SDS属性里安全描述符所对应的安全
验证,并存储在应用安全描述符的文件/目录的标准信息属性里。标准信息属性存在于
所有低级的MFT记录里(例如在所有文件和目录里)。
如果没发现匹配,则阿全描述符被分配了一个新的唯一安全验证并添加到$SDS数据属性。那
么,涉及到$SDS数据属性中的安全描述符的条目则被添加到$SDH 和 $SII索引。
注意:条目从不会被从文件安全里删除,即使没有任何事涉及到此条目。
$SDS数据流包含安全描述符,以16字节边界排列,由安全验证在一个B+子目录结构里分类。
安全描述符不能超过256k字节边界(此限制是由WINDOWS 缓存管理器强加的)。每个安全描述
符包含在一个SDS条目结构里。而且,每个安全描述符在$SDS流里以一个0x40000字节(256k字
节,WINDOWS缓存管理器的最大值)的固定偏移量距离存储两次。例如,如果一个SDS条目指定
了一个0x51d0的偏移量,那么安全描述符的第一个拷贝在$SDS数据流的偏移量0x51d0处,第二
个拷贝在偏移量0x451d0处。
$SII索引,整理类型是COLLATION_NTOFS_ULONG。
$SDH索引,整理规则是COLLATION_NTOFS_SECURITY_HASH。
</pre>
<br>
<a class="contact" href="http://linux-ntfs.sourceforge.net/ntfs/attributes/security_descriptor.html">Online</a>
<a class="contact" href="http://www.reddragonfly.org/ntfs/attributes/security_descriptor.html">中文在线</a>
<!-- The two validators will only work if this page is visible on the web -->
<a class="contact" href="http://validator.w3.org/check/referer">Validate HTML</a>
<a class="contact" href="http://jigsaw.w3.org/css-validator/check/referer">Validate CSS</a>
<a class="contact" href="mailto:webmaster@flatcap.org">$Id: security_descriptor.html,v 1.9 2001/07/11 11:04:05 flatcap Exp $</a>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -