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.