windows

什么是Windows 8中文件中的这些扩展属性(EA)?

当我在一个Windows 8消费者预览版卷上运行CheckDisk时,我得到了。

> chkdsk /v S:
The type of the file system is NTFS.
Volume label is Windows 8.

WARNING!  F parameter not specified.
Running CHKDSK in read-only mode.

CHKDSK is verifying files (stage 1 of 3)...
  91392 file records processed.
File verification completed.
  28 large file records processed.
  0 bad file records processed.
  20224 EA records processed.                 <------------------ huh??

为什么卷上有这么多的扩展属性?我以为没有人再使用EA了......


Edit:

例如,文件 \Windows\CSC\v2.0.6 具有包含字符串的扩展属性

Ԡ 1X C8A05BC0-3FA8-49E9-8148-61EE14A67687.CSC.DATABASE P X Չ: Չ: ˌΦ]cᑡPcďŠ 4 C8A05BC0-3FA8-49E9-8148-61EE14A67687.CSC.DATABASEEX1 P X _, N0t 08 C8A05BC0-3FA8-49E9-8148-61EE14A67687.CSC.EPOCHEA 8 ͌Φ]cᑡPcďŠ }

这(感谢下面的答案)似乎与客户端离线文件的缓存有关。

然而,似乎大多数其他EA是不同的 --例如,文件

\Program Files\WindowsApps  
    \Microsoft.BingFinance_1.0.1022.0_x64__8wekyb3d8bbwe\pages\ETF\js\ETF.js

大多数其他文件包含(大部分)字符串 $KERNEL.PURGE.APPXFICACHE ,这似乎不相关。这可能是为了什么?

根据 EA 名称“CSC.DATABASE”,可能会猜测它与客户端缓存有关。这也可以解释为什么它们有这么多,因为每个缓存的文件可能都有它们来用服务器识别它们。

另外,我认为EA根本就不是特别少用。我可以肯定的是,它们被使用,例如,被IE用来识别一个文件是 "从网上下载的"(这使得Windows资源管理器在运行该文件之前询问之类的东西)。




扩展属性在Windows中使用,包括由内核使用,内核使用它们来跟踪各种安全限制并执行它们。

See https://docs.microsoft.com/en-us/windows-hardware/drivers/ifs/kernel-extended-attributes

值得注意的是,NTFS的USN日志将能够安全地跟踪对文件所做的修改,因此,文件系统快照或在意外的粗暴关闭(由断电、过热或BSOD和重新启动引起)后恢复文件系统是可靠的。这些都是在小的EA流中添加的短的安全记录(一般是自己存储在MFT记录中,而不分配任何额外的范围,除非MFT记录太小,无法容纳所有的流,在这种情况下,它们将被插入单独的NTFS扩展中,分配给不适合固定大小的MFT记录的 "非驻留 "属性,MFT记录一般很小,大约1KB。但有些文件属性将永远适合,包括基本属性,以及包含为超过容量的数据流分配的外延地图的特殊属性,例如常规文件内容的默认"$DATA "数据流,或目录的索引。哪种流适合MFT记录取决于MFT记录的大小,在格式化MFT卷时可以调整,但一般是1KB,即小于Reguler的"$DATA"。 例如,小于用于分配扩展空间的注册器 "集群")

内核管理的一些扩展属性是。

  • “$KERNEL.PURGE.ESBCACHE”:显然,“分支缓存”使用它来促进远程托管主机上的部署和系统更新,允许域执行自己的策略(而不是默认的本地策略或默认定义的策略) Windows 中的微软)。

  • “$KERNEL.PURGE.SEC.FILEHASH”:它包含文件内容的强文件哈希(以及使用的哈希算法):这允许文件系统恢复以检测内容损坏。

  • "$KERNEL.PURGE.SEC.CODEINTEGRITY":这个小 EA 包含代码完整性策略标志

  • “$KERNEL.SMARTLOCKER.ORIGINCLAIM”:它安全地跟踪创建文件的应用程序(即其安装程序的路径或包含参考签名的 MSI 包)

  • “$CI.CATALOGHINT”:这包含 Windows 目录中安全 *.cat 文件的名称,该文件包含该文件的源。诸如“SFC /SCANNOW”或“DISM /Online Cleanup-Image ScanHealth”之类的工具可以检查它们,并且在以前的 EA 的帮助下,它将能够安全地识别包含安装它的文件的原始包(如有必要,Windows Update 将能够找到、下载并重新安装这些软件包的副本)。

  • 不要将最后两个EA与 "Zone.Identifier "相混淆。 IE(或其他Windows的网络浏览器)在你从网上下载的文件上添加的标识符,或者unarchivers在你从下载的ZIP或cabinet文件(或其他存档格式)中提取的文件上添加的标识符,因为它是从存档/cabinet文件本身的 "区域标识符 "中复制的。这些不是EA,它们被存储为 "备用数据流"(ADS),是"$DATA "类型的属性(就像文件的常规内容,只是这个$DATA有一个非空的名字,而文件的常规内容有一个空的名字);此外,这些ADS只在它们存储在NTFS或兼容文件系统中时才存在,而且它们不被内核检查,而是由用户界面(主要在文件浏览器中)检查,当被复制到其他地方(例如,当把这些标记的文件移到一个新的文件中时),并不总是保存下来。 例如,当把这种标记的文件移到ZIP文件中时)。这些ADS非常弱,它们不如EA或其他签名系统(如外部安全目录,或可执行文件中的Authenticode签名,或一些允许文件常规内容中的类似签名的媒体格式;为了保证系统安全,内核不需要并使用这些传统的ADS,它使用Authenticode,以及其他安全目录,例如在Drivers数据库或像WinSxS一样的Windows目录中)。备用数据流已被废弃,但仍在网络浏览器中使用,只是作为对用户的提示,但它们并不抵制用户仍可能进行的基本操作,包括绕过资源管理器会显示的警告(但并不总是这样,因为它们经常不被保留)。同样,如果下拉的文件使用了更强的签名机制,或者如果它们是由后台的专门服务下载的(如Windows Update本身使用安全签名的目录),网络浏览器可能没有必要附加这些 "Zone.identifier" ADS。

