Windows에 대한 'sudo'명령이 있습니까?


449

항상 내 Windows 컴퓨터에서 관리자가 아닌 계정으로 작업합니다. 때때로 관리자 액세스가 필요한 프로그램을 설치해야합니다. 주로 Windows 명령 프롬프트를 사용함에 따라 Linux 터미널 명령과 비슷한 권한을 에스컬레이션하는 Windows 명령이 sudo있습니까?


7
나는 당신이 찾고있는 용어가 "높은"액세스라고 생각합니다. 자격 증명에 관리자 권한이 있더라도 자격 증명 아래의 프로세스에는 명령을 "스도"할 때까지 관리자 권한이 없습니다. Windows에서는 "상승"이라고합니다.
surfasb

7
@IGRACH 내 파워 쉘에 없습니다 ...
jiggunjer

2
나는 이것을 사용한다doskey sudo= runas /user:Administrator "cmd /k cd \"%cd%\" & $*"
William

1
내 시도 wsudoA, sudoChocolatey 패키지와 Windows 용 -like 도구를 사용할 수 있습니다.
noseratio

답변:


267

에서 runas는 명령.

runas [{/profile|/noprofile}] [/env] [/netonly] [/smartcard] [/showtrustlevels] [/trustlevel] /user:UserAccountName program

그냥 실행 :

runas /noprofile /user:Administrator cmd 

관리자로 명령 셸을 시작하려면


22
장기간 사용하기 위해 프로파일을로드 (예 : 환경 변수 포함) 할 수 있습니다. 이 경우을 삭제하십시오 /noprofile.
Richard

6
이것은 나를 위해 작동하지 않습니다. 암호를 입력하면 명령 프롬프트가 닫힙니다.
Jonas

55
관리자 암호를 요구하지 않습니까? sudo는이 요구된다 당신의 비밀!
n611x007

15
불행히도 이것은 심각하게 구식입니다. Runas다른 자격 증명 세트에서 명령을 실행하기 만합니다. 자격 증명에 관리자 권한이 있더라도 자격 증명 아래의 모든 프로세스가 관리자로 실행되는 것은 아닙니다.
surfasb

12
runas가 UAC를 무시할 수 없으므로 "오래된"+1 대신 Windows 단추를 누르고 cmd를 입력 한 다음 Ctrl + Shift + Enter를 누르십시오.
mellow-yellow

125

내가 발견 상승 오늘 "UAC의 권한 상승으로 명령을 실행합니다.이 명령 프롬프트 내부 또는 배치 파일로 작업 할 때 유용합니다." 와 동일하지 않으며 sudo실행중인 사용자를 관리자로 변경하지만 구문은 사용하기보다 훨씬 간단 runas하며 현재 디렉토리를 유지하여 상대 경로를 사용할 수 있습니다.

Synopsis:
  elevate [(-c | -k) [-n] [-u]] [-w] command

Options:
  -c  Launches a terminating command processor; equivalent to "cmd /c command".
  -k  Launches a persistent command processor; equivalent to "cmd /k command".
  -n  When using -c or -k, do not pushd the current directory before execution.
  -u  When using -c or -k, use Unicode; equivalent to "cmd /u".
  -w  Waits for termination; equivalent to "start /wait command".

Elevate의 목적은 UAC (사용자 계정 컨트롤)를 해결하거나 우회하는 것이 아니라 UAC (사용자 계정 컨트롤)를 사용하는 것입니다. 만큼 UAC가 활성화되어 거기 에서 프롬프트의 일종으로 어떤 과정에서 가리 킵니다. 프롬프트를 모두 제거해야하는 경우 UAC비활성화 해야합니다 .

문제가 해결되는 것은 권한이없는 쉘에서 특정 프로세스를 에스컬레이션 한 다음 정상적으로 수행하는 것입니다. 이 권한이 없으면 권한있는 명령 을 시도하기 전에 마우스 오른쪽 버튼을 클릭하고 "관리자 권한으로 실행" 으로 쉽게 권한을 부여 할 수있는 권한있는 명령 프롬프트를 시작해야합니다 .


5
이것은 secpol.msc의 "프롬프트하지 않고 높이기"로 완벽하게 진행됩니다. 함께, 그들은 %wheel ALL=(ALL) NOPASSWD: ALLsudo 에서와 동일 합니다.
sayap

2
@sayap, 분명히 말하면, ss64.com/nt/syntax-uac.html ?
매트 윌키

5
내가 상승 (v1.3.0)으로 찾은 유일한 문제는 높이고있는 프로그램에서 오류 코드를 반환하지 않는다는 것입니다.
Ken

