Windows cmd.exe가 높은 권한으로 실행되는 경우 프롬프트에서 실행하는 모든 항목도 높은 권한으로 실행됩니까?


11

cmd.exe 창의 제목 표시 줄에 "관리자"라고 표시되어 높은 권한으로 시작되었음을 나타내는 경우이 명령 창에서 실행 한 모든 항목이 높은 권한으로 실행되는 것입니까?

특히, 내가 다음과 같은 것을 실행하면 :

msiexec SomeProgram.msi

높은 권한으로 실행되는 cmd.exe에서 실행되었으므로 설치 관리자가 높은 권한으로 실행되고 있습니까?

더 구체적으로 말하면, msiexec위 의 호출 과 같이 UI를 제공하고 cmd.exe 창에서 프롬프트를 즉시 반환하는 응용 프로그램이 높은 권한으로 실행 되는지 궁금합니다 .

답변:


16

예, 높은 권한으로 실행됩니다.

간단한 테스트 :

하나의 높고 높지 않은 명령 프롬프트를 열어서이를 쉽게 테스트 할 수 있습니다. notepad.exe둘 다 에서 명령 을 실행하고 빈 텍스트 파일을에 저장하십시오 C:\Windows. 하나는 저장하고, 하나는 권한 오류를 발생시킵니다.

철저한 테스트 :

그것이 당신을 위해 그것을 확인하기에 충분하지 않으면 (실제로 나를 만족시키지 못했습니다) SysInternals에서 AccessChk 를 사용할 수 있습니다 . 관리자 권한 명령 프롬프트에서이를 실행해야합니다.

실행중인 두 개의 메모장 프로세스를 확인하여 시작하겠습니다.

메모장 : ( accesschk.exe -v -p notepad)

[11140] notepad.exe
  Medium Mandatory Level [No-Write-Up, No-Read-Up]
  RW DOMAIN\Tannerf
        PROCESS_ALL_ACCESS
  RW NT AUTHORITY\SYSTEM
        PROCESS_ALL_ACCESS
[11004] notepad.exe
  High Mandatory Level [No-Write-Up, No-Read-Up]
  RW BUILTIN\Administrators
        PROCESS_ALL_ACCESS
  RW NT AUTHORITY\SYSTEM
        PROCESS_ALL_ACCESS

하나는 내 도메인 사용자 이름으로 실행 중이고 다른 하나는 관리자 기본 제공 그룹에서 실행 중입니다. 또한 필수 수준높습니다 . -f권한과 토큰의 분류를 위해 플래그를 사용하여 실행할 수도 있습니다 .

MSIExec 및 MSI 파일

나는 달릴 때 상황이 조금 더 복잡해질 것이라고 생각했다 msiexec. 테스트하기 편리한 Chrome 독립형 설치 프로그램이 있습니다.

관리자 권한 프롬프트에서 msiexec.exe가 Chrome 설치 프로그램을 시작합니다.

D:\Users\tannerf>accesschk.exe -p msiexec.exe

[10540] msiexec.exe
  RW BUILTIN\Administrators
  RW NT AUTHORITY\SYSTEM

MSI에서 생성 한 chrome_installer.exe :

D:\Users\tannerf>accesschk.exe -p chrome_installer.exe

[5552] chrome_installer.exe
     NT AUTHORITY\SYSTEM
     OWNER RIGHTS
  RW NT SERVICE\msiserver

더 이상 자르지 말고 말리십시오! chrome_installer.exe프로세스가 MSIServer 서비스를 통해 실행 된 것 같습니다 .


이로 인해 다른 설치 관리자의 동작이 궁금해 졌으므로 Evernote.msi를 실행하여 편리했습니다.

Evernote 설치 프로그램을 시작하는 높은 msiexec.exe :

[6916] msiexec.exe
  High Mandatory Level [No-Write-Up, No-Read-Up]
  RW BUILTIN\Administrators
        PROCESS_ALL_ACCESS
  RW NT AUTHORITY\SYSTEM
        PROCESS_ALL_ACCESS
[4652] msiexec.exe
  System Mandatory Level [No-Write-Up, No-Read-Up]
  R  BUILTIN\Administrators
        PROCESS_QUERY_INFORMATION
        PROCESS_QUERY_LIMITED_INFORMATION

흥미있는; 이번에는 시스템 수준에서 실행되는 msiexec.exe가 있습니다. Process Monitor를 사용하여 팝업되는 실제 설치 창이 시스템 레벨 msiexec 프로세스에서 나온다는 것을 알았습니다. 높은 필수 수준을 종료하면 시스템 수준 프로세스도 종료됩니다.

