使用 Python 重置 NTFS 文件夹的继承权限



我在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 
)

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

需要在

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

最新更新