程序化ACL继承

时间:2019-05-07 06:23:35

标签: .net windows acl

我编写了一个(.net / c#)程序,使用ACL创建文件夹:

ds = new DirectorySecurity();
ds.SetOwner(up.Sid);
ds.AddAccessRule(new FileSystemAccessRule(up.Sid, FileSystemRights.FullControl, AccessControlType.Allow));
ds.AddAccessRule(new FileSystemAccessRule(up.Sid, FileSystemRights.FullControl, InheritanceFlags.ContainerInherit, PropagationFlags.InheritOnly, AccessControlType.Allow));
ds.AddAccessRule(new FileSystemAccessRule(up.Sid, FileSystemRights.FullControl, InheritanceFlags.ObjectInherit, PropagationFlags.InheritOnly, AccessControlType.Allow));
ds.AddAccessRule(new FileSystemAccessRule(new SecurityIdentifier("S-1-5-32-551"), FileSystemRights.Read, InheritanceFlags.ObjectInherit, PropagationFlags.InheritOnly, AccessControlType.Allow)); // Backup operators                       
DirectoryInfo directory = Directory.CreateDirectory(path, ds);

因此:“ up”用户将获得完全控制权并备份用户具有读取权限。

这是使用“ icacls”锁定的方式:

C:\Windows>icacls \\testsrv16\Share\SecFold\data\
\\testsrv16\Share\SecFold\data\ VORDEFINIERT\Sicherungs-Operatoren:(OI)(IO)(R)
                                TEST\XXXUser:(OI)(CI)(F)

(“ XXXUser-创建的用户; Sicherungs-Operatoren:备份用户)

创建的文件夹“ y”:

C:\Windows>icacls \\testsrv16\Share\SecFold\data\y
\\testsrv16\Share\SecFold\data\y VORDEFINIERT\Sicherungs-Operatoren:(OI)(IO)(R)
                                 TEST\XXXUser:(OI)(CI)(F)

所以: 每个权限都被复制,而不是被继承。

使用icacls "C:\demo\example" /inheritance:e /T,我可以激活继承。

为什么这不是标准?如何通过程序执行此操作?

0 个答案:

没有答案