4
Sudo.bat : @elevate %*=> 이익!
Joe DF

10
OOTB가없는 외부 유틸리티라고 언급하면 ​​좋을 것입니다.
Hi-Angel

67

runas 명령과 비슷한 명령을 사용 하거나 sudo 명령을 추가하는 SourceForge 에서 Windows 용 sudo 프로젝트를 점검 할 수 있습니다 .

차이점은 미묘합니다.

두 명의 사용자가 있다고 가정 해 봅시다. Bob은 일반 사용자이고 James는 관리자입니다.

Bob으로 로그인하여 "runas james acommand"를 사용하면 James가 실행 한 것처럼 명령이 실행되므로 James의 사용자 설정에 액세스하고 모든 사용자 변경 사항은 James My Documents & settings 폴더 등으로 이동합니다. 예를 들어 응용 프로그램을 설치하는 것은 Bob이 아니라 James로 설치됩니다.

반면에 Bob이 "sudo acommand"를 수행하는 경우 명령은 여전히 ​​Bob으로 실행되지만 Linux sudo 명령과 같이 높은 권한으로 실행됩니다. 모든 사용자가 sudo를 수행하지 못하게하려면 sudo를 사용하여 권한을 승격 할 수있는 일반 사용자 목록이 포함 된 sudoers 사용자 그룹을 정의해야합니다. 사용자는 권한 상승 전에 자격 증명을 제공해야합니다.

때로는 차이점이 중요하지 않고 때로는 중요하며 두 명령 모두 유용 할 수 있습니다.


2
확실합니까? 우분투에서 sudo를 실행할 때 현재 테마가있는 ~/.themes경우 sudo 응용 프로그램은 해당 테마에 액세스 할 수 없습니다 /home/root/.themes.
hasen November

5
@hasen j-문제는 ~ / .themes가 명령이 실행되기 전에 (따라서 루트로 전환되기 전에) 평가되기 때문입니다.
Jared

1
GitHub에서 호스팅되는 것을 제외하고 다른 솔루션은 windosu입니다. github.com/tehsenaus/windosu 방금 찾았으며 훌륭하게 작동하는 것 같습니다. 가장 좋아하는 것은 설치가 매우 쉽다는 것입니다. 그냥 "npm install -g windosu"입니다.
Venryx

39

스크립트 고도 PowerToys를 사용할 수도 있습니다 .


굉장-내가 찾던 것. 다른 사용자가 명령을 실행하고 싶지만 높은 권한으로 명령을 실행하고 싶었습니다.
orip

이 문제에 대한 올바른 해결책! 지저분한 구문으로 Runas를 원하는 사람은 누구입니까?
Stabledog

1
나는 종종 높이기 명령이 창에 내장되기를 바랐습니다. 환상적인 도구입니다.
닌클

이제 자체 승격 스크립트 작성 이 특히 관련된 동일한 저자 의 Elevation PowerToys 콜렉션 이 있습니다.
매트 윌키

1
물론 @barlop은 아닙니다. 그것은 UAC의 목적을 무너 뜨릴 것입니다.
닌클

29

다른 콘솔로 전환 할 준비가 되면 ConEmu가 있습니다 (저는 저자입니다). 기능 중 하나-하나의 ConEmu 창에서 상승 된 탭과 상승하지 않은 탭을 모두 실행할 수있는 기능. 다른 자격 증명으로 탭을 시작할 수도 있습니다.

사용자 편의를 위해 배치 파일 csudo.cmd 가 있습니다 (bash에 쉽게 적용 할 수 있음). 프로젝트 위키 에서 전체 설명을 읽으십시오 . 간단히 말해 기존의 높지 않은 탭에서 명령을 실행할 때

csudo dism /online /enable-feature /featurename:NetFX3 /All /Source:D:\sources\sxs /LimitAccess

ConEmu는 dism새로운 고급 콘솔 / 탭에서 시작 합니다 (Vista의 선행 UAC 프롬프트 또는 XP의 로그인 상자 사용).

기본적 csudo으로 분할에서 새 콘솔을 시작합니다 ( csudo.cmd내용 편집을 통해 변경 될 수 있음 ).

물론 sudo.cmd"고전적인" sudo단어 를 좋아한다면 이름을 바꿀 수 있습니다 .

ConEmu / Windows의 sudo


1
csudo는 오래 전에 ConEmu 배포판에 포함되었습니다. 링크가 전혀 필요하지 않습니다.
Maximus

여기서 문제는 sudo'd 명령 후에 새 콘솔 탭을 사용할 수 없게 된 것입니다. 따라서 상승 된 탭에서 계속 작업 할 수 없으며 press enter or esc to exit메시지 만 받으십시오 .
jiggunjer

