회사에서 서버운영을 하면서 윈도우의 경우 계정과 권한 문제로 골치아플 때가 있습니다. 보안상의 이유로 Administrators 권한은 System Admin만 가지고, 나머지 운영부서의 (AP, DB, 미들웨어) 계정은 관리자 권한이 없는 일반 유저 계정을 부여하려고 하는데, 문제는 리눅스와 달리 윈도우의 경우 Administrators 그룹이 아니면 정말 아무것도 하지 못할 정도로 권한이 제한된다는 것입니다.

그 여러가지 제한점 중 하나가 바로 서비스 구동 문제입니다. 예를 들어 DBA가 MSSQL을 내렸다 올렸다 자유롭게 하려면 MSSQLSERVER 라는 서비스를 내리고 올릴 수 있어야겠지요. 그런데 만약 그 DBA가 Administrators 그룹에 속해있는 계정이 아니라면, 권한이 없기 때문에 MSSQL을 올렸다 내렸다 할 수 없습니다.

이 문제를 해결할 수 있는 방법이... 있기는 있더군요. MS에 기술지원 받아서 알아낸 내용입니다.

SubInACL
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=23510

다운로드


일단 SubInACL을 설치합니다. 기본 경로로 설치하셨다면 C:\Program Files\Windows Resource Kits\Tools 폴더에 설치될 것인데, 커맨드 창을 띄워서 해당 경로로 이동하셔도 되고, 서버 2008 이상의 경우 Shift + 우클릭 하시면 해당 폴더 위치에 바로 관리자 권한으로 커맨드 창을 띄울 수 있습니다.

아 사용법을 보여드리기 전에 먼저 테스트 환경을 보여드리겠습니다. 제가 관리자 권한이 없는 일반 Test 계정을 생성하였고, 현재 상태에서는 Test 계정이 윈도우에 설치한 아파치 서비스를 제어할 수 없는 상황입니다.


아파치 서비스 모니터 툴에서 Stop 버튼을 눌러도 당연히 오류가 발생합니다. 권한이 없기 때문이죠.


이제 이 Test 계정에 아파치 서비스만 제어할 수 있는 권한을 부여해 보겠습니다. 일단 서비스 명을 알아야 하는데, services.msc에서 각 서비스의 속성을 보시면 서비스 이름이 나오죠. 그 이름을 사용하시면 됩니다.


예제) subinacl /SERVICE Apache2.2 /GRANT=test=F


잘 된 것 같죠? 이제 Test 계정으로 로그인해서 확인을 해보겠습니다.

아까전과는 달리 아파치 서비스를 제어할 수 있도록 버튼이 활성화된 모습입니다.


또한 아파치 서비스 모니터 툴에서 Stop 버튼을 눌러봤는데, 정상적으로 잘 멈추더군요.



이처럼 관리자 권한이 없는 일반 유저 계정에 특정 서비스만 제어할 수 있는 권한을 부여하고 싶다면 SubInACL 툴을 사용해보시기 바랍니다. 일일이 설정하는게 조금 귀찮기는 하겠지만, 무턱대고 Admin 권한을 주는 것 보다는 보안상 훨씬 좋은 방법이라고 생각합니다.
신고
Share
  1. 바다와바다
    2011.12.23 17:44 신고

    유익한 글 보고 갑니다.

  2. 동우
    2011.12.23 21:19 신고

    이런 것도 있군요.. 친척 동생 올때 게임 만 하게 할때 이런거 필수 적이것네요 ㅋㅋ;;

  3. NEW_MCITP_EA
    2011.12.30 05:49 신고

    지금 이 방법을 print server delegation 문제로 찾고 있었는데 너무 감사하네요 ^^

    서버 관리자 권한 대신에 delegation group 만 spooler 서비스에만 권한을 주려고 했었거든요. 1월 3일에 회사에 돌아가면 테스트 해보렵니다. 감사합니다.

  4. NEW_MCITP_EA
    2012.01.04 04:22 신고

    snpbox님, 위 방법으로 권한부여후 서버에 직접 non admin 계정으로 RDC 를 통해 remote access 해서 spooler 서비스는 제어가 되는것은 확인했는데요 remote access 권한을 없애고 mmc 를 통해서만 권한부여하려고 하니까 mmc 를 통해서는 access 가 안되는군요. 혹시 mmc로 접근해 보셨나요?

  5. NEW_MCITP_EA
    2012.01.13 01:34 신고

    자문 자답하게 되네요.
    결과적으로 클라이언트 에서 배치로

    sc \\server name stop "spooler"
    ping -n 5 localhost >NUL
    sc \\server name start "spooler"

    로 해결 했습니다. 아무튼 좋은 팁 너무 감사합니다.

  6. 똥빛늑대
    2014.03.07 16:04 신고

    우선, 유익한 정보 감사합니다. subinacl 이 윈도우 서버 2008 (or R2) 에서도 동작하나요?
    혹은 2008 에서는 다른 방법으로 일반계정의 서비스제어 권한 부여 하는 방법이 있는지 궁금한데요.
    혹시 아시는 분은 Tip 부탁드립니다.