Безопасность каталогов - PullRequest
       18

Безопасность каталогов

9 голосов
/ 28 ноября 2009

Мое приложение создает каталог, чтобы я мог хранить в нем файлы журналов. Я добавляю безопасность пользователей в каталог, но я не знаю, как заставить его распространяться. Например, я добавляю пользователя 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);

Ответы [ 2 ]

5 голосов
/ 28 ноября 2009

Ты почти у цели. Вам не хватает только флага AuthorizationRule.InheritanceFlags - по умолчанию ACE не наследуются, но если вы добавите атрибут InheritanceFlags, ACE станут наследуемыми.

0 голосов
/ 28 ноября 2009

В MSDN под DirectorySecurity он имеет следующую строку:

Use the FileSecurity class to retrieve, add, or change the access rules that represent the DACL and SACL of a file.

Я думаю, это то, на что вам нужно обратить внимание, чтобы изменить ACL файла ...

MSDN Ref: http://msdn.microsoft.com/en-us/library/system.security.accesscontrol.directorysecurity.aspx

...