GSUDO ist ein sudo
-Äquivalent für Windows mit einer ähnlichen Benutzererfahrung wie der ursprüngliche Unix/Linux-Sudo. Ermöglicht Ihnen, einen Befehl auszuführen (oder Ihre aktuelle Shell neu zu starten) mit erhöhten Berechtigungen im aktuellen oder neuen Konsolenfenster.
Bereiten Sie einfach gsudo
(oder den sudo
-Alias) auf Ihren Befehl vor und es wird erhöht. Für PowerShell verwenden Sie diese Syntax: gsudo { ScriptBlock }
Ein UAC -Popup erscheint jedes Mal. Sie können weniger Popups sehen, wenn Sie Gsudo -Cache aktivieren.
Es erkennt Ihre aktuelle Shell und erhöht Ihren Befehl als native Shell -Befehle. (Unterstützt Cmd
, PowerShell
, WSL
, git-bash
, MinGW
, Cygwin
, Yori
, Take Command
, BusyBox
& NuShell
.)
Gsudo - ein Sudo für Windows
Verwendung vom Powershell / PowerShell -Kern
Verwendung von WSL (Windows -Subsystem für Linux)
PowerShell -Modul
Inhaltsverzeichnis
Demo
Merkmale
Installation
Verwendung
Konfiguration
Anmeldeinformationen Cache
Bekannte Probleme
FAQ
Bitte unterstützen Sie Gsudo! ?
Erweiterte Dokumentation erhältlich unter: https://gerardog.github.io/gsudo/
(mit gsudo config CacheMode auto
)
Erhöhte Befehle werden in der aktuellen Konsole angezeigt. Kein neues Fenster (es sei denn, Sie geben -n
an)
Anmeldeinformationen Cache: gsudo
kann sich um ein Vielfaches erhöhen, wenn nur ein UAC-Popup angezeigt wird, wenn der Benutzer sich entscheidet, um den Cache zu aktivieren.
Erkennt Ihre aktuelle Shell (unterstützt CMD
, PowerShell
, WSL
, Bash for Windows
(Git-Bash/Mingw/MSYS2/Cygwin), Yori
, Take Command
und NuShell
) und erhöht Ihren Befehl richtig.
Unterstützt, dass es in Skripten verwendet wird:
Ausgänge STDOut /Stderr können gelopt oder erfasst werden (z. B. gsudo dir | findstr /c:"bytes free" > FreeSpace.txt
) und Auch Codes ( %errorlevel%
). Wenn gsudo
nicht erhöht, beträgt der Ausgangscode 999.
Wenn gsudo
aus einer bereits erhöhten Konsole aufgerufen wird, wird der Befehl einfach ausgeführt (es wird nicht scheitern). Sie müssen sich also keine Sorgen machen, wenn Sie gsudo
oder ein Skript ausführen, das gsudo
von einer bereits erhöhten Konsole verwendet. (Das UAC -Popup erscheint nicht, da keine Höhe erforderlich ist)
gsudo !!
erhöht den zuletzt ausgeführten Befehl. Arbeitet an CMD, Git-Bash, Mingw, Cygwin (und PowerShell nur mit GSUDO-Modul)
Verwenden von SCOOP: scoop install gsudo
Verwenden von Winget: winget install gerardog.gsudo
Mit Schokolade: choco install gsudo
Ausführen dieser Zeile: (Skript):
PowerShell -Command "set -executionPolicy remotessigned -Scope -Prozesse; [net.servicePointManager] :: SecurityProtocol = 'tls12';
Tragbar:
Laden Sie gsudo.portable.zip
aus der neuesten Veröffentlichung herunter
Extrahieren Sie den Ordner, der Ihrer Prozessorarchitektur (x64, x86 oder arm64) entspricht, aus der ZIP -Datei in ein geeignetes Verzeichnis auf Ihrem Computer.
Fügen Sie das Verzeichnis optional in die Pfadumgebungsvariable Ihres Systems hinzu, wenn es noch nicht zugänglich ist.
Bitte starten Sie alle Ihre Konsolenfenster nach der Installation neu, um sicherzustellen, dass die PATH
aktualisiert wird.
Hinweis: gsudo.exe
ist tragbar. Es ist kein Windows -Dienst erforderlich oder eine Systemänderung wird durchgeführt, außer dass es dem Pfad hinzugefügt wird.
GSUDO [Optionen] # Startet Ihre aktuelle Shell ElevatedGsudo [Optionen] {Befehl} [args] # rennt {Befehl} mit erhöhten Berechtigungengsudo -Cache [on | aus | Hilfe] # startet/stoppt eine Anmeldeinformationen. (Weniger UAC-Popups) Gsudo-Status [-Json | Filter] # zeigt den aktuellen Benutzer, Cache und Konsolenstatus an. # Letzter Befehl als Administrator neu. (Ymmv)
Neue Fensteroptionen: -n | --New # startet den Befehl in einer neuen Konsole/einem neuen Fenster (und kehrt sofort zurück). -W | -Warten Sie, wenn Sie in einer neuen Konsole enden, bis der Befehl endet. -Keepshell # Nachdem Sie einen Befehl ausgeführt haben, halten Sie die erhöhte Hülle offen. -KeepWindow # Nachdem Sie einen Befehl in einer neuen Konsole ausgeführt haben, fragen Sie nach dem Schließen der Konsole/der Fenster. Security -Optionen: -U | --User {usr} # Ausführen als angegebener Benutzer. Fragt nach Passwort. Für lokale Admins zeigt UAC, es sei denn, '-i Medium' -i | -Integrität {v} # Integritätsebene angeben: nicht vertrauen, niedrig, mittel, MediumPlus, hoch (Standard), System, System, System, System, System -S | -System # als lokales Systemkonto (NT Authority System). -ti # rennen als Mitglied des NT servicetrustedInstallers -K # tötet alle zwischengespeicherten Anmeldeinformationen. Wenn das nächste Mal Gsudo ausgeführt wird, wird ein UAC -Popup angezeigt. -Überschneidet die Schale-Erkennung. Angenommen, CMD Shell oder CMD {Befehl}. -LoadProfile # Bei Anstieg von PowerShell-Befehlen, laden Sie das Benutzerprofil. Andere Optionen:-Loglevel {val} # Mindestprotokollstufe festlegen, um anzuzeigen: All, Debug, Info, Warnung, Fehler, keine -Debug # Aktivieren Sie den Debug-Modus. –Copyns # Netzwerkantriebe mit dem erhöhten Benutzer verbinden. WARNUNG: VERBOSE, Interactive fragt nach Anmeldeinformationen -Copyev # (veraltet) Kopienumgebungsvariablen zum erhöhten Prozess. (Nicht im Standardkonsolenmodus benötigt) --Chdir {dir} # Ändern Sie das aktuelle Verzeichnis in {Dir}, bevor Sie den Befehl ausführen.
Hinweis: Sie können überall den von den Installateuren erstellten sudo
-Alias verwenden.
Beispiele:
GSUDO # erhöht die aktuelle Shell im aktuellen Konsolenfenster (unterstützt CMD/PowerShell/PWSH Core/Yori/Take Command/Git -Bash/Cygwin) Gsudo -n # Starten ./Do-something.ps1 # Start im neuen Fenster und warte auf ExitGsudo Notozel %Windir %system32Driversetchosts # Start Windows Appsudo Notepad # sudo alias integriert # redirect/pipe Eingang/Ausgabe/Fehler explodgsudo reichen | findStr /c: "Bytes Free"> freespace.txt GSUDO CONFOR LOGLEVEL "ERRAGE" # Konfigurieren Sie reduzierte Logginggsudo -Konfiguration Eingabeaufforderung. Auto
gsudo
erkennt, ob er von PowerShell aufgerufen wird und die PS -Befehle erhöht (es sei denn -d
, um CMD -Befehle zu erhöhen).
Der Befehl zur Erhöhung wird in einem anderen Prozess ausgeführt, sodass er nicht auf die übergeordneten $variables
und den Umfang zugreifen kann.
Um einen Befehl oder ein Skriptblock zu erhöhen: Wickeln Sie ihn in {Curly Braces} ein .
# Syntax: gsudo {scriptBlock} gsudo [options] {scriptBlock} [-Args $ argument1 [..., $ argumentn]]; Schreibausgabe $ args [0]} -Args $ MyString # Ausgabe wird als psObjects mit Eigenschaften serialisiert. Schreibeingabe $ dienste.displayname# Inputs auch: Beispiel Erhöhte Iteration einer Liste.get-childitem. | gsudo {$ input.creationTime}
Alternative Syntaxe:
# Übergeben Werte (keine Variablen nach Referenz) durch Präfix von `$ uw:`. Dh $ mystring = "Hello World" Invoke-Gsudo {Write-Output $ $ verwendet: MyString} # Syntax: Invoke-Gsudo [-ScriptBlock] <ScriptBlock> [[-ArgumentList] <eljekts []>] [-InputObject <StObject>] [-LoadProfile | -Noprofile] [-Redential <Scredential>]
- PowerShell function. - Performs auto serialization of inputs & outputs. - You can prefix variables with the `$using:` scope modifier (like `$using:variableName`) and their serialized value is applied. - Use `-LoadProfile` or `-NoProfile` to override profile loading or not. - Use `-Credential` option for Run As User (same as `-u` but for `Get-Credentials`). - Better forwarding of your current context to the elevated instance (current Location, $ErrorActionPreference)
Verwendung: gsudo 'String literal'# variable Substitutionen Beispiel: $ file = 'C: My Secret.txt'; $ algorithm = 'md5'; .Hash "
Akzeptiert ein String buchstäblich mit dem Befehl, sich zu erheben.
Gibt eine Liste von Saiten zurück.
Optional: Modul importieren gsudoModule.psd1
in Ihr PowerShell -Profil:
# Fügen Sie Ihrem $ Profil-Import-Module "gsudomodule"# oder run: recesoutput "` Nimport-Module "Gsudomodule" "| Add-Content $ Profil
Fügen Sie diese Zeile Ihrem Profil hinzu (nach dem Importieren von gsudoModule
):
Set-alias fordert gsudoprompt
Wenn Sie Ihre PowerShell-Eingabeaufforderung noch nicht angepasst haben (z. B. durch die Installation von OH-my-posh), können Sie problemlos eine rote #
hinzufügen, die angibt, dass der aktuelle Prozess erhöht ist:
Test-IsGsudoCacheAvailable
Return true, wenn ein Gsudo-Cache aktiv ist (was bedeutet, dass eine Höhe ohne UAC möglich ist).
Test-IsProcessElevated
: Gibt true zurück, wenn der aktuelle Prozess erhöht ist.
Test-IsAdminMember
: Gibt true zurück, wenn der aktuelle Benutzer Mitglied der Local Administrators
ist, was bedeutet, dass er sich mit zunehmendem.
Fügt Syntax automatisch zu GSUDO in PowerShell hinzu. Außerdem schlägt es die 3 vorherigen Befehle vor und macht Ihren Workflow reibungsloser als je zuvor!
Ermöglicht gsudo !!
auf Powershell, um den zuletzt ausgeführten Befehl zu erhöhen.
Fügt Funktionen hinzu:
Auf WSL sind Erhebung und root
unterschiedliche Konzepte. root
ermöglicht die vollständige Verabreichung von WSL, jedoch nicht des Windows -Systems. Verwenden Sie die native su
oder sudo
von WSL, um root
zu erhalten. Um Admin -Privilegien für das Windows -Feld zu erhalten, müssen Sie den WSL.EXE -Prozess erhöhen. gsudo
erlaubt das (ein UAC -Popup wird angezeigt).
Bereiten Sie gsudo
auf WSL Bash vor, um WSL -Befehle oder gsudo -d
für CMD -Befehle zu erhöhen.
# Standard -ShellPC erhöhen: ~ $ gsudo # Rennen Sie Elevated WSL CommandPC: ~ $ gsudo mkdir/mnt/c/windows/myfolder# Ausführen PC: ~ $ gsudo -d "Notepad C: WindowsSystem32Driversetchosts"# Test für GSUDO und Befehls erfolgsretval = $ ?; if [$ retval -eq 0]; thenecho "Erfolg"; Elif [$ retval -eq $ ((999 % 256))]; dann wird # gsudo Fehlerexitscode (999) als 231 auf WSL (999 MOD 256) Echo "Gsudo nicht mehr erhöht!"; Elseecho "Befehl" mit dem Exit -Code $ $ retval "; fi;
GSUDO -Konfiguration # Aktuelle Konfigurationseinstellungen und Werte anzeigen. Gsudo config {key} [--global] [Wert] # Lesen oder schreiben Sie eine Benutzereinstellung Gsudo config {key} [--global]--Reset # reset config auf den Standardwert zurück -Global # betrifft alle Benutzer (überschreiben Benutzereinstellungen)
Der Credentials Cache
ermöglicht es, falls aktiviert und aktiv, mehrmals von einem übergeordneten Prozess mit nur einem UAC-Pop-up zu steigen. Nach 5 Minuten ohne Erhöhungen schließt sich die Cache -Sitzung automatisch ab (konfigurierbare Zeitüberschreitung über gsudo config CacheDuration
).
Obwohl dies sehr bequem ist, ist es wichtig, die potenziellen Sicherheitsrisiken zu verstehen. Auch wenn Gsudo selbst sicher ist, liegt die inhärente Verwundbarkeit im Hostprozess. Wenn Ihr System bereits durch einen böswilligen Prozess beeinträchtigt ist, kann es den zulässigen Prozess (z. B. CMD/PowerShell) manipulieren und eine aktive Gsudo -Cache -Instanz erzwingen, um die Berechtigungen zu erhöhen, ohne eine UAC -Eingabeaufforderung auszulösen.
Dieses Risiko ist der Kompromiss für die Verwendung des Cache für Anmeldeinformationen. Der Cache ist sicher zu verwenden, solange Sie zuversichtlich sind, dass es keine böswilligen Prozesse auf Ihrem System ausführen.
Hier sind die Credentials Cache
-Modi:
Explicit:
(Standard) Jede Höhe zeigt ein UAC -Popup, es sei denn, eine Cache -Sitzung wird manuell gestartet ...
Um einen Cache -Session -Lauf zu starten oder zu stoppen: gsudo cache {on | off}
Dies ist der Standardmodus. (Verwenden Sie gsudo config CacheMode Explicit
um auf diesen Wert zurückzukehren).
Auto:
Ähnlich wie bei Unix-Sudo. Die erste Höhe zeigt ein UAC -Popup und startet automatisch eine Cache -Sitzung .
Führen Sie gsudo config CacheMode Auto
aus, um diesen Modus zu verwenden.
Disabled:
Jede Höhe zeigt ein UAC -Popup, und der Versuch, eine Cache -Session zu starten, macht einen Fehler.
Führen Sie gsudo config CacheMode Disabled
aus, um diesen Modus zu verwenden.
In jedem Fall können Sie alle Cache -Sitzungen mit gsudo -k
einstellen.
Erfahren Sie mehr
Die erhöhten Instanzen haben keinen Zugriff auf die am nicht erhöhten Raum verbundenen Netzwerkanteile. Dies ist kein gsudo
-Problem, sondern wie Windows funktioniert. Verwenden Sie --copyNS
, um Netzwerkaktien in die erhöhte Sitzung zu replizieren. Dies ist jedoch nicht bidirektional und ist interaktiv (kann für Benutzer/Kennwort auffordern).
gsudo.exe
kann auf eine Netzwerkfreigabe platziert und als serversharegsudo {command}
aufgerufen werden, funktioniert jedoch nicht, wenn Ihr aktueller Ordner ein Netzwerklaufwerk ist. Zum Beispiel nicht servershare
zu Z:
und dann Z:>gsudo do-something
.
Bitte melden Sie Probleme im Abschnitt mit Problemen.
Warum heißt es gsudo
anstelle von nur sudo
?
Als ich gsudo
erstellte, gab es in den meisten Windows -Paketmanagern wie Chocolatey
und Scoop
andere sudo
-Pakete, sodass ich keine andere Wahl hatte, einen anderen Namen zu wählen. gsudo
-Installateure erstellen einen Alias für sudo
. Verwenden Sie also sudo
in Ihrer Befehlszeile, um gsudo
aufzurufen.
Warum haben Sie von .Net Framework 4.6
nach .Net Core 7.0
migriert?
Ab V1.4.0 wird es mit .Net 7.0
NATIVEAOT erstellt. Es lädt schneller und verwendet weniger Speicher und wird auf Maschinen ausgeführt, ohne dass eine .NET -Laufzeit installiert ist. Vorherige Versionen <v1.3.0
verwendet .NET 4.6, da es in jeder Windows 10/11 -Installation enthalten war.
Ist gsudo
ein Port von *nix sudo
?
Nein. gsudo
erinnert an den ursprünglichen Sudo zu den Benutzererwartungen. Viele sudo
-Funktionen sind *nix
spezifisch und könnten niemals ein Windows
-Gegenstück haben. Andere Merkmale (wie sudoers
) könnten möglicherweise implementiert werden, sind jedoch an diesem Punkt nicht.
Was sind die Anforderungen? Funktioniert es in Windows 7/8?
Es funktioniert ab dem Win7 SP1. Einige Funktionen funktionieren möglicherweise nur in Windows 10/11, z. B. als Vertrauensausfall.
Wie kehre ich nach der Verwendung von GSUDO zum vorherigen Sicherheitsstufe zurück?
Auf die gleiche Weise wie bei Unix/Linux sudo
: gsudo
ändert den aktuellen Prozess nicht, sondern startet einen neuen Prozess mit unterschiedlichen Berechtigungen/Integritätsniveaus. Um zum vorherigen Level zurückzukehren, beenden Sie einfach den neuen Prozess. Für Command Prompt
oder PowerShell
geben Sie einfach exit
ein.
Bitte geben Sie uns einen Stern!
Helfen Sie mit, das Wort zu verbreiten, indem Sie gsudo
in sozialen Netzwerken erwähnen!
Sponsor oder spenden