2012-08-14 40 views
4

我在NTFS分区(Windows 2008上)上有很多文件夹不从父母继承权限。使用Python重置NTFS文件夹上的继承权限

我想重置它,以便它们包含这些父权限(等同于在“高级安全设置”区域下检查“在此对象的父级包含可继承权限”复选框)。

由于我们在这里使用Python进行其他系统管理任务,如果可能的话,我想在Python中执行它(我知道如何在VBScript中执行此操作,但这不会是一次性脚本,但是要定期运行,所以应该与我们其他的代码库集成)。

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

使用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 \ 
) 

但是,如何在世界上我知道要继承的东西,除非我从根文件夹走完整个路径并一直建立继承关系?

回答

1

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

+0

OBJECT_INHERIT_ACE和CONTAINER_INHERIT_ACE都已经在根文件夹的ACE上设置。根本没有在文件夹上设置INHERITED_ACE权限。当我删除直接在文件夹上设置的任何权限时,我最终在文件夹上根本没有权限。我试图“重置”或“重新添加”所有遗留的INHERITED_ACE标志,这些标志在关闭继承时被删除。 – David 2012-08-14 05:21:20

+0

在这种情况下,安全描述符可能被设置为受保护。这对应于取消选中UI中的“包含可继承权限”。您应该能够通过将安全描述符设置为无,或者使用UNPROTECTED_DACL_SECURITY_INFORMATION将其设置为完全删除安全描述符 – 2012-08-14 05:43:21

+1

。 – 2012-08-14 05:44:42