Я написал (.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);
Итак: пользователь «вверх» получает полный контроль и резервное копирование разрешения на чтение.
Вот как он блокируется "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" / Наследование: e / T Я могу активировать наследование.
Почему это не стандартно? Как это сделать программой?