4

我在 NTFS 分区(在 Windows 2008 上)上有很多文件夹,它们没有从他们的父母那里继承他们的权限。

我想重置它,以便它们确实包含那些父权限(相当于选中“高级安全设置”区域下的“包括来自该对象的父级的可继承权限”复选框)。

由于我们在这里将 Python 用于其他一些系统管理任务,因此如果可能的话,我想用 Python 来完成(我知道如何在 VBScript 中完成,但这不会是一次性脚本,而是定期运行,因此应该与我们的代码库的其余部分集成)。

我一直在使用来自http://timgolden.me.uk/python/win32_how_do_i.html和 Google 的优秀 pywin32 扩展和示例来开始使用,但我看不出有任何方法可以简单地说“从父级继承权限。 "

使用 AddAccessAllowedAceEx,我什至可以通过添加 INHERITED_ACE 标志来伪造某些东西的继承,无论它是否真的来自父级:

dacl.AddAccessAllowedAceEx( \
  win32security.ACL_REVISION_DS \
, win32security.OBJECT_INHERIT_ACE | win32security.CONTAINER_INHERIT_ACE | win32security.INHERITED_ACE \
, ntsecuritycon.FILE_GENERIC_READ | ntsecuritycon.FILE_GENERIC_EXECUTE \
, some_sid_here \
)

但是,除非我从根文件夹遍历整个路径并一直构建继承,否则我怎么知道要继承哪些东西呢?

4

1 回答 1

1

需要在根文件夹的 ACE 上设置 OBJECT_INHERIT_ACE 和 CONTAINER_INHERIT_ACE。您可能还想清除直接在每个子文件夹和文件上设置的任何权限。(那些将是在其 ACE 标志中不包含 INHERITED_ACE 的那些)。

于 2012-08-14T04:50:07.630 回答