명령 프롬프트를 향상시킬 수있는 명령이 있습니까?


61

* nix 시스템에서 다음과 같이 루트 쉘을 얻을 수 있습니다.

$ su # or 'sudo -s'
#

루트 쉘은 동일한 터미널 내에서 생성됩니다.

Windows 명령 프롬프트에서 비슷한 위치에서 상승하는 것을 찾으려고합니다. 즉, 새 창을 생성하거나 UAC 프롬프트를 표시해서는 안됩니다. 지금까지 UAC를 우회하는 예약 된 작업을 수행 할 수 있었지만 높은 명령 프롬프트 창이 표시되지 않았습니다.

새 창을 생성하지 않고 내부 입면도를 수행하는 Windows 용 명령이 있습니까?


31
su / sudo -s는 실제로 새로운 쉘 프로세스를 시작합니다. 단지 상승 된 프로세스가 동일한 터미널에 연결되어있어 마치 마치 상승한 것처럼 보입니다.
Lie Ryan

"새 창을 띄우거나 UAC 프롬프트를 표시해서는 안됩니다"그래픽 상호 작용이 필요하지 않다는 말입니까? 아니면 전혀 프롬프트 표시하고 싶지 않습니까? 예를 들어, sudo때로는 암호를 묻는 메시지가 표시되지만 텍스트 인터페이스에서는 암호가 필요합니다. Nano 서버 ( 원격 데스크톱 용 GUI를 기본적으로 제공 한다고 생각하지 않음)가 어떻게 서버를 처리하는지 궁금합니다 .
jpmc26

2
@ jpmc26 텍스트 인터페이스의 상호 작용은 괜찮습니다.
user2064000

@ jpmc26 Nano 서버에 UAC가 있는지 궁금합니다. 컨테이너에 최적화되어 있기 때문에별로 유용하지 않습니다. IIRC에서도 Server Core 버전에서는 비활성화되었습니다. 실수로 활성화 한 경우 문제가 발생합니다.
Luaan

2
@ user2064000 UAC 프롬프트는 사용자의 현재 데스크톱이 아니라 보안 데스크톱에서 시작됩니다 (적어도 기본적으로 비 Windows 바이너리의 경우). 약간 성가신 것 외에도 다른 프로세스가 UAC 프롬프트를 방해하지 않도록 설계되었습니다. 또한 인증이 필요한 경우 보안 데스크탑에 있어야하며 일부 관리자는 Windows가 비밀번호를 사용하고 있으며 비밀번호 프롬프트를 가장하는 다른 프로세스가 아니라는 것을 증명하기 위해 Ctrl-Alt-Del 시퀀스를 요구할 수도 있습니다. 따라서 cmd 창에 암호를 입력하면 Microsoft 보안 측면에서 비행하지 않을 수 있습니다.
칼 카스

답변:


65

TL; DR- 유일한 옵션은 다른 프로세스를 생성하는 것입니다. (새로운 기능 cmd.exe) 명령 프롬프트의 경우, 권한이 더 높은 액세스 토큰으로 새 인스턴스를 시작 하면 항상 새 창이 생성됩니다.


이미 실행중인 프로세스에 추가 권한을 부여 할 수 없습니다 .

관리 권한이있는 사용자가 UAC (사용자 계정 컨트롤)를 사용하여 Windows 컴퓨터에 로그인하면 두 개의 개별 액세스 토큰이 만들어집니다 .

  1. 하나는 전체 관리자 액세스 권한이 있으며
  2. 표준 사용자 액세스 권한이있는 두 번째 "필터링 된 토큰"

프로세스 (예 : 프로세스 CMD.EXE)가 생성 될 때이액세스 토큰 중 하나가 할당됩니다 . 프로세스가 관리자로 "고가"로 실행되면 필터링되지 않은 액세스 토큰이 사용됩니다. 프로세스에 관리자 권한이 부여되지 않으면 필터링 된 표준 사용자 토큰이 사용됩니다.

프로세스가 생성되면 액세스 토큰을 교체 할 수 없습니다 . 1Windows 데스크톱 용 MSDN Application Security 스레드 에서 자신을 Windows 커널 팀의 구성원으로 식별하는 포스터는 다음과 같이 말합니다.

