2009-09-17 09:24:35 +0000 2009-09-17 09:24:35 +0000
463
463

Czy jest jakieś polecenie 'sudo' dla Windows?

Zawsze pracuję na koncie nie-administratora na moim komputerze z systemem Windows. Czasami muszę zainstalować programy, które wymagają dostępu administratora. Ponieważ najczęściej używam wiersza poleceń Windows, czy istnieje komenda Windows do eskalowania uprawnień, podobna do linuksowej komendy terminalowej sudo?

Odpowiedzi (15)

272
272
272
2009-09-17 09:29:46 +0000

Polecenie runas .

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

Wystarczy uruchomić:

runas /noprofile /user:Administrator cmd

aby uruchomić powłokę komend jako administrator

128
128
128
2011-04-12 06:42:00 +0000
  • Elevate ** - “wykonuje komendę z podwyższeniem uprawnień UAC. Jest to przydatne do pracy wewnątrz podpowiedzi komend lub z plikami wsadowymi.”To nie to samo co sudo, zmienia wykonującego użytkownika na administratora, ale jego składnia jest o wiele prostsza w użyciu niż runas, i może zachować aktualny katalog, umożliwiając korzystanie ze ścieżek względnych.
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".

Celem Elevate nie jest obejście lub ominięcie UAC (User Account Control), ale praca z nim. Tak długo jak UAC jest włączone, _ musi być jakiś rodzaj zachęty w którym punkcie procesu. Jeśli chcesz całkowicie pozbyć się podpowiedzi, musisz wyłączyć UAC .

Punkt bólu, który łagodzi Elevate, to eskalowanie konkretnego procesu z nieuprzywilejowanej powłoki i kontynuowanie go jak zwykle. Bez tego, przed próbą wykonania uprzywilejowanego polecenia, należy uruchomić uprzywilejowany znak zachęty z prawym kliknięciem > “Uruchom jako administrator”, co nie może być łatwo skryptowane.

Działa to dobrze z “Podnieś bez podpowiedzi” w secpol.msc. Razem robią to samo co %wheel ALL=(ALL) NOPASSWD: ALL w sudo

Znanym ograniczeniem jest to, że nie zwraca kodu błędu z programu, który podnosi.

Jeśli twoja pamięć mięśniowa utknęła na sudo, stwórz alias używając Doskey : doskey sudo=elevate -w

lub pliku wsadowego w PATH: @elevate -w %*

Elevate jest narzędziem trzeciej strony napisanym przez Johannes Passing . Jest to narzędzie do pobrania 11kb i przenośne (nie wymaga instalacji): http://code.kliu.org/misc/elevate/

67
67
67
2009-09-17 09:28:30 +0000

Możesz użyć polecenia runas , które jest podobne, lub możesz sprawdzić projekt sudo dla Windows na stronie SourceForge , który dodaje polecenie sudo.

Różnica jest subtelna:

Powiedzmy, że masz dwóch użytkowników. Bob jest zwykłym użytkownikiem, a James jest administratorem.

Jeśli zalogujesz się jako Bob i użyjesz “runas james acommand”, polecenie jest uruchamiane tak, jakby było uruchamiane przez Jamesa, więc ma dostęp do ustawień użytkownika Jamesa, a wszelkie zmiany użytkownika przechodzą do James My Documents & settings folders, etc. Jeśli więc instalujesz aplikację, powiedzmy, że będzie ona instalowana jako James, a nie jako Bob.

Jeśli z drugiej strony Bob wykonuje “sudo acommand”, polecenie jest nadal wykonywane jako Bob, ale z podwyższonymi uprawnieniami - tak jak linuksowe polecenie sudo. Aby uniemożliwić każdemu użytkownikowi korzystanie z sudo, należy zdefiniować grupę użytkowników sudoers, która zawiera listę normalnych użytkowników, którzy mają uprawnienia do podwyższania poziomu korzystania z sudo. Użytkownicy muszą jeszcze podać dane uwierzytelniające przed podwyższeniem.

Czasami różnica nie jest istotna, czasami jest, i uważam, że obie komendy mogą być użyteczne.

41
41
41
2009-09-17 13:11:39 +0000

