表 1. ext3 文件系统支持的属性含义
属性名 含 义
A Atime。告诉系统不要修改对这个文件的最后访问时间
S Sync。一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘
a Append Only。系统只允许在这个文件之后追加数据,不允许任何进程覆盖或者截断这个文件。如果目录具有这个属性,系统将 只允许在这个目录下建立和修改文件,而不允许删除任何文件
i Immutable。系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。
d No dump。在进行文件系统备份时,dump程序将忽略这个文件
c Compress。系统以透明的方式压缩这个文件。从这个文件读取时,返回的是解压之后的数据;而向这个文件中写入数据时,数据首先被压缩之后,才写入磁盘
s Secure Delete。让系统在删除这个文件时,使用0填充文件所在的区域
u Undelete。当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复删除这个文件
虽然文件系统能够接受并保留指示每个属性的标志,但是这些属性不一定有效,这依赖于内核和各种应用程序的版本。表 2 显示了 Linux 每个版本内核支持的属性标志的具体情况,其中:
表 2. Linux 各内核版本对属性的支持情况
属性名 内核版本 Kernel 1.0 Kernel 1.2 Kernel 2.0 Kernel 2.2 Kernel 2.4 Kernel 2.6
A —— —— OK OK OK OK
S OK OK OK OK OK OK
a —— OK OK OK OK OK
i —— OK OK OK OK OK
d —— OK OK OK OK OK
c POK POK POK POK POK POK
s OK OK POK POK POK POK
u OK OK OK OK OK OK
从上述表格可以看出:虽然早期的内核版本支持安全删除特征,但是从 1.3 系列的内核开始,开发者抛弃的对这个特征的实现,因为它似乎只能够提高一点点的安全性,而糟糕的是它会给不熟悉安全删除继承问题的用户造成安全的假象。在对具有 A 属性的文件进行操作时,A 属性可以提高一定的性能。而 S 属性能够最大限度的保障文件的完整性。
因此,我们将主要讨论 a 属性和 i 属性,因为这两个属性对于提高文件系统的安全性和保障文件系统的完整性有很大的好处。同样,一些开放源码的 BSD 系统(比如 FreeBSD 和 OpenBSD),在其 UFS 或者 FFS 实现中也支持类似的特征。
使用 ext3 文件系统的属性
在任何情况下,标准的 ls 命令都不会一个文件或者目录的扩展属性。ext3 文件系统工具包中有两个工具:chattr 和 lsattr。它们被专门用来设置和查询文件属性。因为 ext3 是标准的 Linux 文件系统,因此几乎所有的发布都有 e2fsprogs 工具包。如果由于某些原因,系统中没有这个工具,用户可以从以下地址下载这个工具包的源代码编译并安装:http://sourceforge.net/projects/e2fsprogs。