NTFS 권한-파일 및 폴더를 만들지 만 삭제 및 수정은 방지 / 데이터 읽기 속성 읽기 확장 된

목표 : 사용자가 파일을 만들 수 있지만 파일을 수정하거나 삭제할 수없는 공유 폴더입니다. 사용자는 하위 폴더도 만들 수 있어야합니다.

보안 그룹에 다음과 같은 고급 NTFS 권한을 부여했습니다.

  • 폴더 탐색 / 파일 실행
  • 폴더 목록 / 데이터 읽기
  • 속성 읽기
  • 확장 된 속성 읽기
  • 파일 작성 / 데이터 쓰기
  • 읽기 권한

시행 착오 과정을 통해 ‘쓰기 속성’을 부여 하지 않으면 사용자가 기존 파일을 수정 / 삭제하지 못하게하는 효과가 있음을 알았습니다. 그러나 왜 이것이 작동하는지 정확하게 설명하고 싶습니다. 내가 가진 유일한 이론은 파일의 삭제 / 수정이 파일의 속성을 변경한다는 것입니다. 여기 같은 줄에 대한 토론이 있습니다 .

편집-내 질문의 두 번째 부분은 관련이 없습니다. ‘파일 만들기 / 데이터 쓰기’만 선택했다고 생각했지만 ‘폴더 만들기 / 데이터 추가’도 선택했습니다.

또한 사용자가 루트 내에서 하위 폴더를 만들 수 있기를 원하며 ‘Create Files / Write Data’를 부여하면 이것이 가능합니다. 그러나 다시 말하지만,이 권한은이 권한이 폴더가 아닌 파일의 생성 만 허용해야한다고 제안합니다. 왜 작동하는지 이해할 수 없습니까? ‘파일 만들기 / 데이터 쓰기’특성 에 대한 Microsoft의 설명 은 “폴더의 경우 사용자가 폴더 내에서 파일을 만들 수 있는지 여부를 지정합니다. 파일의 경우 파일을 변경하거나 데이터를 덮어 쓸 수 있는지 여부를 지정합니다.” 폴더 내에 하위 폴더를 만드는 기능에 대한 언급이 없습니까?

그래서 기본적으로, 나는 내가 뭘했는지 알고 있었지만 왜 작동하는지 이해하지 못했습니까?



답변

시행 착오 과정을 통해 ‘쓰기 속성’을 부여하지 않으면 사용자가 기존 파일을 수정 / 삭제하지 못하게하는 효과가 있음을 알았습니다. 그러나 왜 이것이 작동하는지 정확하게 설명하고 싶습니다.

이것은 정확하게의 함수 방법 파일 변경이 발생합니다. 파일을 수정할 때 운영 체제는 실제로 편집중인 파일을 수정하지 않습니다. 편집중인 파일이 변경 한 사본으로 바뀝니다. 따라서 기본적으로 파일 수정은 원본 파일의 복사본을 가져 와서 메모리에로드하고 (수정 한 위치) 원본 파일을 삭제하고 같은 위치에 동일한 이름의 새 파일을 만듭니다. Delete파일을 수정하려면 NTFS 권한이 필요한 이유 입니다. 실제로 Advanced permissionsNTFS 개체 를 검사하는 경우 Modify권한 이 없습니다 . 수정은 실제로 삭제 및 쓰기 일뿐입니다.

따라서 파일의 새 사본을 작성하려면이 새 파일의 파일 속성을 작성해야합니다 Write attributes. 물론 속성을 작성하려면 NTFS 권한이 필요합니다 . 따라서 Write attributesNTFS 권한이 없으면 파일을 수정할 수 없습니다 .

특히, 피츠로이과의 대화 덕분에NTFS 파일 속성 요구 사항이 기록 될 것으로 사용자의 보안 컨텍스트에서 (를 빼고, 그 수없는 Write Attributes완전히 새로운 하나를 만들 때 파일을 수정하지만,하지 않을 경우 허가), 것 될 파일의를 LastModificationTime. 이것은 Standard InformationMicrosoft Core Team 개발자 중 하나에 따르면 속성 의 일부입니다 .


답변

‘속성 쓰기’권한이 없으면 사용자가 파일을 수정할 수 없습니다. 그리고 Microsoft 문서에 따르면 이해가되지 않습니다. 그러나 파일을 수정 한다고 해서 파일 이 삭제 되고 재생되는 것은 아닙니다. 응용 프로그램이 수정을 위해 파일을 열면 운영 체제는 파일을 삭제하지 않습니다. 그러나 OS가하는 일은 동시 수정을 막기 위해 파일을 잠그는 것입니다. 내 생각에 파일 잠금은 ‘파일 속성 변경’개념에 속합니다. 따라서 속성을 변경할 수 없으면 파일을 수정할 수 없습니다.

귀하의 질문의 두 번째 부분에서는 재현 할 수 없습니다. 폴더에 적용되는 두 가지 다른 권한 인 ‘Create Files / …’및 ‘Create Folders / …’가 있으며 테스트 중에 문서에 따라 작동했습니다.


답변