为本地管理员获取带有用户SID的SDDL

本文关键字:用户 SID SDDL 管理员 获取 | 更新日期: 2023-09-27 18:11:59

我正在尝试使用windows安全描述符来管理跨机器共享的一些对象的安全性。(细节与这个问题无关)

我基本上构建了一个ACL并将其转换为SDDL,我将其与对象一起保存为其权限。我有系统基本上工作,除了某些帐户,特别是本地管理员帐户,当我调用"GetSecurityDescriptorSddlForm()"时,它是用别名代替真正的SID。

例如,假设我有一个SID为

的本地管理员帐户
S-1-5-21-1234567890-1234567890-1234567890-500

我希望得到像

这样的SDDL
D:(A;;CCDCLCSWRPWP;;;S-1-5-21-1234567890-1234567890-1234567890-500)

但是结果却是

D:(A;;CCDCLCSWRPWP;;;LA)

这样做的问题是,如果对象在不同的机器之间共享,当从sddl字符串创建安全对象时,它会将"LA"解释为该机器上的本地管理员,即使它应该是另一台机器上的本地管理员。本地管理员的完整SID将是特定于机器的,不会有这个问题。在我的例子中,我希望能够将不同机器的本地管理员视为不同的实体。

是否有可能获得"ObjectSecurity. net"。GetSecurityDescriptorSddlForm"方法以输出完整的sddl而不是以某种方式输出较短的别名?

为本地管理员获取带有用户SID的SDDL

如果您让您的工作组中另一台计算机的域管理员D:(A;;CCDCLCSWRPWP;;;DA)应该可以解决问题。

DA是SDDL中的域管理员。

https://itconnect.uw.edu/tools-services-support/it-systems-infrastructure/msinf/other-help/understanding-sddl-syntax/

否则,您将不得不恢复到CO(创建者所有者),并在其他计算机上使用该帐户创建。