我对整个Windows文件安全方案感到有些困惑。我来自UNIX背景,因此我不完全了解文件权限/安全设置与属性之间的关系;文件可以具有的只读属性。
例如,如果我以管理员身份登录到我的邮箱中,并且拥有一个可以完全控制管理员的文件,但是设置了只读属性,那意味着我无法写入该文件?除了删除我可以写到据称可以完全控制的文件的只读属性之外,还有什么办法吗?如果没有,如果您没有真正的完全控制权,那么拥有完全控制权的优势是什么?
我对整个Windows文件安全方案感到有些困惑。我来自UNIX背景,因此我不完全了解文件权限/安全设置与属性之间的关系;文件可以具有的只读属性。
例如,如果我以管理员身份登录到我的邮箱中,并且拥有一个可以完全控制管理员的文件,但是设置了只读属性,那意味着我无法写入该文件?除了删除我可以写到据称可以完全控制的文件的只读属性之外,还有什么办法吗?如果没有,如果您没有真正的完全控制权,那么拥有完全控制权的优势是什么?
Answers:
文件权限决定了您对文件的访问权限-就像听起来一样。完全控制使您可以创建,删除,追加,更改权限,更改属性等。
文件和文件夹可以具有其他属性,就像大多数* nix文件系统上的文件一样。在两个平台上都以“隐藏”为例。
在Windows上,一些其他属性包括系统,只读,存档,加密和压缩。拥有完全控制(或修改)的权限时,您可以更改这些属性,但是,正如您所发现的,即使对完全控制的人,只读文件也是只读的。尽管完全控制使您能够更改文件的属性,但它不会自动覆盖它们,就像ls
默认情况下在* nix上不向根用户显示隐藏文件一样。
权限是一种安全控制。无论尝试执行该操作的安全主体如何,都将应用属性。
属性远远超过您在命令提示符下看到的属性。这些包括文件是否是链接,加密,目录(文件的类型)和完整性(低,中或高)。
文件属性常量
http://msdn.microsoft.com/zh-cn/library/windows/desktop/gg258117%28v=vs.85%29.aspx
FILE_ATTRIBUTE_ARCHIVE
32(0x20)作为存档文件或目录的文件或目录。应用程序通常使用此属性将文件标记为备份或删除。
FILE_ATTRIBUTE_COMPRESSED
2048(0x800)压缩的文件或目录。对于文件,将压缩文件中的所有数据。对于目录,压缩是新创建的文件和子目录的默认设置。
FILE_ATTRIBUTE_DEVICE
64(0x40)该值保留供系统使用。
FILE_ATTRIBUTE_DIRECTORY
16(0x10)标识目录的句柄。
FILE_ATTRIBUTE_ENCRYPTED
16384(0x4000)加密的文件或目录。对于文件,文件中的所有数据流均已加密。对于目录,加密是新创建的文件和子目录的默认设置。
FILE_ATTRIBUTE_HIDDEN
2(0x2)文件或目录被隐藏。它不包含在普通目录列表中。
FILE_ATTRIBUTE_INTEGRITY_STREAM
32768(0x8000)目录或用户数据流配置为具有完整性(仅ReFS卷支持)。它不包含在普通目录列表中。如果文件被重命名,完整性设置将与文件一起保留。如果复制了文件,那么如果源文件或目标目录都设置了完整性,则目标文件将设置完整性。
Windows Server 2008 R2,Windows 7,Windows Server 2008,Windows Vista,Windows Server 2003和Windows XP:直到Windows Server 2012才支持此标志。
FILE_ATTRIBUTE_NORMAL
128(0x80)没有设置其他属性的文件。该属性仅在单独使用时才有效。
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED
8192(0x2000)内容索引服务不对文件或目录建立索引。
FILE_ATTRIBUTE_NO_SCRUB_DATA
131072(0x20000)后台数据完整性扫描程序(AKA洗涤器)不会读取用户数据流。在目录上设置时,它仅提供继承。仅在存储空间和ReFS卷上支持此标志。它不包含在普通目录列表中。
Windows Server 2008 R2,Windows 7,Windows Server 2008,Windows Vista,Windows Server 2003和Windows XP:在Windows 8和Windows Server 2012之前不支持此标志。
FILE_ATTRIBUTE_OFFLINE
4096(0x1000)文件数据无法立即使用。此属性指示文件数据已物理移动到脱机存储中。该属性由远程存储使用,远程存储是分层存储管理软件。应用程序不应随意更改此属性。
FILE_ATTRIBUTE_READONLY
1(0x1)只读文件。应用程序可以读取文件,但不能对其进行写入或删除。目录不支持此属性。有关详细信息,请参阅在Windows Server 2003,Windows XP,Windows Vista或Windows 7中无法查看或更改文件夹的只读或系统属性。
FILE_ATTRIBUTE_REPARSE_POINT
1024(0x400)具有关联的重新解析点的文件或目录,或者是符号链接的文件。
FILE_ATTRIBUTE_SPARSE_FILE
512(0x200)是稀疏文件的文件。
FILE_ATTRIBUTE_SYSTEM
4(0x4)操作系统使用一部分或专门使用的文件或目录。
FILE_ATTRIBUTE_TEMPORARY
256(0x100)用于临时存储的文件。如果有足够的高速缓存可用,文件系统避免将数据写回大容量存储,因为通常,应用程序在句柄关闭后会删除临时文件。在那种情况下,系统可以完全避免写入数据。否则,将在关闭句柄之后写入数据。
FILE_ATTRIBUTE_VIRTUAL
65536(0x10000)该值保留供系统使用。
我将提供更长的答案,但总的来说,您所指的属性是DOS FAT文件系统时代以来文件的旧设置。FAT将这些属性存储为文件的文件系统目录条目的一部分。NTFS有自己的属性集,这些属性封装了较旧的属性。默认情况下,任何具有文件访问权限的用户都可以对其进行修改,并可以用来防止意外覆盖数据。
权限是特定于NTFS的,可以在每个用户的基础上控制对这些权限的更改(这样用户就不能从只读更改为可写)。具体来说,如果您要查看attrib命令(它在Windows的更高版本中同时显示了旧属性和新属性的添加,例如完整性),则可能在权限中设置了只读访问权限,但未在属性中设置了只读权限。有趣的是(如果不重要的话),可以理解,由于抽象的原因,它在技术上可以启用遗留属性(存储在$ standard_information NTFS属性中),而不必在常规GUI中显示它们。
具体来说,完全控制权限允许您更改任何NTFS权限。设置只读属性可防止更改,直到将其删除。
FAT属性将优先于Windows下的NTFS属性。
in general attributes are legacy settings
-您是否有消息来源,因为我认为该说法不正确。它们是对文件系统权限的补充-尚未被它们替换或取代。标准权限中没有什么可以替代隐藏,存档或系统的功能。
Any user can modify them and can be used to prevent accidental overwrites of data.
同样,这实际上是不正确的。只有对文件或目录具有“写属性”的用户才能更改该对象的属性。