扩展文件属性
扩展文件属性 |
---|
|
扩展文件属性是文件系统的一个功能。它允许用户将计算机文件与未被文件系统所解释的元数据关联起来。与之相对应的是正规文件属性,其具有经文件系统严格定义的意义(例如文件系统权限或者文件创建以及修改时间等)。[1]
与通常能具有最大文件大小的forks不同,扩展文件属性通常被限制为远小于最大文件大小。其典型应用包括存储文档作者、普通文本文件的字符编码或者校验码。
目录
OS/2
在1.2及以后的OS/2版本中,出现了带有扩展属性的高性能文件系统构想的设计,并且DOS的FAT文件系统对其向后兼容。为了确保与其他使用FAT文件系统的操作系统兼容,OS/2属性保存在根(root)路径下的一个"EA DATA. SF"文件中。当支持扩展属性的操作系统管理磁盘时,该文件通常是不可见的,然而可以自由地被例如DOS的系统操作。带有扩展属性的文件或目录在文件内使用一个或多个簇。首次使用的簇的逻辑编号以两个先前未使用字节的方式保存在该文件或路径的路径条目里。这两个字节在FAT32文件系统中另有他用,因此OS/2扩展属性不能保存在FAT32文件系统中。
为了实现例如识别文件的类型、注释、图标和关键字的功能,2.0及之后的OS/2版本例如工场外壳的部分使用一些标准化的扩展属性(也被称作EA)。使用解释性语言REXX编写的程序将已经解析过的代码版本作为扩展属性保存以获得更快的运行速度。
Windows NT
如同OS/2,Windows NT支持FAT和HPFS文件系统的扩展属性。NTFS文件系统作为一种可能的文件分支,为了兼容OS/2子系统,也被设计用于存储扩展属性。OS/2拓展属性可以被任何与原生OS/2方式相同的OS/2程序和通过BackupRead及BackupWrite系统调用的Windows程序访问。它们被显著用于Interix之POSIX子系统的网络文件系统服务器上,以实现类似于Unix的权限许可。
Linux
在Linux操作系统中,如果libattr功能在内核设置中被打开,ext2、ext3、ext4、JFS、ReiserFS以及XFS文件系统都支持扩展属性(英文简写为xattr)。任何一个普通文件都可能包含有一系列的扩展属性。每一个属性由一个名字以及与之相关联的数据所表示。其中名字必须为一个字符串,并且必须有一个命名空间前缀标识符与一个点字符。目前存在有四种命名空间:用户命名空间、信任命名空间、安全命名空间以及系统命名空间。用户命名空间在命名或者内容上没有任何限制。系统命名空间主要被内核用于访问控制表上。安全命名空间被SELinux等模块使用。
FreeBSD
在FreeBSD5.0以及更新的版本中,UFS1与UFS2文件系统支持扩展属性。每一个属性由一个名字及与之相关联的数据表示。其中名字必须为一个字符串,并且必须存在于一个由小整数命名空间标识符所标识的命名空间内。当前存在有两种命名空间:用户命名空间与系统命名空间。用户命名空间对命名与内容没有任何约束。系统命名空间主要被内核用于访问控制表中。