2012-08-14 109 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