0

我正在将 ADGroups 添加到文件夹权限(权限正在正确应用)。如何防止我添加的 ADGroups 继承?

我已经尝试了几乎所有东西和变化 IG

$InheritanceFlag=[System.Security.AccessControl.InheritanceFlags]@("ContainerInherit,ObjectInherit") $InheritanceFlag=[System.Security.AccessControl.InheritanceFlags]::"ContainerInherit,ObjectInherit" $InheritanceFlag=[System.Security.AccessControl.InheritanceFlags]"ContainerInherit,ObjectInherit" $InheritanceFlag=[System.Security.AccessControl.InheritanceFlags]"ContainerInherit" $InheritanceFlag=[System.Security.AccessControl.InheritanceFlags]"ObjectInherit"

还尝试了以下与上述组合。

$PropagationFlag=[System.Security.AccessControl.PropagationFlags]"None" $PropagationFlag=[System.Security.AccessControl.PropagationFlags]::None $PropagationFlag=[System.Security.AccessControl.PropagationFlags]::InheritOnly $PropagationFlag=[System.Security.AccessControl.PropagationFlags]::NoPropagateInherit

还有引号。此外:

$ACL.SetAccessRuleProtection($true,$true) |Set-Acl $sFoldPath $ACL.SetAccessRuleProtection($false,$false) |Set-Acl $sFoldPath $ACL.SetAccessRuleProtection($true,$false) |Set-Acl $sFoldPath

我已经在这里工作了 4/5 天,并且几乎在我的各种搜索结果的第一 2 页上加载了每个链接。加上昨晚和今天在此处发布寻求帮助之前研究了 StackOverflow 的每条建议。

我完全不知道我做错了什么,现在正在向社区寻求您可以提供的任何帮助或见解。


$InheritanceFlag=[System.Security.AccessControl.InheritanceFlags]@("ContainerInherit,ObjectInherit") # "ContainerInherit,ObjectInherit"
$PropagationFlag=[System.Security.AccessControl.PropagationFlags]"None" # "InheritOnly" # NoPropagateInherit # This property is significant only when the value of the InheritanceFlags enumeration is not None.
$AccessControlType=[System.Security.AccessControl.AccessControlType]"Allow "


    ForEach ($oCol in $oCSVData){
                   $sFoldPath=$oCol.'FolderPath'.Trim()           
           $IdentityReference=$oCol.'GroupNames'.Trim()

If ($IdentityReference.Substring($IdentityReference.Length - 2) -eq '_R') {
        $sPermission= ('ReadAndExecute','Read','ListDirectory')
  }  Else {
        $sPermission='Modify' 
} 

$ACL = Get-Acl $sFoldPath

$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($IdentityReference,$sPermission,$InheritanceFlag,$PropagationFlag,'Allow')

$ACL.SetAccessRuleProtection($true,$true)

$ACL.AddAccessRule($AccessRule) 

$ACL | Set-Acl $sFoldPath
    }

我的要求是我需要将 AD 组与文件夹关联,分配权限并确保 AD 组权限在上下文窗口中可见;并且没有被分配为特殊权限。最后,广告组权限不会被继承。

4

2 回答 2

0

如果您正在寻找能够查看目录内容并能够访问该目录中的文件的用户,您只需要 ObjectInherit 继承标志,而不需要传播标志。听起来您只是想为特定组添加对特定文件夹的访问权限,所以除非您尝试删除继承的权限(例如,您真的要删除 SYSTEM 帐户或域管理员的权限吗?)可以跳过 SetAccessRuleProtection 步骤。我认为这应该做你想要的:

$InheritanceFlag=[System.Security.AccessControl.InheritanceFlags]"ObjectInherit" # ObjectInherit ensurs only objects are accessable, not subfolders
$PropagationFlag=[System.Security.AccessControl.PropagationFlags]"NoPropagateInherit"

ForEach ($oCol in $oCSVData){
    $sFoldPath=$oCol.'FolderPath'.Trim()           
    $IdentityReference=$oCol.'GroupNames'.Trim()

    $sPermission= If ($IdentityReference.Substring($IdentityReference.Length - 2) -eq '_R') {
         'ReadAndExecute,ListDirectory'
    }  Else {
         'Modify' 
    } 

    $ACL = Get-Acl $sFoldPath

    $AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($IdentityReference,$sPermission,$InheritanceFlag,$PropagationFlag,'Allow')

    $ACL.AddAccessRule($AccessRule) 

    $ACL | Set-Acl $sFoldPath
}
于 2019-04-16T18:54:17.050 回答
0

我有一个脚本,它几乎可以完成您所要求的完全相同的事情。这是我发现的有效方法:

$folderACL = Get-ACL (Path\to\folder)

$inherit = [system.security.accesscontrol.InheritanceFlags]"ContainerInherit, ObjectInherit"
$propagation = [system.security.accesscontrol.PropagationFlags]"None"

$accessRule = New-Object system.security.accesscontrol.filesystemaccessrule("Domain\User","Modify", $inherit, $propagation, "Allow")

$folderACL.SetAccessRule($accessRule)

#Set folder inheritance to off
$folderAcl.SetAccessRuleProtection($True,$false)

Set-Acl (Path\to\folder) -AclObject $folderAcl
于 2019-04-16T18:41:23.333 回答