9

我的应用程序正在创建一个目录,以便我可以在其中存储日志文件。我正在向目录添加用户安全性,但我不知道如何使其传播。例如,我将用户添加everyone到目录中,使用readwrite访问,但是当我的应用程序在此目录中创建日志文件时,日志文件没有继承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);
4

2 回答 2

5

您快到了。您缺少的是AuthorizationRule.InheritanceFlags标志 - 默认情况下 ACE 不可继承,但如果您添加 InheritanceFlags 属性,则 ACE 将变为可继承。

于 2009-11-28T20:00:18.553 回答
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

于 2009-11-28T14:53:49.183 回答