试图阻止安全组应用于其他 folders/files

Trying to prevent a security group from applying to other folders/files

我正在努力做到 $ADNameRO$ADNameRW(我在下面创建的)不会应用到它下面的文件夹,但让其余权限遗传。

我已经尝试更改这两个字符串的传播标志,以便它仅应用于添加到的文件夹和文件,但它仍然被添加到子文件和文件夹...

我认为我可能需要将这两个字符串的 InheritanceFlags 更改为 Object,但是当我手动更改它时(通过 Windows GUI)它似乎无法正常工作...

如有任何帮助,我们将不胜感激。

function New-Ace {
  [CmdletBinding()]
  Param(
    [Parameter(Mandatory=$true, Position=0)]
    [Security.Principal.NTAccount]$Account,
    [Parameter(Mandatory=$false, Position=1)]
    [Security.AccessControl.FileSystemRights]$Permissions = 'ReadAndExecute',
    [Parameter(Mandatory=$false, Position=2)]
    [Security.AccessControl.InheritanceFlags]$InheritanceFlags = 'ContainerInherit,ObjectInherit',
    [Parameter(Mandatory=$false, Position=3)]
    [Security.AccessControl.PropagationFlags]$PropagationFlags = 'None',
    [Parameter(Mandatory=$false, Position=4)]
    [Security.AccessControl.AccessControlType]$Type = 'Allow'
  )

  New-Object Security.AccessControl.FileSystemAccessRule(
    $Account, $Permissions, $InheritanceFlags, $PropagationFlags, $Type
  )
}

$domain = 'ESG.INTL'
$administrators = ([wmi]"Win32_Sid.Sid='S-1-5-32-544'").AccountName
$ADDomainUsers = "$domain\Domain Users"

$acl = Get-Acl $path

$administrators, "$domain\Domain Admins" | ForEach-Object {
  $acl.AddAccessRule((New-Ace $_ 'FullControl'))
}
$acl.AddAccessRule((New-Ace $ADNameRW 'Modify'))
$acl.AddAccessRule((New-Ace $ADNameRO 'ReadAndExecute'))
$acl.AddAccessRule((New-Ace $ADDomainUsers 'ReadAndExecute'))

在不继承的情况下设置对文件夹和文件的访问权限需要两个 ACE:一个用于 "this folder only",一个用于 "files only"。对于前者,将继承和传播标志都设置为 None,对于后者,将继承标志设置为 ObjectInherit,将传播标志设置为 InheritOnly:

$acl.AddAccessRule((New-Ace $ADNameRW 'Modify' 'None'))
$acl.AddAccessRule((New-Ace $ADNameRW 'Modify' 'ObjectInherit' 'InheritOnly'))
$acl.AddAccessRule((New-Ace $ADNameRO 'ReadAndExecute' 'None'))
$acl.AddAccessRule((New-Ace $ADNameRO 'ReadAndExecute' 'ObjectInherit' 'InheritOnly'))