文件和目录的访问控制(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安全揭秘》

作者:玄魂

出处:http://www.cnblogs.com/xuanhun/

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/net/

时间: 2024-10-31 02:26:25

文件和目录的访问控制(1) 访问控制列表的相关文章

文件和目录的访问控制(4) 审核规则

到目前为止,只是讨论了访问控制规则,它们构成了对象的DACL.DACL可以由对象的所有者任意更改,还可以由所有者已经给予其更改DACL权限的任何人更改.对象的安全描述符包含另一个规则列表,称为系统访问控制列表(System Access Control List,SACL),该列表将控制系统对对象执行哪个类型的审核. 审核是一种具有安全敏感性的操作.在Windows中,审核只能由本地安全机构(Local Security Authority,LSA)生成,因为LSA是唯一允许向安全事件日志(这里

文件和目录的访问控制(3) 访问规则

访问规则有两种类型:"允许"(allow)和"拒绝"(deny).可以通过检查规则的AccessControlType属性来确定相应规则的类型.按照约定,拒绝规则总是优先于允许规则.因而,如果向某个对象中添加下列两个规则:"授予每个人读.写访问权限"和"拒绝Xuanhun写访问权限",则Xuanhun将被拒绝进行写访问. 想要枚举文件或者目录的访问规则时,可以使用如代码清单7-11所示的方式. 7-11  枚举文件访问规则 c

文件和目录的访问控制(2) 添加访问控制

对文件和目录访问控制的操作基本相同,对于同一种操作本书在通常情况下不重复举例,读者可自行实践. 代码清单7-9是一个简单的示例,用来演示对文件添加访问控制. 代码清单 7-9          对文件添加访问控制 using(FileStream file = new FileStream(@"E:\AclTest\acltest.txt", FileMode.Open, FileAccess.ReadWrite)) { FileSecurity security = file.Get

Linux中使用rsync——文件和目录排除列表

Linux中使用rsync--文件和目录排除列表 rsync是一个十分有用,而且十分流行的linux工具.它用于备份和恢复文件,也用于对比和同步文件.我们已经在前面的文章讲述了如何在Linux下使用rsync,而今天我们将增加一些更为有用的rsync使用技巧. 排除文件和目录列表 有时候,当我们做大量同步的时候,我们可能想要从同步的文件和目录中排除一个文件和目录的列表.一般来说,像设备文件和某些系统文件,或者像临时文件或者缓存文件这类占据不必要磁盘空间的文件是不合适同步的,这类文件是我们需要排除

LFCS 系列第三讲:归档/压缩文件及目录、设置文件属性和搜索文件

LFCS 系列第三讲:归档/压缩文件及目录.设置文件属性和搜索文件 最近,Linux 基金会发起了一个全新的 LFCS(Linux 基金会认证系统管理员Linux Foundation Certified Sysadmin)认证,旨在让遍布全世界的人都有机会参加该认证的考试,通过考试的人将表明他们有能力在 Linux 上执行基本的中级系统管理任务.这项认证包括了对已运行的系统和服务的支持.一流水平的问题解决和分析以及决定何时将问题反映给工程师团队的能力. LFCS 系列第三讲 请看以下视频,这里

Xcopy 复制文件和目录,包括子目录。_DOS/BAT

Xcopy 复制文件和目录,包括子目录. 语法 xcopy Source [Destination] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d[:mm-dd-yyyy]] [/u] [/i] [/s [/e]] [/t] [/k] [/r] [/h] [{/a|/m}] [/n] [/o] [/x] [/exclude:file1[+[file2]][+[file3]] [{/y|/-y}] [/z] 参数 Source  必需的.指定要复制的文件的

dos的文件与目录

在DOS中,文件与目录是最重要的概念,这和95一样,不同的是,"目录"在95中叫做"文件夹". 如果我们想查看电脑中的文件,可以输入dir命令,然后回车.下面是我电脑屏幕上显示的结果.   如图所示,后面带有<dir>的是目录,没有的则是文件,这些目录里都分门别类地存放着许多不同用途的文件.你看,第一排是DOS目录,它里面有许多DOS命令文件和一些辅助信息文件.第二排是WINDOWS目录,它里面包含着许多有关WINDOWS程序的文件.   在DOS中,文

Asp.net获取服务器指定文件夹目录文件并提供下载的方法

 这篇文章主要介绍了Asp.net获取服务器指定文件夹目录文件并提供下载的方法,涉及使用http协议操作文件的技巧,需要的朋友可以参考下 本文实例讲述了Asp.net获取服务器指定文件夹目录文件并提供下载的方法.分享给大家供大家参考.具体实现方法如下: 代码如下: string dirPath = HttpContext.Current.Server.MapPath("uploads/"); if (Directory.Exists(dirPath)) { //获得目录信息 Direc

linux下svn提交忽略某些文件、目录(ignore属性

 svn也是一个目录同步了我们可以用它来做版本控制了,下面一起来看看关于linux下svn提交忽略某些文件.目录(ignore属性),希望例子对各位有帮助.     在项目中,有些文件是不需要将本地的提交到svn仓库,例如config.php文件,特别是定义了绝对路径的,或者是缓存目录.图片目录等,所以为了方便,在每次提交svn的时候,都需要忽略这些文件.目录,避免不慎提交引起团队中其他成员需要修改其本地的版本. linux下用svn propedit svn:ignore命令可以编辑忽略文件.

js 获取本地文件及目录的方法(推荐)_javascript技巧

Javascript是网页制作中离不开的脚本语言,依靠它,一个网页的内容才生动活泼.富有朝气.但也许你还没有发现并应用它的一些更高级的功能吧?比如,对文件和文件夹进行读.写和删除,就象在VB.VC等高级语言中经常做的工作一样.怎么样,你是否需要了解这方面的知识?那就请跟我来,本文将详细描述如何使用Javascript语言进行文件操作. 一.功能实现核心:FileSystemObject 对象 其实,要在Javascript中实现文件操作功能,主要就是依靠FileSystemobject对象.在详