我对整个Windows文件安全scheme有些困惑。 我来自unix背景,所以我不完全了解文件权限/安全设置和属性之间的关系; 特别是只读,一个文件可以有。
例如,如果我以pipe理员身份login到我的文件夹中,并且我有一个允许对pipe理员进行完全控制的文件,但设置了只读属性,那意味着我无法写入该文件? 除了删除我可以写入文件的只读属性之外,还有什么方法可以完全控制吗? 如果不是的话,如果你没有完全控制的话,完全控制的好处是什么?
文件权限决定了你对文件的访问权限 – 就像听起来一样。 完全控制允许您创build,删除,附加,更改权限,更改属性等
文件和文件夹可以有其他属性,就像大多数* nix文件系统上的文件一样。 在这两个平台上,“隐藏”就是一个例子。
在Windows上,其他一些属性包括系统,只读,归档,encryption和压缩。 当您完全控制(或修改)时,您可以更改这些属性,但正如您发现的那样,只读文件是只读文件,即使是完全控制的人也是如此。 虽然完全控制使您能够更改文件的属性,但不会自动覆盖它们,就像ls在* nix中默认情况下不向root用户显示隐藏文件一样。
权限是安全控制。 无论尝试操作的安全主体如何,都应用一个属性。
比你在命令提示符下看到的属性要多得多。 这些包括如果文件是链接,encryption,目录(一种文件)和完整性(低,中,高)。
文件属性常量
http://msdn.microsoft.com/en-us/library/windows/desktop/gg258117%28v=vs.85%29.aspx
FILE_ATTRIBUTE_ARCHIVE32(0x20)作为档案文件或目录的文件或目录。 应用程序通常使用此属性标记要备份或删除的文件。
FILE_ATTRIBUTE_COMPRESSED2048(0x800)压缩的文件或目录。 对于文件,文件中的所有数据都是压缩的。 对于目录,压缩是新创build的文件和子目录的默认值。
FILE_ATTRIBUTE_DEVICE64(0x40)这个值保留给系统使用。
FILE_ATTRIBUTE_DIRECTORY16(0x10)标识目录的句柄。
FILE_ATTRIBUTE_ENCRYPTED16384(0x4000)encryption的文件或目录。 对于文件,文件中的所有数据stream都是encryption的。 对于目录,encryption是新创build的文件和子目录的默认值。
FILE_ATTRIBUTE_HIDDEN2(0x2)隐藏文件或目录。 它不包含在普通的目录列表中。
FILE_ATTRIBUTE_INTEGRITY_STREAM32768(0x8000)目录或用户数据streamconfiguration为完整性(仅在ReFS卷上受支持)。 它不包含在普通的目录列表中。 如果文件被重命名,则完整性设置将与该文件一起保留。 如果复制文件,如果源文件或目标目录具有完整性设置,则目标文件将具有完整性设置。
Windows Server 2008 R2,Windows 7,Windows Server 2008,Windows Vista,Windows Server 2003和Windows XP:在Windows Server 2012之前,不支持此标志。
FILE_ATTRIBUTE_NORMAL128(0x80)没有设置其他属性的文件。 该属性仅在单独使用时有效。
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED8192(0x2000)文件或目录不被内容索引服务索引。
FILE_ATTRIBUTE_NO_SCRUB_DATA131072(0x20000)用户数据stream不被后台数据完整性扫描器(AKA scrubber)读取。 在目录上设置时,只能提供inheritance。 此标志仅在存储空间和ReFS卷上受支持。 它不包含在普通的目录列表中。
Windows Server 2008 R2,Windows 7,Windows Server 2008,Windows Vista,Windows Server 2003和Windows XP:在Windows 8和Windows Server 2012之前,不支持此标志。
FILE_ATTRIBUTE_OFFLINE4096(0x1000)文件的数据不可立即使用。 此属性表示文件数据已物理移动到脱机存储。 Remote属性是分级存储pipe理软件使用的属性。 应用程序不应该随意更改此属性。
FILE_ATTRIBUTE_READONLY1(0x1)一个只读的文件。 应用程序可以读取文件,但不能写入或删除它。 这个属性不符合目录。 有关详细信息,请参阅Windows XP,Windows Vista或Windows 7中的无法查看或更改Windows Server 2003,Windows XP中的文件夹的只读或系统属性。
FILE_ATTRIBUTE_REPARSE_POINT1024(0x400)具有相关重parsing点的文件或目录,或者是符号链接的文件。
FILE_ATTRIBUTE_SPARSE_FILE512(0x200)一个稀疏文件的文件。
FILE_ATTRIBUTE_SYSTEM4(0x4)操作系统使用的一部分或专门使用的文件或目录。
FILE_ATTRIBUTE_TEMPORARY256(0x100)正在用于临时存储的文件。 如果有足够的高速缓冲存储器可用,文件系统避免将数据写回大容量存储器,因为典型情况下,应用程序在句柄closures后删除临时文件。 在这种情况下,系统可以完全避免写入数据。 否则,在句柄closures后写入数据。
FILE_ATTRIBUTE_VIRTUAL65536(0x10000)这个值保留给系统使用。
我会提供一个更长的答案,但一般来说,您所指的属性是从DOS FAT文件系统的date文件的传统设置。 FAT将这些属性存储为文件的文件系统目录条目的一部分。 NTFS有它自己的一组属性,封装了旧的属性。 默认情况下,任何具有文件访问权限的用户都可以修改它们,并且可以用来防止意外覆盖数据。
权限是特定于NTFS的,并且可以基于每个用户来控制对这些权限的更改(以便用户不能从只读改变为可写)。 特别是如果您要查看attrib命令(在较新版本的Windows中显示旧式和新的属性添加,如完整性),可以在权限中设置只读访问权限,但不能在属性中设置只读属性。 理解由于抽象的原因,在传统属性(存储在$ standard_information NTFS属性中)的技术上是可能的,而不必在正常的GUI中显示这些属性,这也是有趣的(如果不重要的话)。
特别是完整的控制权限允许您更改任何NTFS权限。 设置只读属性可以防止更改,直到它被删除。
FAT属性将优先于Windows下的NTFS属性。