文件和目录的访问控制(2) 添加访问控制
2012-06-23 22:44
253 查看
文件和目录的访问控制(2) 添加访问控制
对文件和目录访问控制的操作基本相同,对于同一种操作本书在通常情况下不重复举例,读者可自行实践。代码清单7-9是一个简单的示例,用来演示对文件添加访问控制。
代码清单 7-9 对文件添加访问控制
using(FileStream file = new FileStream(@"E:\AclTest\acltest.txt", FileMode.Open, FileAccess.ReadWrite))
{
FileSecurity security = file.GetAccessControl();
FileSystemAccessRule rule = new FileSystemAccessRule(
new NTAccount(@"XuanHunComputer\xuanhun"), FileSystemRights.Read,
AccessControlType.Allow);
security.AddAccessRule(rule);
file.SetAccessControl(security);
}
现在通过分析代码清单7-9来了解控制添加单个文件访问控制的细节。首先要做的是获取对文件的访问实例,这里使用FileStream,也许使用File或者FileInfo是你更喜欢的选择。通过对调用GetAccessControl方法来检索该文件的安全对象(类型为FileSecurity);除了包含其他内容以外,该对象还包含一组有序的访问规则,它们共同确定了各种用户和组对该文件所具有的权利。在该示例中,将一个新的访问规则添加到FileSecurity对象中,以便向名为xuanhun的用户授予文件的访问权。在更改生效之前,必须将其持久保存在存储器中。最后这个步骤是通过调用SetAccessControl方法完成的。
代码清单7-9说明了如何向现有文件分配访问权,那么如何在创建文件的初始就分配权限呢?这样做有一个重要的安全原因:可确保安全的对象总是用一些默认的安全语义创建的。默认情况下,分层式资源管理器(例如文件系统或注册表)中的对象从其父对象中继承它们的安全设置,文件从它们的父目录中继承它们的安全设置。默认权利取决于所创建对象的类型,而且可能不是您所希望的那样。例如,您很少会有意创建每个人都具有完全访问权限的对象,但这却可能恰好是默认安全设置所指定的权限。不能简单地用默认安全设置创建对象并且在以后修改这些设置,产生此问题的原因是:在已经创建对象之后对其加以保护会打开一个机会窗口(在创建和修改之间),在此期间,该对象可能被劫持。劫持可能导致创建者失去对刚刚所创建对象的控制,这会造成灾难性的后果。代码清单7-10演示了在如何创建文件时配置访问规则。
代码清单 7-10
为新创建文件添加规则
FileSecurity security = new FileSecurity();
FileSystemAccessRule rule = new FileSystemAccessRule(
new NTAccount(@"XuanHunComputer\xuanhun"), FileSystemRights.Read,
AccessControlType.Allow);
security.AddAccessRule(rule);
FileStream file = new FileStream(
@"M:\temp\sample.txt", FileMode.CreateNew, FileSystemRights.Read,
FileShare.None, 4096, FileOptions.None, security);
代码清单7-10与代码清单7-9执行的是相同的操作,但顺序不同,并且无需持久保存更改(因为对象是全新的)。在创建文件之前,先创建一个FileSecurity对象,并且用所需的访问规则填充它。随后,FileSecurity实例被传递给文件的构造函数,该文件从一开始就被正确地加以保护。
----------------注:本文部分内容改编自《.NET 安全揭秘》。
相关文章推荐
- [添加用户]解决useradd 用户后没有添加用户Home目录的情况,Linux改变文件或目录的访问权限命令,linux修改用户密码,usermod的ysuum安装包。飞
- Linux服务器权限管理实践——添加用户只访问某些文件目录
- 解决useradd 用户后没有添加用户Home目录的情况,Linux改变文件或目录的访问权限命令,linux修改用户密码
- 文件和目录的访问控制(3) 访问规则
- 文件和目录的访问控制(4) 审核规则
- rails为paperclip上传文件添加访问控制
- 使用apache htpasswd生成加密的密码文件,并使用.htaccess控制目录访问
- 用web.config文件控制对目录的访问(转贴)
- [添加用户]解决useradd 用户后没有添加用户Home目录的情况,Linux改变文件或目录的访问权限命令,linux修改用户密码
- .NET 控制Windows文件和目录访问权限研究(FileSystemAccessRule)
- IIS虚拟目录内的视频文件访问出错:HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。
- apache 配置文件目录访问权限控制
- LAMP架构(配置防盗链,目录访问控制,文件/链接访问控制)
- Android开发学习---android下的数据持久化,保存数据到rom文件,android_data目录下文件访问的权限控制
- 文件和目录的访问控制(1) 访问控制列表
- Nginx列出目录和文件并用密码控制访问权限配置方法
- .htaccess文件设置某目录下所有文件禁止访问
- Android 使用版本控制工具时添加忽略文件方式
- Maven项目中如何将自定义标签的tld文件添加到META-INF目录下
- 在XNA 3.0 项目添加声音——播放并控制简单的.wav声音文件