동일한 볼륨 내에서 파일을 이동할 때 파일 권한이 유지되는 이유는 무엇입니까?


9

간혹 파일이있는 폴더와 다른 권한이 파일에 있다는 문제가 있습니다.

이제이 이유를 설명 하는 KB 기사 가 있음을 알았습니다 .

기본적으로 개체는 만들 때 또는 부모 폴더로 복사되거나 이동 될 때 부모 개체의 권한을 상속합니다. 이 규칙에 대한 유일한 예외는 동일한 볼륨의 다른 폴더로 객체를 이동할 때 발생합니다. 이 경우 원래 권한이 유지됩니다.

따라서 사용자는 파일을 한 폴더에서 다른 폴더로 옮기고 원래 폴더의 권한이 유지되었습니다.

내 질문은 : 왜이 ​​예외가 존재합니까? 이것에 대한 추론은 무엇입니까?

답변:


8

나는 이것을 블로그 포스트 http://think-like-a-computer.com/2011/07/24/moving-files-on-the-same-ntfs-volume-does-inherit-permissions/ 에서 설명 했지만 아래에 설명되어 있습니다.

파일을 복사 할 때 새 파일을 작성하고 새로운 권한 세트를 지정해야합니다. 따라서 알고있는 것처럼 상위 폴더에서 권한을 가져옵니다.

파일을 다른 볼륨으로 이동하면 실제로는 새 볼륨으로 파일이 복사되고 이전 파일이 삭제됩니다. 따라서 새 파일이므로 권한 설정이 필요하므로 위와 동일한 프로세스가 반복됩니다.

파일이 동일한 볼륨 내에서 이동되면 실제로 디스크 수준에서 아무 일도 일어나지 않습니다. 파일의 논리 경로 위치 만 변경합니다. 디스크의 실제 데이터와 실제 파일은 건드리지 않았거나 변경되지 않았습니다. 5GB 파일을 같은 드라이브의 다른 폴더로 옮겼을 때 거의 즉각적으로 수행됩니까? 이것이 실제로 이동하지 않았지만 파일이 논리적으로 존재하는 위치에 대한 포인터가 변경 되었기 때문입니다. 어떤 식 으로든 수정되지 않았기 때문에 권한도 변경되지 않습니다.

이것이이 행동의 이유입니다.

편집 : 내가 언급 한 것을 잊어 버렸습니다 ... MS 기사가 완전히 정확하지는 않습니다. MS 인용 :

기본적으로 개체는 만들 때 또는 부모 폴더로 복사되거나 이동 될 때 부모 개체의 권한을 상속합니다. 이 규칙에 대한 유일한 예외는 개체를 동일한 볼륨의 다른 폴더로 이동할 때 발생합니다. 이 경우 원래 권한이 유지됩니다.

위의 인용문은 명시 적으로 정의 된 sec 권한이 부여 된 개체에만 적용됩니다 (상속 해제). 필자의 의견에서 언급했듯이 ACL 항목을 최대한 효율적으로 유지하는 것이 중요합니다. 다음 예제를 고려하십시오.

설명을 간단하게 유지하기 위해 사용자에게 권한 만 수정하도록 폴더를 설정했다고 가정 해 봅시다. 아래에는 수천 개의 파일이 있으며 명시적인 권한이 설정되어있는 파일은 없습니다. 각 파일에 대해 동일한 권한이 있으므로 각 파일에 대해 ACL을 작성하는 것은 매우 효율적이지 않으므로 폴더에 대해 하나의 ACL 항목을 설정합니다. 이 다음 비트는 이해하는 것이 매우 중요합니다. 파일 자체에는 ACL PERMS가 없습니다. 따라서 이러한 파일을 동일한 볼륨의 새 폴더로 이동하면 MS는 권한이 파일과 함께 이동한다고 주장합니다 (위의 인용). 스스로에게 물어보십시오 .... 어떻게? 처음에는 파일에 파마가 없었습니다. 이것은 실제로 올바르지 않으며 방금 확인하기 위해 테스트했습니다. 파일을 이동하려는 대상 폴더에 모든 그룹이 권한을 수정할 수있는 권한이 있다고 가정 해 봅시다. 파일에 ACL이 직접 없기 때문에 상위 폴더의 ACL을 상속합니다. 이는 권한이 사용자 수정 (이전 폴더)에서 모든 사람 수정 (새 폴더)으로 변경되었음을 의미합니다.

