기본적으로 일반(관리자가 아닌) 사용자는 Windows 서비스를 관리할 수 없습니다. 이것은 사용자가 Windows 서비스의 설정/권한을 중지, 시작, 다시 시작 또는 변경할 수 없음을 의미합니다. 경우에 따라 사용자에게 특정 서비스를 다시 시작하거나 관리할 수 있는 권한이 있어야 합니다. 이 기사에서는 Windows 서비스에 대한 권한을 관리하는 여러 방법을 살펴보겠습니다. 특히, 관리자가 아닌 사용자가 적절한 권한을 부여하여 특정 Windows 서비스를 시작, 중지 및 다시 시작하도록 허용하는 방법을 보여줍니다.
도메인 계정에 contoso\tuser 권한을 부여해야 한다고 가정합니다. 인쇄 스풀러 를 다시 시작할 수 있는 권한 서비스(서비스 이름 – 스풀러) . 관리자가 아닌 사용자가 서비스를 다시 시작하려고 하면 오류가 나타납니다.
시스템 오류 5가 발생했습니다. 액세스가 거부되었습니다.
Windows에서 서비스 권한을 관리하는 간단하고 편리한 기본 제공 도구는 없습니다. 사용자에게 서비스를 관리할 수 있는 권한을 부여하는 몇 가지 방법을 고려할 것입니다.
SC.exe(서비스 컨트롤러) 도구를 사용하여 Windows 서비스 권한 설정
시스템 서비스 권한을 관리하기 위한 표준 내장 Windows 방법은 sc.exe (서비스 컨트롤러) 도구. 이 유틸리티를 사용할 때의 주요 문제는 서비스 권한 형식(SDDL 형식 — 보안 설명 정의 언어).
다음과 같은 SDDL 문자열로 Windows 서비스에 대한 현재 권한을 얻을 수 있습니다.
sc.exe sdshow Spooler
D:(A;;CCLCSWLOCRRC;;;AU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)
(A;;CCLCSWRPWPDTLOCRRC;;;SY)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)
이 모든 기호는 무엇을 의미합니까?
S:— SACL(시스템 액세스 제어 목록)D:— DACL(임의 ACL)
대괄호 뒤의 첫 글자는 다음을 의미합니다. 허용(A ) 또는 거부(D ).
다음 기호 집합은 할당 가능한 권한입니다.
CC — SERVICE_QUERY_CONFIG(서비스 설정 요청)LC — SERVICE_QUERY_STATUS(서비스 상태 폴링)SW — SERVICE_ENUMERATE_DEPENDENTSLO — SERVICE_INTERROGATECR — SERVICE_INTERROGATECR — SERVICE_USER_DEFINED_CONTROLRC — READ_CONTROLRP — STOP — SERVICE_START마지막 2자는 권한이 부여된 개체(사용자, 그룹 또는 SID)입니다. 미리 정의된 그룹 목록이 있습니다.
AU 인증된 사용자AO 계정 운영자RU 이전 Windows 2000AN 익명 로그온을 허용하는 별칭AU 인증된 사용자BA 기본 제공 관리자BG 기본 제공 게스트BO 백업 운영자BU 기본 제공 사용자CA 인증서 서버 관리자CG 작성자 그룹CO 작성자 소유자DA 도메인 관리자DC 도메인 컴퓨터DD 도메인 컨트롤러DG 도메인 게스트DU 도메인 사용자EA 엔터프라이즈 관리자ED 엔터프라이즈 도메인 컨트롤러WD EveryonePA 그룹 정책 관리자IU 대화식으로 로그온한 사용자LA 로컬 관리자LG 로컬 guestLS 로컬 서비스 계정SY 로컬 시스템NU 네트워크 로그온 사용자NO 네트워크 구성 운영자NS 네트워크 서비스 계정PO 프린터 운영자PS 개인 selfPU 고급 사용자RS RAS 서버 그룹RD 터미널 서버 사용자RE 리플리케이터RC 제한된 코드SA 스키마 관리자SO 서버 운영자SU 서비스 로그온 사용자미리 정의된 그룹 대신 SID로 사용자 또는 그룹을 명시적으로 지정할 수 있습니다. 현재 사용자의 SID를 얻으려면 다음 명령을 사용할 수 있습니다.
whoami /user
또는 Get-ADUser cmdlet을 사용하여 모든 도메인 사용자의 SID를 찾을 수 있습니다.
Get-ADUser -Identity 'sadams' | select SID
Get-ADGroup cmdlet을 사용하여 AD 보안 그룹의 SID를 가져올 수 있습니다.
Get-ADGroup -Filter {Name -eq "ny-ithelpdesk"} | Select SID
특정 서비스에 대한 SDDL 권한 문자열을 할당하기 위해 sc sdset 명령. 예를 들어 다음 명령을 사용하여 사용자에게 권한을 부여할 수 있습니다.
sc sdset Spooler "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;RPWPCR;;;S-1-5-21-2133228432-2794320136-1823075350-1000)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"
SubInACL을 사용하여 사용자가 서비스 시작/중지/재시작 허용
명령줄 도구 SubInACL을 사용하는 것이 더 쉽습니다. Sysinternals(Mark Russinovich 작성)에서 서비스 권한을 관리합니다. 이 도구의 구문은 훨씬 쉽고 편리합니다. SubInACL을 사용하여 서비스에 대한 재시작 권한을 부여하는 방법은 다음과 같습니다.
- subinacl.msi 다운로드 이 웹 페이지(https://www.microsoft.com/en-us/download/details.aspx?id=23510)에서 대상 시스템에 설치합니다.
- 상승된 명령 프롬프트에서 도구가 포함된 디렉터리로 이동합니다.
cd “C:\Program Files (x86)\Windows Resource Kits\Tools\"
- 명령 실행:
subinacl.exe /service Spooler /grant=contoso\tuser=PTO
참고 . 이 경우 사용자에게 서비스를 일시 중지(일시 중지/계속), 시작 및 중지(다시 시작)할 수 있는 권한을 부여했습니다. 사용 가능한 서비스 권한의 전체 목록:F :Full ControlR :Generic ReadW :Generic WriteX :Generic eXecuteL :Read controlLQ :Query Service ConfigurationS :Query Service StatusE :Dependent Services 열거C :Service Change ConfigurationT :서비스 시작O :서비스 중지 P :일시 중지/계속 ServiceI :Interrogate ServiceU :서비스 사용자 정의 제어 명령원격 컴퓨터에서 실행 중인 서비스에 권한을 부여해야 하는 경우 subinacl 명령의 다음 구문을 사용합니다.
subinacl /SERVICE \\lon-prnt1\spooler /grant=contoso\tuser=F
- 이제 사용자 계정으로 컴퓨터에 로그온하고 다음 명령을 사용하여 서비스를 다시 시작하기만 하면 됩니다.
net stop spooler
net start spooler
또는sc stop spooler && sc start spooler
모든 작업을 올바르게 수행했다면 서비스가 다시 시작되어야 합니다.
할당된 서비스 권한을 취소하려면/revoke
를 사용하세요. subinacl.exe 도구의 옵션. 예:
subinacl.exe /service Spooler /revoke=contoso\tuser
프로세스 탐색기를 사용하여 Windows 서비스 권한을 변경하는 방법
하나 이상의 Sysinternals 유틸리티인 Process Explorer를 사용하여 Windows 서비스 권한을 변경할 수 있습니다. . Process Explorer를 관리자로 실행하고 필요한 서비스의 프로세스를 찾으십시오. 이 예에서는 spoolsv.exe입니다. (스풀러 실행 파일 –
C:\Windows\System32\spoolsv.exe
). 프로세스 속성을 열고 서비스를 클릭합니다. 탭.
권한을 클릭합니다. 버튼을 누르고 열리는 창에서 사용자 또는 그룹을 추가합니다. 그런 다음 할당하려는 권한(모든 권한/쓰기/읽기)을 선택합니다.
PowerShell을 사용하여 Windows 서비스 권한 설정
TechNet 갤러리에는 다양한 Windows 개체에 대한 권한을 관리하기 위한 별도의 비공식 PowerShell 모듈(PowerShellAccessControl Module)이 있습니다. (여기에서 다운로드할 수 있습니다). 이 모듈을 사용하여 서비스 권한을 관리할 수도 있습니다. 이 모듈을 설치하고 PS 세션으로 가져오기:
Import-Module PowerShellAccessControl
다음과 같이 PowerShell에서 특정 Windows 서비스에 대한 유효 권한을 얻을 수 있습니다.
Get-Service spooler | Get-EffectiveAccess -Principal corp\tuser
관리자가 아닌 사용자가 스풀러 서비스를 시작 및 중지할 수 있도록 하려면 다음 명령을 실행하십시오.
Get-Service spooler | Add-AccessControlEntry -ServiceAccessRights Start,Stop -Principal corp\tuser
보안 템플릿을 사용하여 서비스 권한 관리
서비스 권한을 관리하는 시각적(그러나 더 많은 작업이 필요한) 그래픽 방식은 보안 템플릿을 사용하는 것입니다. mmc.exe를 엽니다. 콘솔을 열고 보안 템플릿 을 추가합니다. 스냅인.
새 보안 템플릿(새 템플릿)을 만듭니다.
새 템플릿의 이름을 지정하고 시스템 서비스 로 이동하십시오. 부분. 서비스 목록에서 서비스 인쇄 스풀러를 선택합니다. 속성을 엽니다.
시작 모드(자동 ) 보안 수정을 클릭합니다. .
추가 사용 버튼을 사용하여 권한을 부여할 사용자 계정 또는 그룹을 추가합니다. 우리의 경우 시작, 중지 및 일시중지 권한이면 충분합니다.
이 템플릿을 저장하십시오.
참고 . 보안 템플릿의 내용은 C:\Users\%username%\Documents\Security\Templates 폴더에 INF 파일로 저장됩니다.이 파일을 열어보면 앞서 언급한 SDDL 형식으로 퍼미션 정보가 저장되어 있는 것을 볼 수 있습니다. 이렇게 얻은 문자열은 sc.exe 명령의 인수로 사용할 수 있습니다.
[Unicode]
Unicode=yes
[Version]
signature="$CHICAGO$"
Revision=1
[Service General Setting]
"Spooler",2,"D:AR(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;RPWPDTRC;;;S-1-5-21-3243688314-1354026805-3292651841-1127)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"
이제 보안 구성 및 분석 스냅인하고 Spooler User Rights.inf. 파일에서 보안 템플릿을 가져옵니다.
지금 컴퓨터 구성을 선택하여 이 템플릿을 적용합니다. 컨텍스트 메뉴에서 옵션을 선택합니다.
이제 사용자가 관리자가 아닌 계정으로 Print Spooler 서비스를 관리하도록 허용할 수 있는지 확인합니다.
GPO를 사용하여 서비스를 관리할 수 있는 권한을 사용자에게 부여하는 방법은 무엇입니까?
여러 서버 또는 도메인 컴퓨터에서 서비스를 시작/중지할 수 있는 권한을 사용자에게 부여해야 하는 경우 그룹 정책(GPO) 기능을 사용하는 것이 더 쉽습니다.
Windows 서비스 보안 권한은 어디에 저장되나요?
- 새 GPO를 만들거나 기존 GPO를 편집하고 컴퓨터 개체와 함께 필요한 Active Directory 컨테이너(OU)에 연결합니다. 정책 섹션 컴퓨터 구성 -> Windows 설정 -> 보안 설정 -> 시스템 서비스로 이동합니다.;
- 위에서 설명한 방법과 같이 Spooler 서비스를 찾아 사용자에게 권한을 부여합니다. 변경 사항을 저장합니다.참고 앞서 우리는 동일한 GPO를 사용하여 모든 사용자로부터 Windows 서비스를 숨길 수 있음을 보여주었습니다.
- 클라이언트 컴퓨터에 GPO가 적용될 때까지 기다렸다가 새 서비스 권한이 할당되었는지 확인합니다.
기본 권한을 변경한 모든 서비스에 대한 보안 설정은 자체 레지스트리 키
HKLM\System\CurrentControlSet\Services\<servicename>\Security
에 저장됩니다. 보안에서 REG_BINARY 유형의 매개변수입니다.즉, 다른 컴퓨터에서 서비스 권한을 설정하는 방법 중 하나는 이 레지스트리 매개변수(GPO를 통한 포함)를 내보내거나 가져오는 것입니다.
따라서 관리자가 아닌 사용자에게 시스템 서비스에 대한 모든 권한을 부여할 수 있는 Windows 서비스 권한을 관리하는 여러 방법을 살펴보았습니다. 사용자가 로컬 로그온 또는 RDP 액세스 권한을 부여하지 않고 서비스에 대한 원격 액세스가 필요한 경우 사용자가 원격으로 연결하고 Service Control Manager를 통해 서비스를 열거하도록 허용해야 합니다.