출처: http://blog.naver.com/knuabhoony?Redirect=Log&logNo=40014321712

일반적으로 ACL 이라고만 하면 DACL를 뜻함.

DACL = discretionary access control list

SACL = security access control list

 

DACL에는 ACEs = access control entries 가 있음.

 

둘은 비슷해 보이나 DACL은 권한을 설정하는 역할 SACL은 파일이나 폴더 혹은 주변기기 오프젝트에 접근하는 이벤트 발생시 기록(log)을 할수있다. 따라서 개발자는 DACL을 SA는 SACL쪽을 더 깊게 공부하게 된다. 따라서 MCSD 트랙에서는 SACL은 공부하지 않고 뭔지만 알면 된다.

 

DACL은 명시된것이 누적되는 구조이다. 무조건 allow 하는쪽으로 합해지지도 않고 무조건 deny하는쪽으로 합해지는 것도 아니고 explicit한 명제의 교집합이라고 보면 된다.

 

DACL의 ACE에는 통상적인 것과 special 한것이 있는데, 통상적인 것과 special 한것의 관계는 포함관계이다. 통상적인 것은 Full permission, modify permission ...... read permission 등이 있는데

Full 은 모든 special ACE가 포함된 것, modify는 권한변동에 관련된것 두개만 빠진 나머지 모두 read는 read와 execute 두개만 포함된 것이다.

 

DACL을 수정하는 방법에는 3가지가 있다.

1. 오브젝트를 오른쪽 클릭하여, 속성(혹은 등록정보), 보안탭을 클릭하여

   윗쪽의 user를 선택한 다음 아랫쪽에서 그 user에 맞는 권한을 주면 된다.

 

2. cacl.exe 나 xcacl.exe를 사용한다. (xcacl.exe가 없는 OS는 마소 사이트에서 받을수 있음)

    cacl은 통상적인 권한 부여, 수정, Xcacl은 special한 권한의 부여, 수정을 할수있다.

    다양한 옵션을 쓸수 있는데 /T는 하위폴더 전체포함 /G 유저:F 하면 해당 유저에 Full 퍼미션 Grant 허용 /D 하면 deny 등등이 있다.

 

3. win32 API에서 어플리케이션에서 직접 조정(범위를 벗어나므로 방법이 있다는 것만 알아두면됨)

 

 

이상의 내용은 마소 공식 어플리케이션 보안 MOC의 4장 1절 ACL 부분을 공부하고 책을 보지않은채로 머릿속의 내용을 정리한 것이므로 영어와 한국어가 마구마구 섞여 있음(아직 번역판이 안나와있음) 가장 중요한것은 DACL이 뭔지, 어떤 ACE가 있는지, 어떻게 부여, 수정할수 있는지 아는 것.

 

수거!


AND