在最初的NTFS版本中,每个文件都有一个$SECURITY_DESCRIPTOR(安全描述符)属性,即50H属性。由于大多数文件的安全描述符都是一样的,因此,检查每一个文件的访问权限将会导致效率低下。所以,在NTFS 3.0版本中新引入了一个元文件$Secure,同时,在$STANDARD_INFORMATION(标准信息)中新增加了一个数据——安全ID,这个ID是$Secure文件的一个索引,它有一个数据流$SDS、两个索引$SII和$SDH,该数据流是卷上各种安全描述符的一个备份,而索引是所有事物的一个交叉参考。元文件$Secure由很多属性构成,如图4-460所示。
图4-460 $Secure的文件记录
(1)10H属性
10H属性用来定义$Secure的创建时间、最后修改时间、该MFT修改时间、文件最后访问时间、文件标志等信息。
(2)30H属性
30H属性定义了$Secure的父目录的文件参考号为根目录、$Secure的一些时间属性、系统分配给$Secure的大小(这里为0字节)、实际使用的大小(这里为0字节)、文件的标志;定义了该文件名的长度为7个字符、命名空间为3,即Win32 & DOS命名空间;在属性的最后定义了该文件的文件名为Unicode字符串“$Secure”。
(3)80H属性
80H属性是命名数据流,属性名为SDS(Security Descriptor Stream),即$SDS数据流,包含有卷上所有安全描述的一个列表,每个条目都补足16字节,并有一个用于索引的哈希表,见表4-82。
表4-82 $SDS数据流
字节偏移 | 字段长度(字节) | 描述 |
0x00 | 4 | 安全描述的哈希表 |
0x04 | 4 | 安全ID |
0x08 | 8 | 本条目在文件中的偏移地址 |
0x10 | 4 | 本条目的长度 |
0x04 | V | 相关的(参考)安全描述符 |
V+0x04 | P16 | 用于填充到16字节(无意义) |
(4)第一个90H属性
第一个90H属性的属性名为$SDH,它是安全描述符的哈希索引,其含义见表4-83。
表4-83 $SDH索引
(5)第二个90H属性
第二个90H属性的属性名为$SII,它是安全ID索引,其描述见表4-84。
表4-84 $SII索引
文件以哈希方式存储,安全描述存储在$SDS数据流中。
(6)第一个A0H属性
第一个A0H属性的属性名为$SDH,关于$SDH索引具体描述见表4-83。
(7)第二个A0H属性
第二个A0H属性的属性名为$SII,关于$SII索引的描述见表4-84。
(8)第一个B0H属性
第一个B0H属性的属性名为$SDH,它定义了$SDH索引的LCN的使用情况,这里为01,表示用了一个簇。
(9)第一个B0H属性
第一个B0H属性的属性名为$SII,它定义了$SII索引的LCN的使用情况,这里为01,表示用了一个簇。