Można również użyć Script Elevation PowerToys .

30
30
30
2012-10-26 07:52:13 +0000

Jeśli jesteś gotowy do przełączenia się na konsole alternatywne, jest ConEmu (jestem autorem). Jedną z jego cech jest możliwość uruchamiania zarówno wyniesionych jak i niewyniesionych zakładek w jednym oknie ConEmu. Zakładki mogą być uruchamiane również z różnymi referencjami.

Dla wygody użytkownika, jest plik wsadowy csudo.cmd (który można łatwo zaadoptować do basha). Przeczytaj pełny opis w wiki projektu . W skrócie, gdy uruchomimy jakąś komendę z istniejącej, nie podniesionej zakładki, na przykład

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

ConEmu uruchomi dism w nowej, podniesionej konsoli/tabce (z poprzedzającym ją zapytaniem UAC w Viście lub polem logowania w XP).

Domyślnie csudo uruchamia nową konsolę w rozbiciu (mogą być zmiany poprzez edycję zawartości csudo.cmd).

I oczywiście możesz zmienić jej nazwę na sudo.cmd jeśli lubisz “klasyczne” słowo sudo.

24
24
24
2012-08-28 10:36:22 +0000

Quick method:

Three steps to add sudo.

  1. Open PowerShell.

  2. Skopiuj następujący skrypt (Ctrl+C) i wklej go do PowerShella (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. Naciśnij Enter.

Na stałe włączy polecenie sudo w PowerShell'u.

Use:

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

Examples:

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

Long method for learning:

Uwaga: Wymieszałem skrypt z obu artykułów aby stworzyć wspomniany powyżej skrypt. Raczej ręcznie wklejając skrypt w notatniku dodałem deklaracje Out-File, aby zapisać pliki ps1 i $profile ze skryptu.

WSKAZÓWKA: Jeśli nie jesteś zbyt wielkim fanem wyskakujących UAC-ów (jak ja), zapisz następujące rzeczy w pliku *.reg i uruchom go:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"ConsentPromptBehaviorAdmin"=dword:00000000
19
19
19
2009-09-17 11:22:41 +0000

Jeśli robisz to w systemie Windows, to oprócz polecenia Uruchom jako, jak wspomniano w kilku innych odpowiedziach, istnieją również sposoby, aby to zrobić za pomocą myszy.

Jeśli przytrzymasz klawisz Shift przy kliknięciu prawym przyciskiem myszy na większości plików wykonywalnych w systemie Windows, powinieneś zauważyć kilka bardziej zaawansowanych opcji. Jedną z nich jest opcja “Run As...” (myślę, że od Vista nazywa się “Run As Administrator”).

Możesz również pobrać bardziej zaawansowaną wersję RunAs od Microsoftu, o nazwie ShellRunAs , posiada ona ulepszenia w stosunku do wbudowanej komendy RunAs, zarówno w trybie wiersza poleceń, jak i w trybie graficznym, włączając w to możliwość zapisywania danych uwierzytelniających konto.

4
4
4
2011-11-17 15:24:50 +0000

Surun jest darmową, otwartą aplikacją, która pozwala na uruchamianie pewnych programów z prawami administratora, bez podawania hasła bez zmiany rejestru użytkownika lub modyfikowania zmiennych środowiskowych.

Kiedy korzystałem z Windows XP ta aplikacja bardzo mi pomaga. Beta działa pod systemem Windows 7.

3
3
3
2012-09-06 15:01:51 +0000

Jak pewnie odkryłeś, runa pozwolą ci działać jako inny użytkownik, ale nie może wykonywać wzniesień i nie przekazuje bieżących katalogów, zmiennych środowiskowych ani długich wierszy poleceń. Powłoka Hamiltona C rozwiązuje to z prawdziwym su i sudo. su pozwala ci wykonywać polecenia jako inny użytkownik; sudo (właściwie alias do su) pozwala ci wykonywać polecenia wyniesione. Można też wykonać oba, uruchamiając podwyższone jako inny użytkownik. Aktualne katalogi, zmienne środowiskowe i długie linie poleceń są przekazywane za pomocą wspólnego uścisku dłoni pamięci pomiędzy su działającym w kontekście dzwoniącego, a jego kopią działającą jako interludium z nowymi referencjami, które następnie uruchamiają dziecko. Pełne ujawnienie: Ja jestem autorem.

3
3
3
2018-06-14 18:44:28 +0000

Jest do tego opakowanie czekolady o wygodnej nazwie sudo . Możesz zainstalować pakiet z chocolatey za pomocą tej komendy:

choco install -y sudo

Następnie w dowolnej powłoce Windows/MS, której musisz użyć, możesz użyć sudo zgodnie z oczekiwaniami.

3
3
3
2019-11-07 16:12:24 +0000

Napisałem gsudo , sudo dla okien, które czuje się jak *nix sudo i ma kilka zabójczych funkcji:

  • Uruchom w bieżącej konsoli (dołączony) bez łamania karty-klucz auto-kompletne. Albo dodaj -n, aby uruchomić w nowym oknie.
  • Obsługuje wszystkie scenariusze niezawodnie, aby być używane na skryptach. (ExitCodes, StdIn/Out/Err Redirection/Capture)
  • Obsługuje Cmd/PowerShell/PowerShell Core
  • Credentials cache: Jeśli gsudo zostanie wywołany kilka razy w ciągu kilku minut, pokaże wyskakujące okienko UAC tylko raz.

Używanie

gsudo Otwiera podwyższoną powłokę w bieżącej konsoli.

gsudo [options] {command} [arguments]Wykonuje określoną komendę z podwyższonymi uprawnieniami.

Najistotniejsze [options]:

  • -n | --new Uruchamia komendę w nowej konsoli z podwyższonymi uprawnieniami (i wraca natychmiast).
  • -w | --wait Wymuszaj oczekiwanie na zakończenie procesu (i zwróć kod wyjścia).
  • -s | --system Uruchom jako konto systemu lokalnego (“NT AUTHORITY\SYSTEM”).
  • --copyev Kopiuj wszystkie zmienne środowiskowe do podwyższonej sesji przed wykonaniem.

Instalacja

  • użycie Scoop: scoop install gsudo
  • użycie Chocolatey: choco install gsudo
  • ręczna instalacja
PowerShell -Command "Set-ExecutionPolicy RemoteSigned -scope Process; iwr -useb https://raw.githubusercontent.com/gerardog/gsudo/master/installgsudo.ps1 | iex"
1
1
1
2014-11-26 09:45:34 +0000

Działającym zamiennikiem sudo dla terminala Cygwin mintty byłoby umieszczenie w PATH użytkownika następującego skryptu:

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

Dla mnie jest to jedyny realny zamiennik zwiększający uprawnienia programów takich jak vim lub cygrunsrv podczas pracy w terminalu na Windows.

1
1
1
2017-11-20 19:58:47 +0000

Najprostszym rozwiązaniem jest, moim zdaniem, wykorzystanie powershell'a do wykonania pracy, który jest przenośny i zachęci użytkownika do korzystania z UAC.

Można to po prostu uruchomić w dowolnej powłoce (cmd lub powershell)

powershell Start-Process -verb runAs path-to-your.exe "-all -args -in -quotes"
0
0
0
2018-02-01 21:29:20 +0000

Poniższy skrypt vbs pozwala na uruchomienie danej komendy z argumentami z podwyższeniem i naśladuje zachowanie oryginalnej komendy unix sudo dla ograniczonego zestawu używanych przypadków (nie będzie buforował danych uwierzytelniających ani nie pozwoli na rzeczywiste wykonywanie komend z różnymi danymi uwierzytelniającymi). Umieściłem go na 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

Przykładowe użycie na komendzie zachęty sudo net start service

0
0
0
2016-01-10 21:08:24 +0000

Ten skrypt wykona zadanie:

@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

Zapisz go jako sudo.cmd, a następnie dodaj do PATH

Uwaga: runas oznacza w tym kontekście “Uruchom jako administrator”, a nie “Uruchom jako inny użytkownik” Zabrane stąd i lekko wyedytowane, aby usunąć nagłówek cscript.exe z wyjścia.