首页 文章

在Windows上检查非高架用户的文件权限

提问于
浏览
1

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

  • 我得到与调用 GetNamedSecurityInfo 的文件关联的DACL

  • 我用众所周知的SID调用 CreateWellKnownSid ,例如 WinAuthenticatedUserSid (用户组)

  • 我调用 BuildTrusteeWithSid 以使用先前的SID构建TRUSTEE

  • 我与先前创建的受托者调用 GetEffectiveRightsFromAcl 以获得有效的acl

  • 我检查ACL是否包含Write Flag设置 .

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

此致,Ant

1 回答

  • 1

    我采取略有不同的方法:

    • 通过 GetExplicitEntriesFromAcl 获取所有ACE的文件及其所有父项

    • 选择 GRANT_ACCESSSET_ACCESS ACE

    • 从所选ACE中获取受托人列表

    • 对于每个受托人,执行访问检查 . GetEffectiveRightsFromAcl 可能是最简单的解决方案 .

    你想要特别想想你想要对所有者做什么 . 他可以随时改变权利 .

相关问题