1
물론 당신은 할 수 없습니다. 유닉스에서도 sudo명령이 완료된 후 비 승인 터미널로 돌아갑니다 ! 당신은 잘못 가고 있습니다.
Maximus

1
1) 새 창이나 탭을 열려면 계속 유지하고 사용자 가 계속할 것인지 선택하도록 할 수 있습니다. 2) 내 우분투에서는 매번 sudo 할 필요가 없으며 높이는 몇 분 지속됩니다. 3)이 응용 프로그램에는 백만 개의 옵션이 있지만 이것에 대한 아무것도 없습니까? 어쩌면 내가 망 쳤어
jiggunjer

24

빠른 방법 :

sudo를 추가하는 세 단계.

  1. PowerShell을 엽니 다.

  2. 다음 스크립트 (Ctrl + C)를 복사하여 PowerShell (Alt + Space + E + P)에 붙여 넣습니다.

$script_path="$HOME\Documents\Scripts"; if (!(test-path $script_path)) {New-Item -ItemType directory $script_path} if (!(test-path $profile)) { new-item -path $profile -itemtype file -force }". $script_path\sudo.ps1" | Out-File $profile -append; "function sudo(){if (`$args.Length -eq 1){start-process `$args[0] -verb `"runAs`"} if (`$args.Length -gt 1){start-process `$args[0] -ArgumentList `$args[1..`$args.Length] -verb `"runAs`"}}" | Out-File $script_path\sudo.ps1; powershell
  1. 을 누르십시오 Enter.

sudoPowerShell에서 명령을 영구적으로 활성화 합니다.

용법:

sudo <process-name> [param1 [param2 [param3]]]

예 :

sudo explorer
sudo notepad
sudo powershell
sudo cmd
sudo taskmgr
sudo tasklist
sudo taskkill /IM Skype.exe /PID 8496

학습을위한 긴 방법 :

참고 : 두 기사의 스크립트를 혼합하여 위에서 언급 한 스크립트를 만들었습니다. 메모장에 스크립트를 수동으로 붙여 넣는 대신 스크립트에서 Out-File저장할 명령문 ps1$profile파일을 추가했습니다 .

팁 : UAC 팝업 팬 (예 : 나와 같은)이 아닌 경우 * .reg 파일에 다음을 저장하고 실행하십시오.

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"ConsentPromptBehaviorAdmin"=dword:00000000

1
이 질문에 대한 Powershell 솔루션을 좋아합니다. 이것은 무언가를 높이는 가장 쉬운 방법이어야합니다. 기존의 박쥐 파일을 쉽게 포쉬로 변환 할 수 있습니다
미첼 Skurnik을

10 창에이 오류가있어. : File C:\Users\User\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 cannot be loaded because running scripts is disabled on this system.
sowrov

@sowrov, [이 기사] (www.faqforge.com/windows/windows-powershell-running-scripts-is-disabled-on-this-system/)를 참조하십시오. 기본적으로 PowerShell 스크립트는 모든 Windows 설치에서 비활성화되어 있습니다. 이 명령으로 활성화해야합니다 set-executionpolicy remotesigned. 그 밖의 다른 옵션 remotesigned공식 문서에 설명되어 있습니다.
vulcan raven

독자들은이 ps 스크립트가 powershell -c start -verb runas program.exe기능성에 대한 포장지라는 것을 알고 있습니다. 또한 cmd 프롬프트를 사용하여 이와 같이 상승시킬 수 없습니다 (기본적으로). Powershell이 ​​최상의 기본 옵션입니다.
jiggunjer

powershell env 대신 cmd.exe에서 동일한 작업을 수행 할 수 있습니까? powershell은 땡그랑 소리로 계산하지 않고 땡그랑 소리가 없으면 전혀 계산하지 않습니다 ...
PJJ

20

Windows 에서이 작업을 수행하는 경우 몇 가지 다른 답변에서 언급 한대로 실행 명령 외에도 마우스 로이 작업을 수행하는 방법이 있습니다.

ShiftWindows에서 대부분의 실행 파일을 마우스 오른쪽 버튼으로 클릭 할 때 키 를 누르고 있으면 몇 가지 고급 옵션이 나타납니다. 이 중 하나는 " Run As..."옵션입니다 ( Run As AdministratorVista부터는 " " 라고 생각합니다 ).

ShellRunAs 라고하는 Microsoft에서 고급 버전의 RunA를 다운로드 할 수도 있습니다. 이 기능은 명령 줄 및 그래픽 모드에서 내장 된 RunAs 명령에 비해 향상된 기능으로 계정 자격 증명을 저장할 수 있습니다.


