如何利用.NET的DirectorySecurity对象处理目录安全性问题
2011-01-28 11:19
288 查看
处理.NET目录
的一个重要问题是安全性问题,也就是说,你可以让需要访问某个目录的用户访问该目录,而限制其他用户访问该目录。本文详细介绍了目录级的安全控制与设置。
访问控制
使用.NET的Directory类,用户可通过DirectorySecurity对象的下列方法来访问目录的访问控制列表(ACL):
GetAccessControl:返回一个目录的Windows ACL作为一个DirectorySecurity对象。
SetAccessControl:将DirectorySecurity对象的ACl入口赋予指定目录。
为了正确应用这些方法,需要对DirectorySecurity类有深入的理解,因此下面我们对此作深入讲解。
DirectorySecurity
DirectorySecurity类定义了如何对目录访问进行审计。该类是潜在的Windows文件安全系统(System.Security.AccessControl命名空间的一部分)的一个抽象。
在该系统中,每个目录有一个自由决定的ACL来控制目录访问。同时,一个系统ACL决定对哪些访问控制进行审计。使用两个类FileSystemAccessRule 和FileSystemAuditRule来分别处理目录访问和审计。
FileSystemAccessRule类代表一个潜在的访问控制入口的抽象,访问控制入口用来指定用户账号,提供的访问类型(读、写等等)以及
是许可或拒绝某个权限。同时,该类还指定了如何将访问规则传递给子对象。FileSystemAuditRule类代表了为某个文件或目录定义审计规则的
ACE。
为了通过DirectorySecurity类为某个目录添加一条新规则,需要FileSystemAccessRule 和
FileSystemAuditRule两个类的新实例。我们从访问权限开始,当同DirectorySecurity类一起使用这些类时,需要创建新的
对象实例。列表A
包含了每个类的语法。
第一个参数指定每个应用该规则的用户、组或标识。第二个参数是FileSystemRights列表,用来指定用户(由第一个参数指定)可以进行的
操作,它包含很多可能的取值,包括:CreateDirectories、 CreateFiles、 Delete、 FullControl、
ListDirectory等等。
用于FileSystemAccessRule类的最后一个参数可用来指定用户能否执行参数二的操作。AccessControlType列表包括
两个可能取值:允许和拒绝。用于FileSystemAuditRule类的第三个参数可从AuditFlags列表的Failure、None或
Success中取值来设定审计级别。FileSystemAuditRule类的构造函数是重载的,这个方法是最基本的方法。
目录访问
Directory类可用来处理目录的ACL入口,为此,按照以下步骤进行处理:
通过Directory类的GetAccessControl方法来初始化一个DirectorySecurity对象。
通过DirectorySecurity对象指定目录访问规则。例如,使用AddAccessRule方法可以添加一个新规则。新规则定义为一个FileSystemAccessRule对象,它包含标识(用户、组等),系统权限和ACL。
调用Directory类的SetAccessControl方法来永久的改变ACL。
列表B
中的C#代码对C:盘中每个目录添加一个ACL入口。该入口提供了对特定用户的访问控制(DomainTechRepublicUser)。同时,删除了另一个访问规则,该规则对另一个用户没有任何所有控制(DomainTester)。列表C
包含VB.NET实现的相同功能的代码。
审计追踪
应用Directory类还可以指定目录安全审计规则。审计包含了前面例子中的访问规则处理,这两者的区别是审计使用FileSystemAuditRule类而不是使用FileSystemAccessRule 类。列表D
中的C# 代码包括了前面的例子,此外还增加和删除了目录ACL中的审计规则。列表E
包含了实现同等功能的VB.NET 代码。
的一个重要问题是安全性问题,也就是说,你可以让需要访问某个目录的用户访问该目录,而限制其他用户访问该目录。本文详细介绍了目录级的安全控制与设置。
访问控制
使用.NET的Directory类,用户可通过DirectorySecurity对象的下列方法来访问目录的访问控制列表(ACL):
GetAccessControl:返回一个目录的Windows ACL作为一个DirectorySecurity对象。
SetAccessControl:将DirectorySecurity对象的ACl入口赋予指定目录。
为了正确应用这些方法,需要对DirectorySecurity类有深入的理解,因此下面我们对此作深入讲解。
DirectorySecurity
DirectorySecurity类定义了如何对目录访问进行审计。该类是潜在的Windows文件安全系统(System.Security.AccessControl命名空间的一部分)的一个抽象。
在该系统中,每个目录有一个自由决定的ACL来控制目录访问。同时,一个系统ACL决定对哪些访问控制进行审计。使用两个类FileSystemAccessRule 和FileSystemAuditRule来分别处理目录访问和审计。
FileSystemAccessRule类代表一个潜在的访问控制入口的抽象,访问控制入口用来指定用户账号,提供的访问类型(读、写等等)以及
是许可或拒绝某个权限。同时,该类还指定了如何将访问规则传递给子对象。FileSystemAuditRule类代表了为某个文件或目录定义审计规则的
ACE。
为了通过DirectorySecurity类为某个目录添加一条新规则,需要FileSystemAccessRule 和
FileSystemAuditRule两个类的新实例。我们从访问权限开始,当同DirectorySecurity类一起使用这些类时,需要创建新的
对象实例。列表A
包含了每个类的语法。
第一个参数指定每个应用该规则的用户、组或标识。第二个参数是FileSystemRights列表,用来指定用户(由第一个参数指定)可以进行的
操作,它包含很多可能的取值,包括:CreateDirectories、 CreateFiles、 Delete、 FullControl、
ListDirectory等等。
用于FileSystemAccessRule类的最后一个参数可用来指定用户能否执行参数二的操作。AccessControlType列表包括
两个可能取值:允许和拒绝。用于FileSystemAuditRule类的第三个参数可从AuditFlags列表的Failure、None或
Success中取值来设定审计级别。FileSystemAuditRule类的构造函数是重载的,这个方法是最基本的方法。
目录访问
Directory类可用来处理目录的ACL入口,为此,按照以下步骤进行处理:
通过Directory类的GetAccessControl方法来初始化一个DirectorySecurity对象。
通过DirectorySecurity对象指定目录访问规则。例如,使用AddAccessRule方法可以添加一个新规则。新规则定义为一个FileSystemAccessRule对象,它包含标识(用户、组等),系统权限和ACL。
调用Directory类的SetAccessControl方法来永久的改变ACL。
列表B
中的C#代码对C:盘中每个目录添加一个ACL入口。该入口提供了对特定用户的访问控制(DomainTechRepublicUser)。同时,删除了另一个访问规则,该规则对另一个用户没有任何所有控制(DomainTester)。列表C
包含VB.NET实现的相同功能的代码。
审计追踪
应用Directory类还可以指定目录安全审计规则。审计包含了前面例子中的访问规则处理,这两者的区别是审计使用FileSystemAuditRule类而不是使用FileSystemAccessRule 类。列表D
中的C# 代码包括了前面的例子,此外还增加和删除了目录ACL中的审计规则。列表E
包含了实现同等功能的VB.NET 代码。
相关文章推荐
- ubuntu下如何处理出现“ unable to execute ./DrClientLinux: No such file or directory”,“没有那个文件或目录”的问题。
- (精)如何利用T_SQL实现数据库备份与还原处理之一--(如何利用sql语句,得到数据库文件目录)
- 以jQuery中$.Deferred对象为例讲解promise对象是如何处理异步问题
- node---path模块,nodeJs的path对象,如何用来处理目录,path.join,path.resolve,path.relative.path
- 在利用ContextMenu处理长按事件时如何找到当前View的问题
- 以jQuery中$.Deferred对象为例讲解promise对象是如何处理异步问题
- 基于ASP.net C#技术来实现,介绍如何处理Session对象变量失效的问题
- oc 关于对象release后 指向它的指针如何处理的问题
- 你是如何处理“对非共享成员的引用要求对象引用”这个问题的?
- Java如何利用synchronized处理多线程的数据同步问题
- ASP.NET Core应用针对静态文件请求的处理[4]: DirectoryBrowserMiddleware中间件如何呈现目录结构
- 加载动态链接库文件.so 失败出错—— No such file or directory (没有文件或目录)问题处理
- 操作系统算法:如何利用信号量实现优先级(从读者写者问题引发的联想)
- 如何使处理事件响应的函数的域为触发事件的对象
- 如何处理心灵问题
- 如何利用.Net内置类,解析未知复杂Json对象
- 关于unity动态添加游戏对象问题,如何动态添加一个菜单【一】
- jquery mvc ajax json 当返回json的数据为数组对象时。该如何处理?
- python 处理中文遇到的编码问题总结 以及 字符str的编码如何判断