2012-08-14 2 views
4

부모로부터 사용 권한을 상속받지 않는 NTFS 파티션 (Windows 2008)에 폴더가 상당히 있습니다.Python을 사용하여 NTFS 폴더에서 상속 된 사용 권한 재설정

고급 권한 설정 영역에서 "이 개체의 부모로부터 상속 가능한 권한 포함"확인란을 선택하는 것과 같은 부모 권한을 포함하도록 재설정하고 싶습니다.

우리는 여기 몇몇 다른 시스템 관리 작업을 위해 파이썬을 사용하고 있기 때문에 가능한 한 파이썬에서하고 싶습니다. (어떻게 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 \ 
) 

을하지만 어떻게이 세상에서 내가 알고있는 루트 폴더에서 전체 경로를 걷고 모든 방법으로 상속을 설정하지 않으면 상속 할 항목이 있습니까?

답변

1

루트 폴더의 ACE에 OBJECT_INHERIT_ACE 및 CONTAINER_INHERIT_ACE를 설정해야합니다. 또한 각 하위 폴더 및 파일에 직접 설정된 사용 권한을 지우고 싶을 수도 있습니다. (그것들은 ACE 플래그에 INHERITED_ACE를 포함하지 않을 것입니다).

+0

OBJECT_INHERIT_ACE 및 CONTAINER_INHERIT_ACE는 모두 루트 폴더의 ACE에 이미 설정되어 있습니다. 폴더에는 INHERITED_ACE 권한이 설정되어 있지 않습니다. 폴더에 직접 설정된 사용 권한을 삭제하면 폴더에 대한 사용 권한이 전혀 없습니다. 상속을 해제 할 때 제거 된 부모에서 모든 누락 된 INHERITED_ACE 플래그를 "재설정"또는 "다시 추가"하려고합니다. – David

+0

이 경우 보안 설명자가 보호 대상으로 설정되었을 수 있습니다. 이것은 UI에서 "상속 가능한 사용 권한 포함"을 선택 해제하는 것과 같습니다. 이 값을 None으로 설정하여 –

+1

보안 설명자를 모두 제거하거나 UNPROTECTED_DACL_SECURITY_INFORMATION을 사용하여 설정할 수 있어야합니다. –

관련 문제