根据你使用的工具和操作系统功能,或者使用一些驱动程序,你可能有其他的EA被定义。许多安全工具和反恶意软件将它们自己的EA添加到各种文件或目录中(也有助于这些工具更有效地扫描变化)。

如果你使用微软商店或Windows上的AppX部署工具,也会有额外的EA来设置它们将运行的虚拟环境(如 每台机器、每个域、每个用户或每个在线 "身份 "的全局设置,取决于你将使用的远程服务或你将与之沟通的第三方、写时复制或完全复制、延迟写入或同步写入、共享选项或政策、授予的许可和使用权、在线服务的订阅/支付选项的跟踪器。一些应用程序也使用它们,就像网页上的跟踪cookies一样,然后将存储个人标识符或与某些文件内容或应用程序相关的偏好,并能够将它们与在线个人档案同步,这样你就可以离线使用这些应用程序,至少在一定时间内。 ..).

如果你使用一些云服务(不仅仅是微软的那些),他们也可以为你在本地使用最多的文件同步一个本地副本,同时允许文件在线存档或同步到其他设备)。

一般来说,EA是非常小的(大多数约为100字节左右)。NTFS/ReFS(和其他支持的文件系统)中的任何文件都可以为许多不同的应用程序附加许多EA。这些EA的单独编码方式与应用程序有关。EAs有自己的名字(就像可见目录中的普通文件,也像ADS流),只是这些名字不打算让人阅读;所以这些名字是 "技术性 "的,没有使用Unicode。一些EA名称的前缀由微软在Windows文件系统中保留。

这些EA是否会驻留在MFT中(NTFS或ReFS文件系统),取决于一个特定文件有多少个。如果它们不适合在MFT记录中,NTFS将分配一些扩展来定位它们在卷的其他地方。为一个文件定义的EA列表是它的一个流,就像标准属性、安全属性(ACL)或常规内容,或额外的流(如跟踪一个文件从网上下载并可能不安全的流,它可能跟踪其网络域名或IP的来源,以及该域名是否用HTTPS等安全协议访问。这允许Windows为用户显示授权弹出窗口,或要求用户提升权限;ZIP/CAB文件有这样的流,由网络浏览器和安全下载器添加。和ZIP提取工具也会在每个提取的文件上传播该流,如果它可能是可执行的或有副作用,包括HTML文件、字体、Javascripts、媒体文件或office文档,使用它们的应用程序将默认以安全模式打开,并且会提醒用户一些嵌入式组件如脚本或字体可能不安全)确实,一些EA是为了提供与OS/2或MacOS的兼容性(只有这些EA被弃用),但仍有其他系统添加和使用它们。而新的安全系统(包括在Windows本身的内核或其服务和功能中)不断增加新的安全系统。

EAs是NTFS(和ReFS)的一个关键特征。它们也存在于其他非Windows的文件系统中(包括Linux上的Ext4);对于一些没有原生支持的文件系统,它们可能被存储在一个单独的子目录中或具有特殊名称的文件中。EAs通常不显示在目录内容中(对于实现它们的文件系统),也不计入常规文件大小,因此它们可以很容易地被添加/删除而不改变常规内容;它们还允许不同的应用程序、服务或操作系统通过安全地关联它们自己的元数据而与相同的文件互操作。因此,它们是现有文件系统的安全扩展(大多数时候,应用程序不必关心它们,操作系统或其服务将管理它们,最常见的是为了安全原因和检查)。

EAs绝对没有被废弃。事实上,今天使用的频率要高得多,而且有许多安全解决方案开发出来的变体(如果你看一下Windows 11,它使用的变体更多。如果你使用Azure服务,或者加入AD域,就会有额外的EA,如果你使用各种安全工具,不仅仅是微软的工具,他们会添加自己的工具,一些应用程序也使用它们来存储你购买的媒体上的DRM权利追踪器,如果需要的话,还有解密密钥,以及安全签署的设备计数器,你需要登录服务来更新这些签名或删除一个设备及其授权。EAs有很多可能的用途,不仅仅是为了安全,而且还可以通过包括处理提示和跟踪或特定用途的统计来优化性能;它们还可以用来跟踪备份和复制/镜像,比单一的传统 "ARCHIVE "位更好;EAs有自己独特的名字,正在创建一种 "平行 "文件系统,只是它们通常是可选的,只有需要它们的适当文件或目录会得到那些EAs)。将EA放在NTFS/ReFS核心结构中的好处是,它们的位置很理想,而不是在卷的其他地方使用单独的存储(由于访问时间的原因,这将会比较慢,特别是在使用网络文件系统或硬盘和磁盘阵列的时候。在加载基本文件属性的同时,可以非常快速地检索到EA;而且它们更容易动态地添加/删除)