文件和目录的访问控制(1) 访问控制列表
权限的概念相信你已经不陌生了,那么如何设置一个文件的访问权限呢?编程可不可以实现动态的控制文件权限信息呢?答案是肯定的,.NET可以做到这些。
自由访问控制列表(Discretionary Access Control List,DACL)(有时缩写为ACL)是一种 Microsoft Windows NT 和更高版本用于保护资源(例如文件和文件夹)的机制。DACL包含多个访问控制项(Access Control Entry,ACE)。访问控制项将一个主体(通常是一个用户账户或用户账户组)与一个控制资源的使用的规则相关联。通过DACL 和ACE,可以基于与用户账户关联的权限允许或拒绝资源的权限。例如,可以创建一个ACE,并将其应用于某个文件的DACL,以阻止除管理员以外的任何人读取该文件。
系统访问控制列表(System Access Control List,SACL)(有时称为审核 ACE)是一种控制与资源关联的审核消息的机制。与DACL相似,SACL包含定义指定资源的审核规则的 ACE。通过审核ACE,可以记录访问资源的成功尝试或失败尝试,但与访问ACE不同的是,审核ACE不控制哪些账户可以使用某个资源。例如,可以创建一个ACE并将其应用于某个文件的SACL,以记录打开该文件的所有成功尝试。
System.Security.AccessControl命名空间通过一些方便的类(这些类抽象化Windows ACL 安全系统的大部分复杂性)提供对访问控制列表(ACL)的访问。此外, System.Security.AccessControl命名空间还包含几个提供对Windows ACL安全系统的高级访问的类。
.NET Framework提供对下列资源的ACL的访问:加密密钥、目录、事件等待句柄、文件、Mutexes、注册表项、信号量。
上述每个资源都有几个用于创建和修改ACL的类,本节主要关注目录和文件的访问控制。这些类如下:
DirectorySecurity类
该类表示目录的访问控制和审核安全。该类指定系统目录的访问权限以及访问尝试的审核方式。此类将访问和审核权限表示为一组规则,每个访问规则由一个FileSystemAccessRule对象表示,而每个审核规则由一个FileSystemAuditRule对象表示。
FileSecurity类
该类指定系统文件的访问权限以及如何审核访问尝试。此类将访问和审核权限表示为一组规则,每个访问规则由一个 FileSystemAccessRule 对象表示,而每个审核规则由一个 FileSystemAuditRule 对象表示。使用该类可检索、添加或更改表示文件的 DACL 和 SACL 的访问规则。
DirectorySecurity类和FileSecurity类是对基础Microsoft Windows文件安全系统的抽象。在此系统中,每个目录都有一个自由访问控制列表(DACL)和一个系统访问控制列表(SACL),前者控制对目录的访问,后者指定要审核的访问控制尝试。FileSystemAccessRule和FileSystemAuditRule 类是对组成DACL和SACL的访问控制项(ACE)的抽象。
------------------注:本文部分内容改编自《.NET安全揭秘》