항상 내 Windows 컴퓨터에서 관리자가 아닌 계정으로 작업합니다. 때때로 관리자 액세스가 필요한 프로그램을 설치해야합니다. 주로 Windows 명령 프롬프트를 사용함에 따라 Linux 터미널 명령과 비슷한 권한을 에스컬레이션하는 Windows 명령이 sudo
있습니까?
doskey sudo= runas /user:Administrator "cmd /k cd \"%cd%\" & $*"
항상 내 Windows 컴퓨터에서 관리자가 아닌 계정으로 작업합니다. 때때로 관리자 액세스가 필요한 프로그램을 설치해야합니다. 주로 Windows 명령 프롬프트를 사용함에 따라 Linux 터미널 명령과 비슷한 권한을 에스컬레이션하는 Windows 명령이 sudo
있습니까?
doskey sudo= runas /user:Administrator "cmd /k cd \"%cd%\" & $*"
답변:
에서 runas는 명령.
runas [{/profile|/noprofile}] [/env] [/netonly] [/smartcard] [/showtrustlevels] [/trustlevel] /user:UserAccountName program
그냥 실행 :
runas /noprofile /user:Administrator cmd
관리자로 명령 셸을 시작하려면
/noprofile
.
Runas
다른 자격 증명 세트에서 명령을 실행하기 만합니다. 자격 증명에 관리자 권한이 있더라도 자격 증명 아래의 모든 프로세스가 관리자로 실행되는 것은 아닙니다.
내가 발견 상승 오늘 "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 를 비활성화 해야합니다 .
문제가 해결되는 것은 권한이없는 쉘에서 특정 프로세스를 에스컬레이션 한 다음 정상적으로 수행하는 것입니다. 이 권한이 없으면 권한있는 명령 을 시도하기 전에 마우스 오른쪽 버튼을 클릭하고 "관리자 권한으로 실행" 으로 쉽게 권한을 부여 할 수있는 권한있는 명령 프롬프트를 시작해야합니다 .
%wheel ALL=(ALL) NOPASSWD: ALL
sudo 에서와 동일 합니다.
@elevate %*
=> 이익!
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 사용자 그룹을 정의해야합니다. 사용자는 권한 상승 전에 자격 증명을 제공해야합니다.
때로는 차이점이 중요하지 않고 때로는 중요하며 두 명령 모두 유용 할 수 있습니다.
~/.themes
경우 sudo 응용 프로그램은 해당 테마에 액세스 할 수 없습니다 /home/root/.themes
.
다른 콘솔로 전환 할 준비가 되면 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
단어 를 좋아한다면 이름을 바꿀 수 있습니다 .
press enter or esc to exit
메시지 만 받으십시오 .
sudo
명령이 완료된 후 비 승인 터미널로 돌아갑니다 ! 당신은 잘못 가고 있습니다.
sudo를 추가하는 세 단계.
PowerShell을 엽니 다.
다음 스크립트 (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
sudo
PowerShell에서 명령을 영구적으로 활성화 합니다.
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
. : File C:\Users\User\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 cannot be loaded because running scripts is disabled on this system.
set-executionpolicy remotesigned
. 그 밖의 다른 옵션 remotesigned
은 공식 문서에 설명되어 있습니다.
powershell -c start -verb runas program.exe
기능성에 대한 포장지라는 것을 알고 있습니다. 또한 cmd 프롬프트를 사용하여 이와 같이 상승시킬 수 없습니다 (기본적으로). Powershell이 최상의 기본 옵션입니다.
Windows 에서이 작업을 수행하는 경우 몇 가지 다른 답변에서 언급 한대로 실행 명령 외에도 마우스 로이 작업을 수행하는 방법이 있습니다.
ShiftWindows에서 대부분의 실행 파일을 마우스 오른쪽 버튼으로 클릭 할 때 키 를 누르고 있으면 몇 가지 고급 옵션이 나타납니다. 이 중 하나는 " Run As...
"옵션입니다 ( Run As Administrator
Vista부터는 " " 라고 생각합니다 ).
ShellRunAs 라고하는 Microsoft에서 고급 버전의 RunA를 다운로드 할 수도 있습니다. 이 기능은 명령 줄 및 그래픽 모드에서 내장 된 RunAs 명령에 비해 향상된 기능으로 계정 자격 증명을 저장할 수 있습니다.
아시다시피 runas를 사용하면 다른 사용자로 실행할 수 있지만 권한 상승을 수행 할 수 없으며 현재 디렉토리, 환경 변수 또는 긴 명령 줄을 전달하지 않습니다.
Hamilton C 쉘 은 진정한 su와 sudo로이를 해결합니다. su를 사용하면 다른 사용자로 명령을 실행할 수 있습니다. sudo (실제로 su의 별명)를 사용하면 명령을 상승시킬 수 있습니다. 다른 사용자 권한으로 실행하여 둘 다 수행 할 수도 있습니다. 현재 디렉토리, 환경 변수 및 긴 명령 줄은 호출자의 컨텍스트에서 실행되는 su와 자식을 시작하는 새로운 자격 증명과의 상호 작용으로 실행되는 자체 복사본 사이의 공유 메모리 핸드 셰이크를 통해 전달됩니다. 전체 공개 : 저는 저자입니다.
이 스크립트는 다음 작업을 수행합니다.
@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 헤더를 제거하기 위해 약간 편집했습니다.
다음 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