Windows 멀티부팅 폴더 접근권한 삭제(복원)하기

Windows를 멀티부팅하게 되면, 서로 다른 OS 내의 홈폴더 (예를 들어, D:\Users\jungin500)에 접근해야할 일이 생깁니다. 다만 폴더 접근 권한 때문에 이런 창이 한번은 뜨게 되고, <계속> 버튼을 누르면 오랜 시간이 걸린 뒤 어찌되었든 해당 폴더에는 이제부터 접근할 수 있게 됩니다.

윈도우 이 폴더에 액세스할 수 있는 권한이 거부되었습니다. 해결 방법
현재 사용자에 대한 권한을 부여하는 창.

문제 제기

다른 OS로 다시 부팅해서 C:\Users\jungin500 폴더의 속성 내 보안 탭을 보면, 기존에 없던 새로운 엔트리가 생겨 있습니다.

기존에는 없던 “알 수 없는 계정” 엔트리.

어쨌든 저는 이제 필요한 파일 복사가 끝나서 재부팅한 지금 OS를 계속 사용할 생각이며, 기존에 부팅했던 OS는 삭제하려고 합니다. 이러한 상황에서 저 “알 수 없는 계정”에 대한 엔트리를 삭제하려고 합니다.

이 경우에는 SetACL 도구(다운로드)(문서)를 이용하여 삭제가 가능합니다.
다만 주의할 점은… 이 명령어를 다른 OS가 설치된 드라이브에서 실행한다거나(-on의 타겟을 D:\Users\jungin500으로 둔다거나) 하면, 다른 OS가 아예 부팅이 안될 가능성도 있습니다. 결과적으로는 다른 OS의 사용자 입장에서는 홈 폴더에 대한 해당 사용자의 권한을 완전히 빼앗는 거니까요…

setacl -on C:\Users\jungin500 -ot file -actn delorphanedsids -os dacl -rec cont

이 명령어를 cmd 관리자 권한으로 실행하면 C:\Users\jungin500 디렉토리 내의 Orphan SID를 전부 제거할 수 있습니다. 현재 OS 입장에서 다른 OS의 SID는 등록되어 있지 않기 때문에, Orphan SID로 취급되어 삭제됩니다.

C:\Users\jungin500 폴더 내 Orphan SID를 삭제하는 과정

이유

위와 같은 “이 폴더에 액세스할 수 있는 권한이 없습니다”라고 뜨는 이유는, 지금 실행중인 Windows 사용자의 SID와 접근하려고 하는 다른 파티션에 설치된 Windows 사용자의 SID가 서로 다르기 때문입니다. SID는 아래에서 계속 설명합니다.

먼저 Windows는 다중 사용자가 사용 가능한 OS입니다. 이러한 환경에서 각 사용자는 각각 사람이 만든 (jungin500과 같은)사용자명 외에도 고유한 번호인 SID (Security Identifier)가 부여됩니다. SID는 사용자가 만들어질 때 랜덤하게 부여되는 고유 번호입니다. 같은 사용자명이라고 해도 OS 설치마다 다른 SID가 부여됩니다.

S 1 5 21-3623811015-3361044348-30300820 1013
The string is an SID. The revision level (the version of the SID specification). The identifier authority value. Subauthority value
In this case, a domain (21) with a unique identifier.There may be more than one subauthority,especially if the account exists on a domainand belongs to different groups.[1]
Relative ID (RID). Any group or user that is not created by default will have a Relative ID of 1000 or greater.
SID의 구조 (출처)

Windows는 Windows NT 시절부터 NTFS라는 파일시스템을 사용해왔으며, 이 파일시스템에는 Access Control 기능이 내장되어 있습니다. OS는 NTFS 파일시스템을 통해 모든 파일과 폴더에 대한 ACL(Access Control List)을 관리하며, 어떤 사용자가 특정 폴더나 파일에 접근(일반적으로 읽기/쓰기/수정/실행으로 나뉩니다)하려고 할 때 이 ACL을 참조하여 사용자에게 접근 권한을 허용할지, 거부할지를 결정합니다. 이 ACL에는 사용자의 식별자로서 SID를 사용합니다.

현재 설치된 OS는 (다른 파티션에 설치된) 다른 OS의 사용자의 SID를 알 수 없으므로, 말그대로 “알 수 없는 계정”라는 이름으로 표시됩니다.

참고자료

혹시나 제가 잘못 이해했거나 틀렸던 부분이 있다면 댓글로 남겨주세요.

답글 남기기

이메일 주소는 공개되지 않습니다.