在我配置Active Directory以便将计算机移动的能力委托给帮助台工作人员之后,我开始听到有关计算机会在特定OU中“卡住”的报告.他们可以移动计算机,但在尝试移动计算机时会收到“拒绝访问”消息.该问题是100%可重现的,并且仅出现在我们域中的少量OU上.
两个OU都有Protect对象启用意外删除.
我所知道的
使用ldp.exe检查ACL确实揭示了一个微小但重要的区别.出于某种原因,只有一个OU的属性ACTRL_DS_DELETE_CHILD被拒绝给所有人.
在OU上打开和关闭Protect对象标志不能解决问题.它确实按预期修改了ACL,但在任何一种情况下ACTRL_DS_DELETE_CHILD标志都是完全未修改的.
我可以使用此解决方案来“修复”特定的OU:
>关闭Protect对象标志
>删除与Everyone关联的拒绝ACE.
>重新打开Protect对象
>现在ACL的匹配.
可能是不同版本的Active Directory或远程服务器管理工具可能与保护对象标志在OU上实际表示的方式有不同的行为?
问题
什么可能导致这种差异,我该怎么做才能确保它在Active Directory域中的所有OU上得到纠正?
细节
统一差异看起来像这样:
18c18 < Ace Mask: 0x00010042 --- > Ace Mask: 0x00010040 20d19 < ACTRL_DS_DELETE_CHILD
如何识别受影响的组织单位
编辑:我写了一个PowerShell脚本来找到设置了这个标志的组织单位.
$Base = "OU=MyOU,DC=your,DC=domain,DC=com" Import-Module ActiveDirectory Set-Location AD: Get-ADOrganizationalUnit -SearchBase $Base -filter * | ForEach-Object { $matches = @( (Get-ACL $_.DistinguishedName).access | Where-Object { $_.IdentityReference -eq "Everyone" } | Where-Object { $_.ActiveDirectoryRights -like "*DeleteChild*" } ) if ($matches.length -gt 0) { Write-Output $_ } } | Format-Table DistinguishedName
在组织单位上启用Protect对象以防止意外删除标志时,它会影响该对象及其父对象的ACL.
>受保护的OU获取{拒绝,所有人,删除DeleteSubtree}
>父OU获取{Deny,Everyone,DeleteChildObjects}
父级上的访问控制条目是强制保护所必需的,但确实会产生类似于此处观察到的意外结果.无论您切换保护标志多少次,父级上的拒绝访问控制条目都不会自动删除.
因此,在我使用的Active Directory中,任何曾经包含受保护的OU(基本上都是任何非叶OU)的OU上都有Deny DeleteChild ACE,因此从用户的角度“捕获”该OU中的计算机对象具有委派权限.
通过:Protect object from accidental deletion on Technet Forums
解
通过确保用于委派权限的基本OU在ACL中具有这两个访问控制条目,可以轻松解决此问题.
> {允许,GROUP,创建/删除计算机对象,此对象和所有后代} *
> {允许,删除DeleteSubtree,后代计算机对象}
我已经在我的目录中的相关OU上配置了第一个访问控制条目,但现在我知道这是不够的.每当创建受保护的OU时,自动拒绝ACE设置就会取消第一条规则.第二个规则允许直接删除对象,从而绕过子OU受保护时设置的拒绝条目.
*(第一条规则现在可能是多余的.有人可以确认吗?)