我正在将ADGroups添加到文件夹权限(权限已正确应用)。如何防止要添加的ADGroup继承?
我已经尝试了几乎所有的内容和变化形式。
$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天,并在各种搜索结果的第1页和第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组”权限在上下文窗口中可见。而不是被分配为特殊权限。最后,广告组权限没有被继承。
答案 0 :(得分: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
答案 1 :(得分:0)
如果您正在寻找能够查看目录内容并能够访问该目录中文件的用户,则只需要ObjectInherit继承标志,而无需传播标志。听起来您只是想添加对特定组的特定文件夹的访问权限,所以除非您尝试删除继承的权限(例如,您是否真的要删除SYSTEM帐户或Domain Admins的权限?),否则您可以跳过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
}