NT 커널은 프로세스가 실행되기 시작한 후에 토큰 전환을 허용하지 않았습니다. 이는 이전 보안 컨텍스트에서 핸들 등이 열렸을 수도 있고, 기내 작업에서 일관성이없는 보안 컨텍스트 등을 사용할 수도 있기 때문입니다. 따라서 프로세스가 시작된 후에는 프로세스 토큰을 전환하는 것이 일반적으로 적합하지 않습니다. 그러나 이것은 Vista까지 시행되지 않았습니다 . [강조 광산] ( @Ben N 덕분 에 출처 )

참고 : 사용자 계정 컨트롤은 Windows Vista 릴리스 에서 도입되었습니다 .

이 수퍼 유저 답변 에는 동일한 내용을 확인하는 두 가지 추가 출처가 있습니다.

따라서 명령 프롬프트 나 다른 프로세스를 제자리에 올리는 것은 불가능합니다. 유일한 옵션은 새로운 액세스 토큰으로 다른 프로세스를 생성하는 것입니다 (원하는 경우 원래 프로세스의 다른 인스턴스 일 수 있음). 명령 프롬프트의 경우 더 높은 권한을 가진 액세스 토큰으로 새 인스턴스를 시작하면 항상 새 창이 생성되며 시스템에서 UAC 프롬프트가 활성화 된 경우에도 트리거됩니다.


1 MSDN에 따라 AdjustTokenPrivileges 함수를 사용하여 기존 액세스 토큰의 권한을 조정할 수 있습니다 .

AdjustTokenPrivileges 함수는 액세스 토큰에 새로운 권한을 추가 할 수 없습니다. 토큰의 기존 권한 만 활성화 또는 비활성화 할 수 있습니다.


19

나는의 열렬한 사용자이지만 TCC-LE새로운 프로그램이 필요없는 솔루션이 있습니다.

  • cmd관리자로 시작하십시오 .
  • 시작 %SystemRoot%\system32\하지 않으면 시작해야합니다 cd.
  • copy cmd.exe cmdadmin.exe(또는 원하는 이름 등 su.exe)
  • 이제 탐색기를 실행하고를 찾으십시오 cmdadmin.exe.
  • 마우스 오른쪽 단추를 클릭하고 특성을 선택하십시오 .
  • 에서 호환성 탭 관리자로 실행을 선택 (또는 모든 사용자로 설정).

이제 cmdadmin당신의 것입니다 susudo: 당신은 당신에게 관리 권한이있는 쉘을 제공하는 매개 변수없이 시작할 수 있습니다, 또는 당신은 그것을 실행할 수있는 /c이 모드에서 단일 명령을 실행 할 수 있습니다. 정책에 따라 확인 메시지가 표시되거나 표시되지 않을 수 있습니다.

이것은 항상 새 창을 열 것입니다 (TCC 솔루션과 마찬가지로 start /elevated ...) .GUI 응용 프로그램의 경우 이것이 예상되지만 명령 줄 프로그램의 경우, /k대신 사용 /c하여 출력을 볼 수 있습니다. ; 또는 배치 파일 ( sudo.cmd아마?)을 통해 실행할 수 있습니다.이 파일 & pause은 실행 문자열의 끝 부분에 연결 됩니다.

두 경우 모두이 같은 아주 동일 하 su거나 sudo, 그러나 당신이 얻을 것이다 가장 가까운입니다. 창 레이아웃을 수동으로 설정하면 원본 바로 아래에 직접 새 창을 만들 수 있습니다.


이것은 아마도 sudo새 창 / 프로세스가 생성되는 것에 대한 경고와 함께 OP가 동작에 가장 근접 할 수 있습니다 . 보안 관점에서 최상의 아이디어는 아니지만 모든 UAC 프롬프트를 비활성화하면 상승 된 프로세스가 시작될 때 UAC 프롬프트에 응답하지 않아도됩니다.
Twisty Impersonator

@Twisty-댓글 주셔서 감사합니다. 보안 관련 영향을 알고 있었지만 계정 으로 관리자 권한으로 실행을 허용한다는 원래 전제보다 나쁘지는 않습니다 . 호출 할 때마다 지속적인 알림을 원하는지 여부를 결정하기 위해 구현하는 사람에게 달려 있습니다.
AFH

