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

Is er een 'sudo'-opdracht voor Windows?

Ik werk altijd op een niet-administrator-account op mijn Windows-computer. Soms moet ik programma’s installeren waarvoor beheerderstoegang nodig is. Omdat ik meestal de Windows commando prompt gebruik, is er een Windows commando om privileges te escaleren, vergelijkbaar met het Linux terminal commando sudo?

Antwoorden (15)

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

Het runas commando.

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

Rennen:

runas /noprofile /user:Administrator cmd

om een commandoshell te starten als beheerder.

128
128
128
2011-04-12 06:42:00 +0000
  • Elevate ** - “voert een commando uit met UAC-voorrecht. Dit is nuttig voor het werken binnen commando-aanwijzingen of met batch-bestanden.” Het is niet hetzelfde als sudo, het verandert de uitvoerende gebruiker in Administrator, maar de syntax is veel eenvoudiger te gebruiken dan runas, en het kan de huidige directory behouden, waardoor het gebruik van relatieve paden mogelijk wordt.
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’s doel is niet om UAC (User Account Control) te omzeilen of te omzeilen, maar om er mee te werken. Zolang UAC is ingeschakeld is er has een soort van prompt op sommige punten in het proces. Als u helemaal van de prompt moet afzien, moet u UAC ](http://ss64.com/nt/syntax-uac.html) uitschakelen.

Het pijnpunt Elevate verlicht een bepaald proces vanuit een niet geprivilegieerd omhulsel en gaat dan gewoon door. Zonder dit moet je een geprivilegieerde opdrachtprompt starten met rechtsklik> “Run as Administrator” voordat je het geprivilegieerde commando probeert, dat niet gemakkelijk kan worden gescript.

Dit werkt goed met “Elevate without prompting” in secpol.msc. Samen doen ze hetzelfde als %wheel ALL=(ALL) NOPASSWD: ALL in sudo

Een bekende beperking is dat het de foutcode van het programma dat het verhoogt niet retourneert.

Als je spiergeheugen vastzit op sudo, maak dan een alias aan met behulp van Doskey : doskey sudo=elevate -w

of batchfile in PATH: @elevate -w %*

Elevate is een 3rd party tool geschreven door Johannes Passing . Het is een 11kb-download en draagbaar (geen installatie nodig): http://code.kliu.org/misc/elevate/

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

U kunt de opdracht runas gebruiken, die ongeveer hetzelfde is, of u kunt het project sudo voor Windows bekijken bij SourceForge , dat een sudo-opdracht toevoegt.

Het verschil is subtiel:

Laten we zeggen dat u twee gebruikers hebt. Bob is een normale gebruiker en James is een beheerder.

Als u inlogt als Bob en “runas james acommand” gebruikt, wordt het commando uitgevoerd alsof het door James wordt uitgevoerd, dus het heeft toegang tot de gebruikersinstellingen van James en eventuele gebruikerswijzigingen gaan naar James Mijn documenten & instellingenmappen, enz. Dus als je een applicatie installeert, bijvoorbeeld, zal het worden geïnstalleerd als James, niet als Bob.

Als Bob daarentegen “sudo acommand” doet, wordt het commando nog steeds uitgevoerd als Bob, maar met verhoogde rechten - net als het Linux sudo commando. Om te voorkomen dat een gebruiker sudo kan uitvoeren, moet je een sudoers gebruikersgroep definiëren die de lijst bevat van de normale gebruikers die toestemming hebben om sudo te gebruiken. De gebruikers moeten nog steeds hun gegevens opgeven voor de verhoging.

Soms is het verschil niet belangrijk, soms wel, en ik vind dat beide commando’s nuttig kunnen zijn.

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

U kunt ook de Script Elevation PowerToys gebruiken.

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

Als u klaar bent om over te schakelen naar alternatieve consoles, is er ConEmu (ik ben de auteur). Een van de functies - de mogelijkheid om zowel verhoogde als niet-verhoogde tabbladen in het ene ConEmu-venster uit te voeren. Tabs kunnen ook worden gestart met verschillende referenties.

Voor het gebruikerscomfort is er een batch-file csudo.cmd (die gemakkelijk kan worden overgenomen om te bash). Lees de volledige beschrijving in project wiki . In het kort, wanneer je een of andere opdracht uitvoert vanuit een bestaand niet-verhoogd tabblad, bijvoorbeeld

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

ConEmu start dism in de nieuwe verhoogde console/tab (met voorafgaande UAC prompt in Vista of Login box in XP).

Standaard start csudo nieuwe console in een split (kan wijzigingen zijn via het bewerken van csudo.cmd inhoud).

En natuurlijk mag je het hernoemen naar sudo.cmd als je van “klassiek” sudo woord houdt.

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

Snelle methode:

Drie stappen om sudo toe te voegen.

    1. Open PowerShell.
    1. Kopieer het volgende script (Ctrl+C) en plak het in 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. Druk op Enter.

Het zal het sudo commando in PowerShell permanent inschakelen.

Gebruik:

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

Voorbeelden:

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

Lange leermethode:

Naanwijzing: Ik heb het script van beide artikelen gemixt om het bovengenoemde script te maken. In plaats van het script handmatig in kladblok te plakken heb ik de Out-File statements toegevoegd om ps1 en $profile bestanden van het script op te slaan.

Tip: Als je niet zo'n grote fan bent van UAC popups (zoals ik), sla dan het volgende op in *.reg bestand en voer het uit:

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

Als je dit doet onder Windows, dan zijn er naast het commando Run As, zoals genoemd in een aantal andere antwoorden, ook manieren om dit met de muis te doen.

Als je de Shift-toets ingedrukt houdt terwijl je met de rechtermuisknop op de meeste uitvoerbare bestanden in Windows klikt, zou je een paar meer geavanceerde opties moeten opmerken. Een daarvan is de “Run As...” optie (ik denk dat het “Run As Administrator” heet vanaf Vista).

U kunt ook een meer geavanceerde versie van RunAs van Microsoft downloaden, genaamd ShellRunAs , deze heeft verbeteringen ten opzichte van het ingebouwde RunAs commando, zowel in opdrachtregel als in grafische modi, waaronder het opslaan van accountgegevens.

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

Surun ](http://translate.google.com/translate?u=http://kay-bruns.de/wp/software/surun/&langpair=de%7Cen&hl=de&safe=active&ie=UTF-8&oe=UTF-8&prev=/language_tools) is een gratis, open-source applicatie die het mogelijk maakt om bepaalde programma’s te draaien met beheerdersrechten, zonder een wachtwoord te geven zonder het gebruikersregister te wijzigen of omgevingsvariabelen aan te passen.

Toen ik Windows XP gebruikte, helpt deze app me veel. Beta werkt onder Windows 7.

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

Zoals je waarschijnlijk hebt ontdekt, laat runas je draaien als een andere gebruiker, maar het kan geen elevatie doen en het geeft geen huidige directories, omgevingsvariabelen of lange opdrachtregels door. Hamilton C shell lost dat op met een echte su en sudo. su laat je een opdracht uitvoeren als een andere gebruiker; sudo (eigenlijk een alias naar su) laat je een opdracht elevated uitvoeren. Je kunt ook beide doen, waarbij je als een andere gebruiker een verhoogd commando kunt uitvoeren. Huidige directories, omgevingsvariabelen en lange commandoregels worden doorgegeven door middel van een gedeelde geheugenhandshake tussen su die in de context van de beller draait en een kopie van zichzelf die draait als een intermezzo met de nieuwe referenties die het kind dan start. Volledige openheid: ik ben de auteur.

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

Er is een chocoladeverpakking voor met de handige naam sudo . U kunt het pakket met chocolatey installeren met deze opdracht:

choco install -y sudo

Dan kunt u in welke Windows/MS-shell u ook moet gebruiken, u kunt sudo gebruiken zoals verwacht.

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

Ik schreef gsudo , een sudo voor windows die aanvoelt als *nix sudo en een paar killer features heeft:

  • Rennen binnen de huidige console (bijgevoegd) zonder tab-toets auto-compleet te breken. Of voeg -n toe om in een nieuw venster te starten.
  • Behandelt alle scenario’s betrouwbaar om te gebruiken op scripts. (ExitCodes, StdIn/Out/Err Redirection/Capture)
  • Ondersteunt Cmd/PowerShell/PowerShell Core
  • Credentials cache: Als gsudo meerdere malen binnen enkele minuten wordt aangeroepen, wordt de UAC pop-up slechts één keer weergegeven.

Gebruik

gsudo Opent een verhoogde schaal in de huidige console.

gsudo [options] {command} [arguments] Voert het opgegeven commando uit met verhoogde rechten.

Meest relevante [options]:

  • -n | --new Start het commando in een nieuwe console met verhoogde rechten (en geeft het direct terug).
  • -w | --wait Wacht tot het proces is beëindigd (en retourneert de exitcode).
  • -s | --system Voer uit als lokaal systeemaccount (“NT AUTHORITEITSSYSTEEM”).
  • --copyev Kopieer alle omgevingsvariabelen naar de verhoogde sessie alvorens deze uit te voeren.

Installatie

  • Gebruik van Scoop: scoop install gsudo
  • Gebruik van Chocolatey: choco install gsudo
  • Handmatige installatie
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

Een werkende sudo vervanging voor Cygwin’s mintty terminal zou zijn om het volgende script te plaatsen in de PATH van de gebruiker:

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

Voor mij is dit de enige haalbare vervanging om de privileges van programma’s als vim of cygrunsrv te verhogen tijdens het werken in een terminal op Windows.

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

De eenvoudigste oplossing in mijn ogen is om gebruik te maken van powershell om het werk te doen, wat draagbaar is en de gebruiker zal aanzetten tot het gebruik van de UAC.

Je kunt dit gewoon uitvoeren in elke willekeurige shell (cmd of powershell) powershell Start-Process -verb runAs path-to-your.exe "-all -args -in -quotes"

0
0
0
2018-02-01 21:29:20 +0000

Het volgende vbs-script laat toe om een bepaald commando te starten met argumenten met elevatie en bootst het gedrag na van het originele unix sudo commando voor een beperkte set van gebruikte gevallen (het zal noch referenties cachen, noch toelaten om echt commando’s met verschillende referenties uit te voeren). Ik zet het op 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

Voorbeeldgebruik op een commando prompt sudo net start service

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

Dit script doet het werk:

@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

Sla het op als sudo.cmd en voeg het vervolgens toe aan uw PATH

Opmerking: de runas betekent in deze context “Uitvoeren als beheerder” en niet “Uitvoeren als andere gebruiker” Genomen van hier en licht bewerkt om cscript.exe header te verwijderen uit de uitvoer