Evernote 설치 프로그램을 시작하는 높지 않은 msiexec.exe :

[7472] msiexec.exe
  Medium Mandatory Level [No-Write-Up, No-Read-Up]
  RW DOMAIN\Tannerf
        PROCESS_ALL_ACCESS
  RW NT AUTHORITY\SYSTEM
        PROCESS_ALL_ACCESS
[4404] msiexec.exe
  System Mandatory Level [No-Write-Up, No-Read-Up]
  R  BUILTIN\Administrators
        PROCESS_QUERY_INFORMATION
        PROCESS_QUERY_LIMITED_INFORMATION

Evernote가 시스템 레벨 액세스를 어느 쪽이든 얻을 수있을 것 같습니다. 설치 프로그램을 두 번 클릭해도 같은 결과가 나타납니다.


결론:

프로세스가 달리 지정하지 않으면 권한을 상속한다는 것이 잘 설명되어 있습니다. 그렇다고 msiexec SomeProgram.msi모든 프로세스 프로세스에서 높은 수준의 강제 실행이 보장되는 것은 아닙니다 . 시스템 수준 또는 MSIServer에서 실행될 수 있습니다. 마일리지가 다를 수 있으며 이러한 규칙이 "파손 된"것으로 보이는 많은 사례를보고 놀랄 것입니다.


2
그렇다 경험적 테스트에서, Windows 프로세스가되어 가정 부모로부터 상속 권한.
Bob

테스트와 함께 좋은 지적. 관리자 권한으로 시작한 cmd.exe에서 시도한 결과 관리자 권한 C:\Windows으로 cmd.exe에서 메모장을 시작했지만 파일을 저장하려는 권한이 거부 되었습니다. "부모로부터 상속 받았다"규칙을 어기는 방법이 있습니까?
Ian C.

@IanC. 더 적은 권한으로 하위 프로세스를 실행할 수 있습니다. 이전 의견을 " 기본적 으로 상속 받으려면"이라고 말 했어야합니다 . 해당 정보를 포함하도록 답변을 수정했습니다. 그러나 메모장 에는 관리 권한이 상속 되어야합니다 .
Bob

@IanC. 홀수, 그것은 나를 위해 일했다. accesschk를 사용해 보셨습니까? 차이점이 무엇인지 확실하지 않습니다.
Tanner Faulkner

11

기본적으로 Windows 프로세스는 부모로부터 보안 컨텍스트를 상속합니다.

프로세스의 기본 보안 설명 자의 ACL은 작성자의 기본 또는 가장 토큰에서 가져옵니다.

프로세스 보안 및 액세스 권한에 대한 MSDN

그러나 더 적은 권한으로 프로세스를 생성 할 수 있습니다.

프로세스는 생성 된 프로세스의 무결성 수준을 상속하지만 프로세스 생성시 무결성 수준을 사용자 지정할 수 있습니다. 사용자 인터페이스 권한 격리 기술에서 창 메시지의 경계를 정의 할뿐만 아니라 필수 무결성 제어는 Windows 탐색기, Internet Explorer, Google Chrome 및 Adobe Reader와 같은 응용 프로그램에서 시스템의 취약한 개체로부터 문서를 격리하는 데 사용됩니다.

이 다른 MSDN 페이지 와 관련된 필수 무결성 제어에 관한 Wikipedia여기에 언급되어 있습니다 . 또 다른 프레젠테이션 은 프로세스 상속에 대해서도 언급합니다.

그러나 cmd.exe는 @Tanner의 테스트 및 답변에서 볼 수 있듯이 가능한 가장 높은 수준의 권한 상속으로 자식 프로세스를 시작한다고 생각합니다.


2

실행 된 명령의 권한을 높이는 방법에는 두 가지가 있습니다.

  • runas /trustlevel:0x20000 "msiexec SomeProgram.msi"(실행 runas /showtrustlevels이 배우고 0x20000실제로 관리자로 실행할 때를 부여하지 않고이 전달됩니다. - - 설치 / 상승 권한 "이 필요합니다"라는 프로그램을 실행이도 작품 기본 사용자하자면 trustlevel입니다 태너의 메모장 테스트를 당) 이 SU 답변
  • psexec -l -d msiexec SomeProgram.msi이 SU 응답 (어쩌면 일부 ""뿐만 아니라 필요합니다, 나는 이후이 테스트를하지 않았다 runas나를 위해 작품 벌금의 정도)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.