폴더나 파일에 권한은 누가 줄 수 있을까?

꼬알라가 강사를 할 시절.. Windows 플랫폼 교육 중 파일 및 폴더 보안에서 항상 여쭤보았던 질문이 있습니다.

폴더나 파일에 권한을 줄 수 있는 사람은 누구인가요?

대부분의 경우의 답변은 Administrator라는 답변을 하십니다.

그럼 Administrator는 모든 Windows 플랫폼의 보안 체계를 다 OK 받을 수 있는 슈퍼맨 계정인가요?

image

파일 서버를 쭉 사용하시다보면, 아주 재미있는 현상이 나오는 경우가 있습니다. 권한이 없다고해서, NTFS 권한을 수정하기 위해서, 해당 폴더나 파일의 등록정보에 가면 권한도 추가할 수 없습니다. 또 거부를 당하게 되죠. 뿐만 아니라, 다른 드라이브에 Windows Vista를 설치하셨다가 폴더만 삭제하시려고 시도해도 비슷한 결과가 나옵니다. 결국 포맷을 이용하시는 경우가 많은데요. 왜 관리자, Administrator인데도 폴더나 파일을 못지우는 걸까요?

폴더나 파일에 권한을 주기 위해서는 2가지를 확인해 보아야 합니다. 첫번째가 소유자이며 두번째가 NTFS 권한입니다.

image image

NTFS 권한은 해당 개체의 소유자가 줄 수 있습니다. 또한 소유자가 권한을 부여한 대상 중 사용 권한 변경이라는 NTFS 권한을 가지고 있어야지만 가능합니다. 파일 서버에서 권한도 수정못하는 이유가 바로 소유자가 아니기 때문입니다. '꼬알라'라는 사용자가 파일 서버에서 폴더를 만들면 당연히 해당 폴더의 소유자는 '꼬알라'가 되게 됩니다. 꼬알라가 NTFS 권한에서 Administrator를 지워버리면, 암시적 거부로 인해(다음 포스팅에서 권한 계산을 한번 더 다룰려고 합니다.) Administrator도 해당 폴더에 접근을 할 수 없게 됩니다.

그렇다면 이상하시죠? 권한이 없는데 어떻게 소유자를 변경할 수 있느냐?

한글판에서는 조금 혼돈스러우실 수 있는 부분입니다. 바로 Right과 Permission의 차이입니다. 오늘 언급하고 있는 대부분의 NTFS 권한은 바로 NTFS Permission입니다. 2월 2일에 포스팅한 글에 Right과 Permission에 대한 차이를 간략하게 적어놓았습니다.

image

컴퓨터에서 GPEDIT.MSC를 실행해보시면 그룹 정책 개체 편집기가 실행됩니다. 이 안에서 Right부분을 살펴볼 수 있습니다. 사용자 권한 할당이라는 부분이 영문판에서는 User Right Assignment라고 되어져 있습니다. 여기에 파일 또는 기타 개체의 소유권을 가져 올 수 있는 사용자로 Administrators가 들어가 있기 때문에, Administrators 그룹원은 개체의 소유권을 가져올 수 있다는 것입니다. 만약 해당 항목에서 Administrators를 빼버리면 Administrator도 소유권을 가져올 수 없게 됩니다. :|

image

그렇다면 이런 생각을 또 하실 수 있습니다. 소유권을 가져올 수 있는 Right은 있다. 그런데 NTFS 권한에 있는 소유권 가져오기 권한은 없다면 어떻게 되느냐? 즉 Right과 Permission이 상반되면 무엇이 우선하느냐? Right이 우선하게 됩니다.

image

그럼 이제 결론이 나오시죠? 처음에 질문드렸던 것.. 파일이나 폴더가 삭제도 안되고, 권한 변경도 안되는 경우.. 먼저 어떻게 하셔야 할까요?

소유권을 가져온다...

소유권을 이전해야할 대상이 매우 많다면 SUBINACL이라는 명령어 도구를 권장합니다.

Subinacl /subdirectories D:\ /setowner=koalra\angel

D: 드라이브의 모든 폴더와 파일의 소유자를 Koalra 도메인(또는 컴퓨터)의 Angel이라는 계정으로 변경하라는 것이죠.

Subinacl /subdirectories D:\ /grant=koalra\angel=F

D: 드라이브의 모든 폴더와 파일의 NTFS 권한을 Koalra 도메인(또는 컴퓨터)의 Angel이라는 계정에게 모든 권한 부여를 하라는 것입니다.

권한을 부여할 수 있는 사람은 바로 소유권을 가진 사람입니다. 소유권을 가진 사람이 개체에 대한 다양한 설정을 할 수 있게 되는 것이고요.

조금 이해가 가시나요? 언제나 보안의 시작은 가장 기본적인 사항부터 이해하고 가는 것 같습니다. 오늘 살펴본 내용을 시간나실때 한번 실제해보시면 더욱 이해가 빠르실거라 생각합니다.