2
귀하의 이익에 대한 보안 영향에 대해서는 언급하지 않았으며 다른 독자에게도 영향을 미쳤습니다. 그러나 UAC 프롬프트를 비활성화하는 것이 관리자로 실행하는 것보다 나쁘지 않다는 것에 동의하지 않습니다. UAC 프롬프트 관리자로 로그인 한 사용자가 프로세스에 원치 않는 관리 권한을 부여하지 못하게 할 수 있습니다 . 프롬프트가 없으면 사용자는이 기회를 잃게됩니다.
Twisty Impersonator

@Twisty-그냥. 내 대답은 비슷한 동기에서 나왔습니다. 다시 감사합니다.
AFH

1
cmd.exe를 복사하는 대신 심볼릭 링크를 만듭니다. 이 방법으로 Windows에서 업데이트하고 보안 버그를 패치하면 이전 버전을 실행하지 않습니다mklink cmdadmin.exe cmd.exe
Josef

11

명령 프롬프트를 향상시킬 수있는 명령이 있습니까?

다소 불편한 방법이 있습니다.

powershell -Command "Start-Process 'cmd.exe' -Verb runAs"

더 좋은 방법이 있었지만 Microsoft는 그 방법을 닫았습니다. 물론, 항상 소매를 감아 서 sudo방금 제공 한 소스 코드와 동일한 스크립트를 작성할 수 있습니다.

즉, 새 창을 생성하거나 UAC 프롬프트를 표시해서는 안됩니다.

신성 모독! 스테이크에 그를 태워라! ;) 농담. 없습니다. 그것은 버그와 보안 취약점입니다. Microsoft는 높은 수준의 프로세스와 표준 프로세스의 공통점이 거의 없도록 노력했습니다.

두 개의 백엔드 (하나는 표준 및 하나는 올림)와 하나는 그래픽 프론트 엔드에 대해 생각하고있는 똑똑한 아이들은 세션 0 격리 에 대해 읽어야 합니다.


2

새 창을 생성하지 않고 내부 입면도를 수행하는 Windows 용 명령이 있습니까?

그러한 명령은 내장되어 있지 않습니다. 입증 된 것은 아니지만이 문제를 해결하기 위해 추가 소프트웨어 / 코드를 사용하는 여러 가지 방법을 보았 기 때문입니다.

즉, 새 창을 생성하거나 UAC 프롬프트를 표시해서는 안됩니다.

잊어 버려. 절대 잊어 버리세요. 그것은 UAC의 디자인에 위배됩니다. 이를 관리 할 수 ​​있다면 기본적인 보안 프로세스가 중단 된 것입니다. Microsoft가이 문제를 해결하기 위해 수행 할 수있는 모든 프로세스를 알고 수정 한 후에는 패치를 통해 솔루션이 중단 될 것으로 예상합니다.

UAC 프롬프트를 피하는 솔루션은 우선 고도를 높이는 것입니다. 충분한 권한이있는 경우 UAC가 귀찮게하지 않아야합니다. 낮은 보안 수준으로 시작하여 (보안상의 이점으로 권장되는 경우) 높은 권한이 필요한 작업을 수행하려고하면 UAC 상호 작용이 필요합니다.


예약 된 작업을 통해 UAC 프롬프트를 이미 무시할 수 있습니다. 새 명령 프롬프트 창을 생성하는 대신 내부 입면을 수행하는 것을 찾고 있습니다.
user2064000

그렇게하면 UAC의 요구 사항을 충족시키지 않고 예약 된 작업을 실제로 설정할 수 있습니까? 스폰에 관해서는, 지금까지 내가 본 모든 높은 솔루션이 새로운 프로세스를 시작하는 것을 보았 기 때문에 그렇게 기대하지 않는다고 말합니다 . 설치 프로그램이 UAC를 시작한 후 UAC를 요구할 수 있기 때문에 새로운 프로세스를 시작하지 않고 기술적으로 향상시킬 수 있다고 생각하지만, 쉽게 사용 가능한 솔루션을 보았지만 배치 파일로 쉽게 가져올 수는 없습니다.
TOOGAM

과연; 예약 된 작업은 UAC를 완전히 물리칩니다. 일단 상승하면 서비스를 통해 SYSTEM으로 승격 된 다음 원래 cmd.exe 프로세스에서 replace token을 사용할 수 있습니다.
Joshua

