【问题标题】:user account "effective permissions" with powershell使用PowerShell的用户帐户“有效权限”
【发布时间】:2012-05-30 12:53:41
【问题描述】:

我需要比较 AD 用户的权限(一个用户可以“取消设置”一个属性而另一个不能,两者都可以更改它)。

如何转储/比较当我使用 powershell 转到user account > Security > Advanced > Effective Permissions(并选择一个用户帐户)时找到的用户帐户“有效权限”?

【问题讨论】:

  • 我使用了来自sourceforge.net/projects/adumass/files 的代码 - 为自己更改了它以编辑“forwardingaddress”属性。它适用于编辑,但有时清除 (ADS_PROPERTY_CLEAR) 不起作用。我进一步发现,如果用户对电话号码或寻呼机或移动属性具有写入权限(和值),则清除转发地址不起作用。如果命名属性为空或用户没有写入权限,则清除 forwardingaddress 有效。

标签: powershell windows-server-2008 user-accounts user-permissions


【解决方案1】:

使用Quest Free PowerShell Commands for Active Directory 很简单:

Get-QadPermission useraccountname -Inherited 

或者更好的方法:

Get-QADUser -Name useraccountname -SecurityMask DACL | Get-QADPermission -Inherited -SchemaDefault

这将返回为用户“useraccountname”分配的所有有效权限 Inherited 或 Explicit

可以使用compare-object 进行比较。 一个很简单的例子:

compare-object (Get-QADPermission userA -Inherited | select Rights) (Get-QADPermission userB -Inherited | select rights)

【讨论】:

  • 谢谢,它帮助了我。尽管这些命令不会详细显示/解析权限。他们只说 f.ex。 “读/写个人信息”或“特殊”不像“有效权限”选项卡中显示的那样。
  • 你可以试试 dsacls.exe ,在这里阅读technet.microsoft.com/en-us/library/cc753491.aspx 但我不知道是否能满足你的所有需求。
  • dsacls 正是我所需要的。谢谢!
【解决方案2】:

我们曾经遇到过类似的情况,需要知道谁可以删除我们的主要 OU 之一,因此我们认为也许应该将 ACL 转储到 OU 上,并查找对该对象具有删除权限的每个人。当然 dsacls 在这方面很有帮助,我们可以轻松地将 ACL 转储到它上面。

然后,当我们开始查看 ACL 时,我们发现它有近 60 个权限条目,其中包括大约 6 个拒绝条目,其中一些是直接的,另一些是继承的。我们最初没有考虑拒绝,并提出了一个大约 200 名可以删除 OU 的用户的列表,但这似乎不对(;它似乎太高了。)然后,我们意识到我们必须将拒绝与允许!

所以我们将所有拒绝权限和所有允许权限都展平,但随后我们必须弄清楚哪些拒绝会适用,因为其中一些是继承的,而且我相信继承的拒绝不会否定任何直接允许,所以这需要一些更艰苦的工作,在做的时候我们意识到一些继承的权限不适用于对象,所以我们必须从头开始!

最后,我们几乎放弃了,当我问我们的一位企业管理员时,他说我们需要做的是确定我们 OU 上的有效权限,他指给我们Active Directory 用户和计算机管理单元中的>有效权限选项卡

因此,我们启动了 ADUC 并导航到“有效权限”选项卡,并认为只需在某处单击“确定”即可。但是,我们很快意识到需要我们单独输入每个人的姓名。现在,我们的环境中有近 2000 人,所以我们无法将 2000 人的名字一一列出。另一件事是,即使对于一个人,它也会向我们显示该人的所有有效权限,并且在技术方面,我们必须进一步完善。

然后我们认为我们应该试一试 Powershell,并查看了使用 Powerhsell 执行此操作的许多选项,但使用 Powershell 确定 AD 中的有效权限并不容易,这令人失望。特别是,我们尝试了 Quest 的免费 PowerShell 命令 Get-QadPermission useraccountname 和 Get-QADUser -Name useraccountname,但我们很失望地看到这仅检索了所有权限的列表为给定用户指定。它没有透露授予用户的有效权限。我们发现自己必须从它返回的结果开始,然后手动尝试确定有效的权限,这不值得我们花时间。

所以,我们几乎放弃了希望,但在退出之前,我们认为我们只需要谷歌“Active Directory Effective Permissions Tool”,希望一定有一些东西可以做到这一点我们。我很高兴我们这样做了,因为我们找到了一个可以完全满足我们需要的工具:找出我们 OU 的有效权限并让我们能够导出这些有效权限 -

http://www.paramountdefenses.com/goldfinger_capabilities_true_effective_permissions_for_active_directory.html

我们发现此工具(称为AD 的金手指)能够确定 Active Directory 对象的有效权限,并提供输出以便我们可以轻松查看所有用户的列表对对象具有特定权利的“有效权限”。例如,我们能够使用它来确定和枚举对我们感兴趣的 OU 拥有“有效删除访问”权限的所有管理员的列表。

事实证明,这对我们很有帮助,也许对您也有帮助。我只是想我会分享这个,因为我一直是 dsacls 路线,我不希望你经历我们在尝试手动执行此操作时所经历的同样痛苦。手动操作太痛苦了。

【讨论】:

    猜你喜欢
    • 2014-01-04
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多