программное наследование ACL - PullRequest
0 голосов
/ 07 мая 2019

Я написал (.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 Я могу активировать наследование.

Почему это не стандартно? Как это сделать программой?

...