기본 작업을 수행 하는 다소 공식적인 PowerToy 스크립트가 있습니다. elevate cmdUAC 프롬프트를 사용하여 새 명령 프롬프트 창을 열도록 입력 할 수 있습니다 (사이트에는 상황에 맞는 메뉴 명령도 있습니다!). 또는 기존 명령 프롬프트 창의 작업 표시 줄 아이콘을 Ctrl + Shift + 클릭하여 동일하게 수행 할 수 있습니다. 이것이 가장 자주하는 일입니다. (내가 아는 것은 OP가 요구 한 것이 아니라 OP가 요구 한 것이 설계에 의해 차단 된 것이다.)
Miral

2

이 개념을 지원하지 않기 때문에 Windows에서는 원하는 것이 불가능합니다. 더 높은 권한으로 새 프로세스를 시작해야합니다 .

명령 줄에서 프로세스를 높이기 위해 nircmd 를 사용 합니다. 당신의 명령은nircmdc elevate cmd


2

나는이 질문을 보았고 간단한 해결책을 제시했다. 이 유틸리티 rsudo는 일반 CMD 창에서 에스컬레이션 된 명령을 실행 하는 작은 유틸리티 입니다.

참고 : UAC 프롬프트 가 나타 납니다. 이것을 숨기는 것은 불가능합니다. UAC가 설계된 방식 일뿐입니다.

Usage:
  rsudo.exe "[command]"

다운로드 [다운로드가 작동하지 않습니다. 곧 업데이트됩니다.]

참고 : 명령은 새 창에서 실행됩니다. 출력을 보려면 다음을 실행하십시오.rsudo.exe "pause && [command]"


그렇지 rsudo.exe "[command] && pause"않습니까?

@fleet 아니오, 버그가 pause먼저 실행됩니다
rahuldottech

라훌, 고마워! 소스 코드가 있습니까? ;) (또는 아마 당신의 사이트에서 잘못된 곳을보고 있었을 것입니다.)
cxw

반드시 @cwz! 집에 도착했을 때 편집하고 블로그 게시물을 추가
하겠습니다

0

이거 이상 해요

같은 기존 터미널을 사용하지만 실제로는 완전히 다른 컴퓨터에서 ssh를 시도해 볼 수 있습니다.

작동하지만 원하는 것은 아닐 것입니다.

다른 사람들은 유용 할 수 있습니다.


-1

JPSOFT Take Command 명령 프롬프트 TCC / LE를 시도하십시오 . 32 비트 및 64 비트 버전으로 제공되며 더 많은 기능을 원하지 않는 한 무료입니다.

https://jpsoft.com/으로 이동하여 Downloads를 클릭하고 원하는 것을 선택하십시오.

TCC / LE에는 전체 관리자 권한으로 프로그램을 시작하는 START / ELEVATED가 있습니다. (Windows Vista 이상 만 해당)


1
이것은 질문과 어떤 관련이 있습니까?
user2064000

@DavidGrainger 그것은 / elevated 스위치가 여전히 UAC를 우회하고 제자리에서 고도를 수행 할 수 없다는 것을 알게되었습니다 (자세한 내용은 질문 참조). 뭔가 빠졌습니까?
user2064000

이것은 Windows 명령 프롬프트를 대체합니다. 또한 상승 된 시작은 내장 명령 프롬프트 상승을 시작하는 것과 다르지 않습니다.
Twisty Impersonator

UAC 설정을 "알림 없음"으로 변경하는 유일한 방법 UAC 알림이 표시되면 "자세한 정보 표시"링크를 클릭 한 다음 "이 알림이 표시 될 때 표시"링크를 선택하십시오. 작동하는 설정을 선택하십시오. 완료되면 다시 변경하여 원치 않는 동작이 포착 될 수 있습니다. 이것은 Windows 설정에서 수행 할 수 있습니다.
David Grainger

TCC / LE는 다른 많은 것들도합니다. UAC를 never로 설정 한 후 "시작 / Elevated / PGM"C : \ Program Files \ IrfanView \ i_view64.exe "/ thumbs"를 사용하여 Elevated 프로그램을 열었습니다.
David Grainger
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.