차이점을 알 수 있습니까 ?? 이번에는 같은 볼륨의 다른 폴더로 파일을 이동하면 실제로 파마가 바뀌어 MS는 그렇지 않다고 말합니다. 2000 lol 이후 MS 설명서에서 실수를 발견 했습니까?

이제 명시 적 권한을 사용할 때 동일한 시나리오를 살펴보십시오. 예를 들어, 사용자 읽기 액세스를 거부하는이 폴더 내의 파일에 대한 명시 적 권한을 설정하면 (상속이 해제 됨) 이제이 파일에 대한 새 ACL 항목이 작성됩니다. 이제 파일을 새 위치로 이동하면 파일과 직접 관련된 ACL 항목이 있습니다. 이 경우 파일을 동일한 볼륨의 새 위치로 옮기면 MS가 주장한대로 권한이 유지됩니다!


+1 둘 다 좋은 답변이지만, 당신의 것이 더 중요합니다. 5GB 파일이 즉시 이동하는 방식에 대한 의견이 마음에 듭니다. 좋은 시각.
KCotreau

ACL이 발생하지 않는 주된 이유는 "복사가 발생하지 않는다"고 생각하는 경향이 있습니다.
VVS

1
파일 시스템 테이블을 변경해도 해당 ACL 항목에 영향을 미치지 않아야하는 기술적 이유는 없습니다. 이 설명이 맞다고 생각합니다. 그러나 나는 그것이 실제 원인이 아니라 그 효과를 묘사한다고 생각합니다. 원인은 ACL 기반의 자체 보안 모델로, 볼륨 단위입니다. 다른 볼륨 간의 이동 / 복사 작업은 권한의 이전으로 이해되고 권한에 관계없이 동일한 볼륨 내에서 변경됩니다. 기본적으로 자연스럽게.
드워프

1
논리적으로 파일에 대한 권한은 작성시 설정됩니다. 폴더에 대한 권한을 변경하면 권한을 모든 하위 개체에 전파해야합니다. 그렇기 때문에 Windows는 모든 하위 개체가 많은 경우 대화 상자를 표시하는 경우가 있습니다.
surfasb

1
@Mucker : 죄송하지만 설명은 잘못되었습니다. Windows 는 파일이 상속 되더라도 항상 파일과 함께 ACL을 저장합니다. 파일 시스템 관점에서 볼 때 파일이 동일한 볼륨 내에서 이동하면 항상 파일과 함께 이동합니다. 특정 시스템 설정에 따라 Windows 탐색기가 이동 후 이동하여 권한을 조정합니다. 그러나 그것은 탐색기이며 파일 시스템과 관련이 없습니다. 그리고 더 나쁜 것은 Windows 버전과 (이미 언급했듯이) 특정 시스템 설정에 달려 있습니다. blogs.msdn.com/b/oldnewthing/archive/2006/08/24/717181.aspx
Paul Groke

6

동일한 볼륨 내에서 파일을 이동하는 경우 일반적으로 파일 시스템을 재정렬합니다 . 디렉토리 레벨에서 파일 권한을 변경하면 이동 조작이 완료되는 순간 해당 파일에서 파일을 잠글 수 있습니다. 예를 들어 실수로 파일을 시스템이나 특수 소유권이있는 폴더로 이동하거나 보호 된 경우에는 바람직하지 않습니다. 파일 소유권을 가져 오거나 (권한이있는 경우) 권한있는 계정으로 로깅하는 것 외에 실수를 바로 잡을 방법은 없습니다. 일상적인 컴퓨터 작동을 고려하면 파일 시스템을 제어 할 수 없었습니다.

이 동작은 ACL을 사용하는 대부분의 운영 체제에서 일반적입니다. 사용자와 응용 프로그램이 볼륨 내에서 정상적인 파일 시스템 작업을 보장합니다.

