Permission... 이게 뭐지?

Windows Vista의 UAC에 대해서는 많은 글과 Microsoft 칼럼을 통해, 기본적인 컨셉 및 동작 방식에 대해서는 말씀을 나누었던 것 같습니다. 2월에 오프라인 세미나와 온라인 웹 캐스트가 예정중에 있고, 해당 링크에 대해서는 한번 더 포스팅 하도록 하겠습니다 :)

오늘은 Windows의 Permission에 대해서 이야기를 써볼까 합니다.

Permission은 무엇인가요? 라는 질문을 받으신다면, 어떤 답변을 하시겠습니까?
무언가를 할 수 있다? 없다? 에 대한 설정..이라고 답변하시는 분들이 많으실 것입니다. Permission의 쉬운 예로는 어떤 파일에 대한 읽기, 쓰기, 수정하기등이 있습니다. 즉, Permission이라고 함은, 개체에 대해 어떻게 사용할 수 있느냐(How to use something)에 대한 정의로 보시면 됩니다.

Windows의 모든 개체(파일, 레지스트리, 액티브 디렉터리의 조직 구성 단위, 사용자등등)에는 Permission이 부여되어져 있습니다.
Windows NT, 2000, 2003, XP, Vista의 경우 시스템에 로그온을 하게 되면, 본인의 계정 인증 정보에 대해 보안 토큰을 가지게 됩니다. 이 보안 토큰의 계정 정보와 개체에 부여된 Permission과 비교를 하여, 해당 계정에 대한 명시적인 Permission이 있는 경우, 이를 따르게 되고, 없는 경우엔 암시적 거부가 되게 됩니다.

Windows XP까지는 대부분의 폴더와 레지스트리에 대해서 Administrators 그룹에게 모든 권한(Full Control)을 다 부여해놓았습니다. 이에 관리자는 원할 경우, 시스템의 주요 파일(%windir%), 주요 레지스트리(HKLM)등을 수정하고, 삭제까지도 가능하였던 이유도 바로 Permission이 있기 때문입니다. 그러나 Windows Vista에서는 UAC 기능외, 시스템의 주요 파일에 대한 보안을 위해, Permission 모델을 조금더 세밀하게 설정해 놓았습니다. 그렇다면, 아래의 시나리오가 나타날 수 있습니다.

1. 관리자가 시스템의 주요 파일을 수정하려고 해도 실패 (UAC 기능을 통과했거나, 기능 자체를 사용하지 않더라도)
2. 관리자가 시스템의 레지스트리 설정을 수정하려고 해도 실패 (UAC 기능을 통과했거나, 기능 자체를 사용하지 않더라도)

Windows Vista를 사용하실 경우, 특정 파일에 대한 수정 시도나 시스템 설정 변경시 보안적으로 작동하는 사항은 크게 2가지로 볼 수 있습니다.

1. 사용자 계정 컨트롤(UAC)
2. Windows Permission & Right

그럼 Permission은 누가 부여하느냐? 라는 것입니다. 개체에 대한 Permission은 바로 개체의 소유자(Owner)가 부여할 수 있습니다. Administrators 그룹에도 권한이 없는 Windows Vista의 개체들은, 당연히 소유권도 Administrators에게 부여되어져 있지 않습니다. 그럼 Administrators 그룹에 권한을 부여하려면 먼저 소유권을 이전해 오셔야 겠죠? 마지막 질문이 떠오르게 됩니다. 그럼 누가 소유권을 이전할 수 있느냐.. 이 소유권 이전에 대해서는 Windows에서 Administrators에게 Right을 부여해놓았습니다. 그러한 이유로, Administrators 그룹의 구성원은 개체의 소유권을 이전한 후, 개체에 Permission을 부여하고, 해당 개체에 대한 특정 작업을 할 수 있는 것입니다.

조금 복잡하신가요? 한번만 정리해두시면 매우 쉽게 접근하실 수 있습니다.

이제 조직내 더 나은 보안 설정과 문제 해결을 위해 IT 관리자나 IT 입문자의 경우에는 Windows의 보안 모델에 대한 기반 지식을 조금은 공부하실 필요성이 있어 보입니다.
오늘쯤 한번 시간을 내셔서 Windows Permission에 대해서 공부해보시는 것은 어떨까요?