两个OU具有相同的“保护对象从删除”设置不同的ACL

背景

在configuration我们的活动目录以便将电脑移动到服务台工作人员的能力之后,我开始听到报告说计算机会被“卡住”在特定的OU中。 他们可以移动一台电脑,但是当试图移动一台电脑时会得到“拒绝访问”的信息。 这个问题是100%可重复的,只存在于我们领域的一小部分OU。

两个OU的Protect object from accidental deletion都不允许Protect object from accidental deletion

我已经知道了

使用ldp.exe检查ACL确实显示出一个微小但重要的区别。 出于某种原因,只有一个OU的ACTRL_DS_DELETE_CHILD属性被拒绝给Everyone

在任一OU上打开和closuresProtect object标志都不能解决问题。 它按照预期修改了ACL,但ACTRL_DS_DELETE_CHILD标志在任何情况下都是完全未修改的。

我可以使用这个解决scheme来“修复”一个特定的OU:

  1. closuresProtect object标志
  2. 删除与每个人关联的拒绝ACE。
  3. 打开Protect object
  4. 现在ACL的匹配。

难道不同版本的Active Directory或远程服务器pipe理工​​具可能与Protect object标志在OU上的实际表示方式有不同的行为?

问题

什么可能会导致这种差异,我能做些什么来确保它在Active Directory域中的所有OU上得到纠正?

细节

统一差异是这样的:

 18c18 < Ace Mask: 0x00010042 --- > Ace Mask: 0x00010040 20d19 < ACTRL_DS_DELETE_CHILD 

小的ACE ACL区别阻止移动的计算机对象

如何识别受影响的组织单位

编辑:我写了一个PowerShell脚本来find有这个标志设置他们的组织单位。

 $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 object from accidental deletion标志时,它将影响该对象及其父项的ACL。

  1. 受保护的OU获取{Deny,Everyone,Delete + DeleteSubtree}
  2. 父OU获取{Deny,Everyone,DeleteChildObjects}

父级上的访问控制条目对于实施保护是必要的,但确实有类似此处所述的意外结果。 无论您切换protect标志多less次,父母的拒绝访问控制条目都不会自动删除。

因此,在我正在使用的Active Directory中,任何曾经包含受保护的OU(基本上是任何非叶OU)的OU都拥有Deny DeleteChild ACE,因此从用户的angular度“陷入”该OU中的计算机对象与委派的权限。

通过: 在Technet论坛上防止意外删除对象

这可以通过确保用于委派权限的基本OU在ACL中具有这两个访问控制项来轻松解决。

  1. {允许,GROUP,创build/删除计算机对象,这个对象和所有后代}
  2. {Allow,GROUP,Delete + DeleteSubtree,后代计算机对象}

我已经在我的目录中的相关OU中configuration了第一个访问控制条目,但现在我知道这是不够的。 当创build受保护的OU时,第一条规则被设置的自动拒绝 ACE取消。 第二个规则允许直接删除一个对象,从而绕过在保护子OU时设置的拒绝条目。

*( 第一条规则现在可能是多余的,任何人都可以确认吗?)