我在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 \
)
但是,如何在世界上我知道要繼承的東西,除非我從根文件夾走完整個路徑並一直建立繼承關係?
OBJECT_INHERIT_ACE和CONTAINER_INHERIT_ACE都已經在根文件夾的ACE上設置。根本沒有在文件夾上設置INHERITED_ACE權限。當我刪除直接在文件夾上設置的任何權限時,我最終在文件夾上根本沒有權限。我試圖「重置」或「重新添加」所有遺留的INHERITED_ACE標誌,這些標誌在關閉繼承時被刪除。 – David 2012-08-14 05:21:20
在這種情況下,安全描述符可能被設置爲受保護。這對應於取消選中UI中的「包含可繼承權限」。您應該能夠通過將安全描述符設置爲無,或者使用UNPROTECTED_DACL_SECURITY_INFORMATION將其設置爲完全刪除安全描述符 – 2012-08-14 05:43:21
。 – 2012-08-14 05:44:42