반대로, 볼륨간에 파일을 이동할 때 일반적으로 다른 사람이 제어 할 수 있도록 파일을 제공합니다. 잘 아시다시피, 파일이 대상 폴더 권한을 통합하면 대상에 필요한 권한을 부여한 다음 자신의 파일 시스템을 적절하게 재정렬 할 수 있습니다.

당연히 이것이 항상 바람직한 것은 아닙니다. 어떤 이유로 이동 및 복사 작업을 특별한 권한 상속 규칙으로 정의 할 수 있습니다. 같은 기사에서 :

  • 파일 및 폴더를 복사하거나 이동할 때 권한을 유지하려면 / O 또는 / X 스위치와 함께 Xcopy.exe 유틸리티를 사용하십시오. 개체의 원래 권한이 새 위치의 상속 가능한 권한에 추가됩니다.

  • 개체를 복사하거나 이동할 때 개체의 원래 권한을 상속 가능한 권한에 추가하려면 –O 및 –X 스위치와 함께 Xcopy.exe 유틸리티를 사용하십시오.


"예를 들어 실수로 파일을 시스템이나 특수 소유권이있는 폴더로 옮기거나 다른 방법으로 보호 한 경우 바람직하지 않습니다." -예를 들어 쓰기 전용 권한이있는 폴더로 파일을 이동 한 후에도 파일을 다시 이동할 수 있습니다. 다른 볼륨에 대해 바람직하지 않은 이유는 무엇입니까?
VVS

1
ACL은 파일 시스템 기반 보안 모델이므로 @VVS. 각 볼륨은 자체 파일 시스템과 결과적으로 자체 ACL 테이블을 보유합니다. ACL 보안의 관점에서 볼 때 다른 볼륨은 다른 "사용자"와 같습니다. 파일을 다른 볼륨으로 이동하면 해당 "사용자"에게 제어권을 이전하게됩니다. 그러나 당신이 정말로 원한다면 그렇게하지 않을 수있는 선택권이 여전히 주어집니다. 기본 동작은 ACL 보안 문제를 해결하는 것입니다.
드워프

1

OK 이것은 진짜 최저입니다. 먼저-우리는 단일 PC 또는 서버에 대해 이야기하고 있습니까? 서버에 대해 이야기하고 있다고 가정합니다. 회사 A의 Wintel 관리자는 새 서버의 네트워크 드라이브에 파일 시스템을 만듭니다. 각 부서마다 폴더가 있고 기밀성 문제로 인해 각 폴더마다 고유 한 ACL이 있습니다. 따라서 파일을 다른 부서의 폴더로 옮길 경우 왜 지구상에서 새 폴더의 권한을 상속받지 않겠습니까? 내 말은 .. 사용하지 않을 경우 왜 권한 기반 파일 시스템이 있습니까? 이동 된 파일 / 폴더가 항상 상위 폴더의 ACL을 상속받는 것이 중요한 실제 사례를 알려줄 수 있습니다 .

볼륨 내에서 파일을 이동하거나 vol X에서 vol Y로 파일을 이동하는 것 ... 근본적인 차이점은 무엇입니까? 내가 볼 수있는 한, 일부 파일의 위치를 ​​다른 볼륨으로 옮기거나 회사 환경에서 약간의 차이를 만들지 않습니다. 하나가 기본적으로 상속을 포함하고 다른 하나가 Mucker에 의해 언급되지 않은 실제 이유는 "효율성"입니다. 볼륨 내에서 파일을 끌어다 놓으면 색인 항목 만 변경됩니다. 파일이 이동되지 않고 해당 ACL 정보는 그대로 유지됩니다. 간단한 조작을합니다. 그러나 파일을 여러 볼륨으로 이동하면 파일과 해당 ACL 다시 정의 해야 하므로 파일 을 올바르게 수행하고 상속을 포함하면 피할 수있는 오버 헤드가 발생하지 않으므로 의미가 있습니다.

Microsoft가이 문제를 해결하지 못하는 이유를 이해할 수 없습니다. 탐색기의 드래그 앤 드롭의 일부로 대화 상자를 포함시키는 것이 너무 어려울까요? "다른 액세스 권한이있는 위치로 파일을 이동했습니다. 새 상위 폴더의 권한을 상속 하시겠습니까? Y 또는 N?"

감사합니다, Stonegiant

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.