gpt4 book ai didi

c++ - 在 Windows 上检查非提升用户的文件权限

转载 作者:太空宇宙 更新时间:2023-11-04 12:11:55 28 4
gpt4 key购买 nike

我正在为 Windows(XP/7) 平台编写一些 C++ 代码来检查与文件关联的权限。我想验证我正在阅读的文件不能由具有非提升权限的帐户写入。这是我目前正在做的:

  • 我获得了与调用 GetNamedSecurityInfo
  • 的文件相关联的 DACL
  • 我用众所周知的 Sid 调用 CreateWellKnownSid,例如 WinAuthenticatedUserSid(用户组)
  • 我调用 BuildTrusteeWithSid 以使用之前的 SID 构建一个 TRUSTEE
  • 我用之前创建的受托人调用 GetEffectiveRightsFromAcl 以获得有效的 acl
  • 我检查 ACL 不包含写入标志集。

此代码非常适合用户组。其他组(如 Everyone、Guests 或其他可能对文件具有特定写入权限的特定用户)又如何呢?我想找到一个不需要枚举所有可能的 SID 并检查所有 SID 的解决方案。是否有我可以使用的 SID,例如“除了管理员之外的任何东西”?

问候, Ant

最佳答案

我会采取稍微不同的方法:

  1. 通过 GetExplicitEntriesFromAcl 获取文件及其所有父级的所有 ACE
  2. 选择 GRANT_ACCESSSET_ACCESS ACE 的
  3. 从选定的 ACE 中获取受托人列表
  4. 对每个受托人执行访问检查。 GetEffectiveRightsFromAcl 可能是这里最简单的解决方案。

您需要具体考虑要对 OWNER 做什么。他可以随时更改权限。

关于c++ - 在 Windows 上检查非提升用户的文件权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9432228/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com