관리자/권한 실행 시에도 서비스를 시작하려고 하면 "액세스가 거부되었습니다"

관리자/권한 실행 시에도 서비스를 시작하려고 하면 "액세스가 거부되었습니다"

관리자 권한의 "관리자: 명령 프롬프트"에서 사용하고 있는데 sc start "MyService"다음 오류가 발생합니다.

[SC] StartService 실패 5:

접근이 금지되어있다.

services.msc완전성을 위해 GUI( ) 에서 실행하려고 할 때 발생하는 오류는 다음과 같습니다.

오류 5: 액세스가 거부되었습니다.

.NET 서비스이므로 InstallUtil.exe(관리자 권한으로 실행)을 사용하여 설치되었습니다. 서비스는 NETWORK SERVICE로 실행되도록 구성되어 있지만 LOCAL SERVICE로도 시도해 보았습니다.

답변1

이는 기본적으로 NETWORK SERVICE 또는 LOCAL SERVICE 모두 내 서비스 실행 파일이 있는 디렉터리에서 읽을 수 있는 권한이 없기 때문입니다. 최소한 폴더에 대한 읽기 권한을 부여해야 했습니다.

답변2

나는 이 정확한 문제를 발견했지만, 이 문제를 해결하기 위한 답변에서 명확한 지침 세트를 찾지 못해 실망했습니다.

빠르고 더러운

가장 간단한 해결책은 명령을 실행하기 전에 서비스를 설치하려는 애플리케이션(구체적인 예에서는 Tor)이 NT AUTHORITY\LOCAL SERVICE읽을 수 있는 어딘가에 있는지 확인하는 것입니다. 예를 들면 다음과 같습니다.C:\Tor\

개인적으로 나는 이와 같은 솔루션을 경멸합니다.

더 깨끗하고, 더 교육적이며, 더 지루합니다.

저는 Tor를 에 넣었습니다 $env:UserProfile\AppData\Local\Programs. Windows 10에서 향상된 PowerShell 터미널을 사용하여 수행한 작업은 다음과 같습니다.

PS C:\Users\User\AppData\Local\Programs>$fsar = New-Object 
System.Security.AccessControl.FileSystemAccessRule(`
>> "NT AUTHORITY\LOCAL SERVICE",`
>> "ReadAndExecute",`
>> "ContainerInherit,ObjectInherit",`
>> "InheritOnly",`
>> "Allow")

이것은파일시스템액세스규칙(코드에서 참조 $fsar) "NT AUTHORITY\LOCAL SERVICE"의 IdentityReference가 규칙이 적용되는 모든 파일/폴더와 그 하위 항목을 읽고 실행(및 그에 따른 부작용)할 수 있도록 허용합니다. PropagationFlag "InheritOnly"와 함께 상속 플래그 "ContainerInherit,ObjectInherit"를 사용합니다. "허용"은 허용하도록 규칙을 설정합니다(적용된 거부는 이를 재정의하지만 이는 발생하지 않을 것입니다).

이제 우리는 Tor를 설치한 폴더에 이 액세스 규칙을 적용하려고 합니다. 첫 번째 단계에서는 다음을 사용하여 기존 ACL을 가져옵니다(따라서 처음에 있던 내용을 망치지 않도록).Get-Acl. 두 번째 단계에서는 해당 액세스 규칙을 변수에 저장한 개체에 추가합니다. 세 번째 단계에서는 수정한 액세스 제어 목록을 명령에 제공합니다.Set-AclTor가 포함된 폴더의 경로도 제공합니다.

PS C:\Users\User\AppData\Local\Programs>$torFolderAcl = Get-Acl .\MyTorFolder
PS C:\Users\User\AppData\Local\Programs>$torFolderAcl.AddAccessRule($fsar)
PS C:\Users\User\AppData\Local\Programs>$torFolderAcl | Set-Acl .\MyTorFolder

폴더 구조에서 tor.exe파일이 있는 위치로 이동한 후 명령을 실행할 수 있어야 합니다.

Tor 전용 콘텐츠

모르는 사람들을 위해 sc직접 또는 다른 서비스 응용 프로그램을 사용하지 않고도 이 작업을 수행할 수 있는 바로 가기가 내장되어 있습니다.

torrc특정 위치에 파일을 저장하고 서비스에서 이를 사용하도록 하려면 다음을 사용하여 서비스를 설치할 수 있습니다.

PS C:\Users\User\AppData\Local\Programs\MyTorFolder>.\tor.exe --service install -options -f $pathToTorrc

나처럼 지루한 액세스 제어 문제가 있음을 깨닫기 전에 위의 작업이 문제 없이 작동할 것으로 기대했다면 아마도 다음을 실행하고 싶을 것입니다.

PS C:\Users\User\AppData\Local\Programs\MyTorFolder>.\tor.exe --service start

이 추가 답변을 통해 최소한 한 두 사람이 도움을 받을 수 있기를 바랍니다. 그렇지 않다면 1~2년 후에 다시 여기로 돌아와서 처음에 어떻게 했는지 필연적으로 잊어버릴 때 직접 사용할 것입니다...

관련 정보