我的应用正在创建一个目录,以便我可以在其中存储日志文件。我正在为目录添加用户安全性,但我不知道如何使其传播。例如,我将用户everyone
添加到目录中,read
和write
访问,但是当我的应用程序在此目录中创建日志文件时,日志文件没有继承了everyone
安全性(读,写)。
我错过了什么?
DirectorySecurity dirSec = Directory.GetAccessControl(_dbPath);
dirSec.AddAccessRule(new FileSystemAccessRule("Everyone", FileSystemRights.Write, AccessControlType.Allow));
dirSec.AddAccessRule(new FileSystemAccessRule("Everyone", FileSystemRights.ReadAndExecute, AccessControlType.Allow));
dirSec.AddAccessRule(new FileSystemAccessRule("Everyone", FileSystemRights.CreateFiles, AccessControlType.Allow));
Directory.SetAccessControl(_dbPath, dirSec);
答案 0 :(得分:5)
你快到了。您缺少的是AuthorizationRule.InheritanceFlags标志 - 默认情况下,ACE不可继承,但如果添加InheritanceFlags属性,ACE将变为可继承。
答案 1 :(得分:0)
在DirectorySecurity下的MSDN中,它有这一行:
Use the FileSecurity class to retrieve, add, or change the access rules that represent the DACL and SACL of a file.
我认为您需要查看更改文件的ACL ...
MSDN参考: http://msdn.microsoft.com/en-us/library/system.security.accesscontrol.directorysecurity.aspx