我编写了一个(.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,我可以激活继承。
为什么这不是标准?如何通过程序执行此操作?