4

편리한 sudo 라는 이름의 초콜릿 패키지가 있습니다 . 다음 명령을 사용하여 초콜릿으로 패키지를 설치할 수 있습니다.

choco install -y sudo

그런 다음 사용해야하는 Windows / MS 셸에서 원하는대로 사용할 수 있습니다 sudo.


3

Surun 은 사용자 레지스트리를 변경하거나 환경 변수를 수정하지 않고 암호를 제공하지 않고도 특정 프로그램을 관리 권한으로 실행할 수있는 무료 오픈 소스 응용 프로그램입니다.

Windows XP를 사용할 때이 앱이 많은 도움이되었습니다. 베타 는 Windows 7에서 작동합니다.


surun은 훌륭한 일을합니다. 그러나 때때로 Windows 8 및 8.1에서는 기본값이 이상적이지 않습니다. Windows의 실행 기능을 대체하기 때문에 시작 화면을 마우스 오른쪽 버튼으로 클릭하여 명령 프롬프트를 시작할 수 없습니다.
Wolf

3

아시다시피 runas를 사용하면 다른 사용자로 실행할 수 있지만 권한 상승을 수행 할 수 없으며 현재 디렉토리, 환경 변수 또는 긴 명령 줄을 전달하지 않습니다.

Hamilton C 쉘 은 진정한 su와 sudo로이를 해결합니다. su를 사용하면 다른 사용자로 명령을 실행할 수 있습니다. sudo (실제로 su의 별명)를 사용하면 명령을 상승시킬 수 있습니다. 다른 사용자 권한으로 실행하여 둘 다 수행 할 수도 있습니다. 현재 디렉토리, 환경 변수 및 긴 명령 줄은 호출자의 컨텍스트에서 실행되는 su와 자식을 시작하는 새로운 자격 증명과의 상호 작용으로 실행되는 자체 복사본 사이의 공유 메모리 핸드 셰이크를 통해 전달됩니다. 전체 공개 : 저는 저자입니다.


1

sudoCygwin mintty터미널 의 대체 작업 은 다음 스크립트를 사용자의 PATH에 배치하는 것입니다.

$!/bin/bash
cygstart --action=runas mintty -e `which bash` -lc \"$@\"

나에게 이것은 Windows의 터미널에서 vim또는 cygrunsrv터미널에서 작업하는 동안 프로그램의 권한을 높이는 유일한 대안 입니다.


1

이 스크립트는 다음 작업을 수행합니다.

@echo Set objShell = CreateObject("Shell.Application") > %temp%\sudo.tmp.vbs
@echo args = Right("%*", (Len("%*") - Len("%1"))) >> %temp%\sudo.tmp.vbs
@echo objShell.ShellExecute "%1", args, "", "runas" >> %temp%\sudo.tmp.vbs
@cscript //NoLogo %temp%\sudo.tmp.vbs

파일을 저장 sudo.cmd한 다음 PATH에 추가하십시오.

참고 : runas이 컨텍스트에서 "다른 사용자로 실행"이 아니라 "관리자로 실행" 의 수단

여기에서 가져 와서 출력에서 cscript.exe 헤더를 제거하기 위해 약간 편집했습니다.


1
이것은 새로운 콘솔을 만듭니다. sudo'd 명령이 완료되면 새 창이 사라 지므로 출력을 읽을 수도 없습니다.
jiggunjer

슬프게도 그렇습니다. 그러나 일부 기본 명령 (복사), GUI 도구 또는 관리자 cmd 열기에 사용할 수 있습니다.
Charles Milette

1

필자의 견해로는 가장 간단한 해결책은 powershell을 활용하여 휴대가 가능하고 UAC를 사용하라는 메시지를 표시하는 작업을 수행하는 것입니다.

모든 쉘 (cmd 또는 powershell)에서 이것을 실행할 수 있습니다

powershell Start-Process -verb runAs path-to-your.exe "-all -args -in -quotes"

0

다음 vbs 스크립트는 나를 위해 트릭을 수행합니다. 나는 그것을 입었다C:\Windows\System32

Set objArgs = WScript.Arguments
exe = objArgs(0)
args = ""
IF objArgs.Count >= 2 Then
   args = args & objArgs(1)
End If
For it = 2 to objArgs.Count - 1
   args = args & " " & objArgs(it)
Next
Set objShell = CreateObject( "WScript.Shell")
windir=objShell.ExpandEnvironmentStrings("%WINDIR%")
Set objShellApp = CreateObject("Shell.Application")
objShellApp.ShellExecute exe, args, "", "runas", 1
set objShellApp = nothing

명령 프롬프트에서의 사용 예 sudo net start service

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.