GSUDO est un équivalent sudo
pour Windows, avec une expérience utilisateur similaire à celle de l'Unix / Linux Sudo d'origine. Vous permet d'exécuter une commande (ou de relancer votre coquille actuelle) avec des autorisations élevées, dans la fenêtre de la console actuelle ou une nouvelle.
Préparez simplement gsudo
(ou l'alias sudo
) à votre commande et il fonctionnera élevé. Pour PowerShell, utilisez cette syntaxe: gsudo { ScriptBlock }
Une popup UAC apparaîtra à chaque fois. Vous pouvez voir moins de fenêtres contextuelles si vous activez le cache GSUDO.
Il détecte votre shell actuel et élève votre commande en tant que commandes de shell native. (Soutient Cmd
, PowerShell
, WSL
, git-bash
, MinGW
, Cygwin
, Yori
, Take Command
, BusyBox
et NuShell
.)
GSUDO - Un sudo pour Windows
Utilisation de PowerShell / PowerShell Core
Utilisation de WSL (sous-système Windows pour Linux)
Module PowerShell
Table des matières
Démo
Caractéristiques
Installation
Usage
Configuration
Cache d'identification
Problèmes connus
FAQ
Veuillez soutenir GSUDO! ?
Documentation étendue disponible sur: https://gerardog.github.io/gsudo/
(avec gsudo config CacheMode auto
)
Les commandes élevées sont affichées dans la console actuelle. Pas de nouvelle fenêtre (sauf si vous spécifiez -n
)
Cache d'identification: gsudo
peut augmenter plusieurs fois en montrant une seule fenêtre contextuelle UAC si l'utilisateur opte pour activer le cache.
Détecte votre shell actuel (prend en charge CMD
, PowerShell
, WSL
, Bash for Windows
(Git-Bash / Mingw / MSYS2 / Cygwin), Yori
, Take Command
and NuShell
) et élève correctement votre commande.
Supports utilisés sur les scripts:
Les sorties STDOUT / STDRERR peuvent être canalisées ou capturées (par exemple gsudo dir | findstr /c:"bytes free" > FreeSpace.txt
) et de codes de sortie ( %errorlevel%
). Si gsudo
ne parvient pas, le code de sortie sera 999.
Si gsudo
est invoqué à partir d'une console déjà élevée, elle exécutera simplement la commande (elle n'échouera pas). Donc, vous n'avez pas à vous inquiéter si vous exécutez gsudo
ou un script qui utilise gsudo
à partir d'une console déjà élevée. (La fenêtre contextuelle de l'UAC n'apparaîtra pas, car aucune élévation n'est requise)
gsudo !!
Élève la dernière commande exécutée. Fonctionne sur CMD, Git-Bash, Mingw, Cygwin (et PowerShell avec le module GSUDO uniquement)
Utilisation de Scoop: scoop install gsudo
Utilisation de Winget: winget install gerardog.gsudo
Utilisation du chocolat: choco install gsudo
Exécution de cette ligne: (script):
PowerShell -Command "Set-ExécutionPolicy RemoSigned -Scope Process; [Net.ServicePointManager] :: SecurityProtoCol = 'tls12'; iwr -useb https://instalgsudo.ps1 | iex"
Portable:
Télécharger gsudo.portable.zip
à partir de la dernière version
Extraire le dossier correspondant à votre architecture de processeur (x64, x86 ou arm64) du fichier zip vers un répertoire approprié sur votre ordinateur.
Éventuellement, ajoutez ce répertoire à la variable d'environnement de chemin de votre système s'il n'est pas déjà accessible.
Veuillez redémarrer toutes les fenêtres de votre console après l'installation pour vous assurer que la variable d'environnement PATH
est actualisée.
Remarque: gsudo.exe
est portable. Aucun service Windows n'est requis ou un changement de système est effectué, sauf l'ajout au chemin.
GSUDO [OPTIONS] # démarre votre shell actuel Elevedgsudo [Options] {Command} [Args] # Exécute {Command} avec un cache élevé de permisgsudo [sur | Off | Aide] # Démarrer / arrête une session de cache d'identification. (moins de popups UAC) Statut GSUDO [--json | Filtre] # Affiche l'utilisateur actuel, le cache et la console status.gsudo !! # Re-Run Dernière commande en tant qu'administrateur. (Ymmv)
Nouvelles options de fenêtre: -n | --New # Démarrage de la commande dans une nouvelle console / fenêtre (et revient immédiatement). -W | --Wait # Lorsque dans la nouvelle console, attendez que la commande se termine. --keekesell # Après avoir exécuté une commande, gardez la coque élevée ouverte. --keepwindow # Après avoir exécuté une commande dans une nouvelle console, demandez une pression avant de fermer les options de console / fenêtre.Sécurité: -U | --User {USR} # Exécutez en tant qu'utilisateur spécifié. Demande le mot de passe. Pour les administrateurs locaux, montre UAC à moins que '-i medium' -i | --Integrity {v} # Spécifiez le niveau d'intégrité: non fiduciaire, bas, moyen, moyenplus, élevé (par défaut), système -S | --Système # exécuté comme compte système local (NT AuthoritySystem). --Ti # Run en tant que membre de NT ServiceTrutedInstaller -K # tue toutes les références en cache. La prochaine fois que GSUDO est exécuté, une popup UAC sera apparue. Options liées à Shell: -d | - Direct # Skips Shell Detection. Supposons que CMD Shell ou CMD {Command}. --LoadProfile # Lorsque vous élevez les commandes PowerShell, chargez le profil utilisateur. --debug # Activer le mode de débogage. --Copyns # Connectez les lecteurs de réseau à l'utilisateur élevé. AVERTISSEMENT: Verbose, interactif demande des informations d'identification - Copyev # (déprécié) Copier les variables d'environnement au processus élevé. (pas nécessaire en mode console par défaut) --chdir {dir} # Changez le répertoire actuel en {dir} avant d'exécuter la commande.
Remarque: vous pouvez utiliser n'importe où l'alias sudo
créé par les installateurs.
Exemples:
GSUDO # élève le shell actuel dans la fenêtre actuelle de la console (prend en charge CMD / PowerShell / PWSH Core / Yori / Take Command / Git-Bash / Cygwin) GSUDO -N # Lancez le shell actuel élevé dans une nouvelle console Windowgsudo -N -W PowerShell ./Do-something.ps1 # Lancez dans une nouvelle fenêtre et attendez le bloc-notes EXITGSUDO% Windir% System32DriversTetchosts # Lance Windows Appsudo Notepad # sudo alias intégré # redirection / tuyau entrée / sortie / sortie / Erreur Exemplegudo dir | findstr / c: "octets gratuits"> Freespace.txt gsudo config liglevel "error" # configurer réduit le logginggsudo config invite "$ p [élevée] $ g" # configurer un invite invitegsudo de configuration - reset # réinitialiser à la valeur par défaut # Activer les informations d'identification (moins popups uac): gsudo config cachemode) Auto
gsudo
détecte si elle est invoquée à partir de PowerShell et élève les commandes PS (sauf si -d
est utilisée pour élever les commandes CMD).
La commande à élever s'exécutera dans un processus différent, il ne peut donc pas accéder aux $variables
et à la portée.
Pour élever une commandes ou un bloc de script: enveloppez-le en {Braces Curly} .
# Syntaxe: gsudo {scriptblock} gsudo [options] {scriptblock} [-args $ argument1 [..., $ argumentn]]; # Exemples: gsudo {write-output "hello world"} # pass arguments avec -args $ mystring = "bonjour world" gsudo { Écriture-sortie $ args [0]} -args $ mystring # la sortie est sérialisé sous forme de psobjects avec des propriétés. $ Services = gsudo {get-service 'wsearch', 'winmgmt'} Write-Output $ Services.DisplayName # Entrées aussi: Exemple d'itération élevée d'une liste.get-childItem. | gsudo {$ input.creationtime}
Syntaxes alternatives:
# PASS VALEURS (pas les variables par référence) en préfixant `$ en utilisant:`. Ie $ mystring = "Hello world" invoke-gsudo {write-sort $ using: mystring} # Syntaxe: invoke-gsudo [-ScriptBlock] <ScriptBlock> [[-ArgumentList] <objet []>] [-InputObject <sObject>] [-LoadProfile | -Noprofile] [-Credential <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)
Utilisation: GSUDO 'String littéral' # substitutions de variables Exemple: $ file = 'C: My Secret.txt'; $ algorithm = 'md5'; $ hash = gsudo "(get-filehash '$ file' -algorithm $ algorithm) .hash" # ou $ hash = gsudo "(get-filehash" "$ file" "-algorithm $ algorithm) .Hacher"
Accepte une chaîne littérale avec la commande à élever.
Renvoie une liste de chaînes.
Facultatif: le module d'importation gsudoModule.psd1
dans votre profil PowerShell:
# Ajoutez la ligne suivante à votre modèle de profil de profil $ "gsudomodule" # ou run: écriture-sortie "` module nimport `" gsudomodule` "" | Profil $ compenant
Pour ce faire, ajoutez cette ligne à votre profil (après l'importation de gsudoModule
):
Set-aalias invite gsudoprompt
Si vous n'avez pas déjà personnalisé votre invite PowerShell (par exemple en installant OH-My-Posh), vous pouvez facilement ajouter un #
rouge indiquant que le processus actuel est élevé:
Test-IsGsudoCacheAvailable
Renvoie True si un cache GSUDO est actif (ce qui signifie que l'élévation sans UAC est possible).
Test-IsProcessElevated
: Renvoie True si le processus actuel est élevé.
Test-IsAdminMember
: Renvoie True si l'utilisateur actuel est membre des groupes Local Administrators
, ce qui signifie qu'il peut augmenter avec.
Ajoute une syntaxe automatique à GSUDO dans PowerShell. De plus, cela suggère les 3 commandes précédentes, ce qui rend votre flux de travail plus fluide que jamais!
Active gsudo !!
sur PowerShell, pour élever la dernière commande exécutée.
Ajoute des fonctions:
Sur WSL, l'élévation et root
sont des concepts différents. root
permet une administration complète de WSL mais pas du système Windows. Utilisez su
ou sudo
natif de WSL pour obtenir un accès root
. Pour obtenir un privilège d'administration sur la boîte Windows, vous devez élever le processus WSL.exe. gsudo
permet que (une popup UAC apparaîtra).
Sur WSL BASH, prend gsudo
pour élever les commandes WSL ou gsudo -d
pour les commandes CMD .
# Elever Shellpc par défaut: ~ $ gsudo # Exécutez WSL CommandPC élevé: ~ $ gsudo mkdir / mnt / c / windows / myfolder # exécuter un bloc-noeuds de Windows élevé: ~ $ gsudo -d. PC: ~ $ gsudo -d ". thenecho "succès"; elif [$ retval -eq $ ((999% 256))]; Ensuite, le code de sortie de défaillance GSUDO (999) est lu en 231 sur WSL (999 MOD 256) Echo "GSUDO n'a pas réussi à élever!"; Elseecho "La commande a échoué avec le code de sortie $ retval"; fi;
GSUDO Config # Afficher les paramètres et valeurs de configuration actuels. gsudo config {key} [--global] [valeur] # lire ou écrire un paramètre utilisateur gsudo config {key} [--global] --reset # réinitialiser la configuration à la valeur par défaut - Global # affecte tous les utilisateurs (remplace les paramètres des utilisateurs)
Le Credentials Cache
, s'il est activé et actif, permet d'élever plusieurs fois à partir d'un processus parent avec un seul pop-up UAC. Après 5 minutes sans élévations, la session de cache se ferme automatiquement (délai d'expiration configurable via gsudo config CacheDuration
).
Bien que cela soit très pratique, il est important de comprendre ses risques de sécurité potentiels. Même si Gsudo lui-même est sécurisé, la vulnérabilité inhérente réside dans le processus hôte. Si votre système est déjà compromis par un processus malveillant, il peut manipuler le processus autorisé (par exemple, CMD / PowerShell) et forcer une instance active de cache GSUDO pour élever les privilèges sans déclencher une invite UAC.
Ce risque est le compromis pour l'utilisation du cache des informations d'identification. Le cache est sûr à utiliser tant que vous êtes convaincu qu'il n'y a pas de processus malveillants qui s'exécutent sur votre système.
Voici les modes Credentials Cache
:
Explicit:
(par défaut) Chaque élévation montre une popup UAC, à moins qu'une session de cache ne soit démarrée manuellement ...
Pour démarrer ou arrêter une session de cache Exécutez: gsudo cache {on | off}
C'est le mode par défaut. (Utilisez gsudo config CacheMode Explicit
pour revenir à cette valeur).
Auto:
similaire à Unix-Sudo. La première élévation montre une fenêtre contextuelle UAC et démarre automatiquement une session de cache .
Exécutez gsudo config CacheMode Auto
pour utiliser ce mode.
Disabled:
chaque altitude montre une fenêtre contextuelle UAC et essayer de démarrer une session de cache lancera une erreur.
Exécutez gsudo config CacheMode Disabled
pour utiliser ce mode.
Dans tous les cas, vous pouvez arrêter toutes les séances de cache avec gsudo -k
.
Apprendre encore plus
Les instances élevées n'ont pas accès aux partages du réseau connectés sur l'espace non éliminé. Ce n'est pas un problème gsudo
, mais le fonctionnement de Windows. Utilisez --copyNS
pour reproduire les partages du réseau dans la session élevée, mais ce n'est pas bidirectionnel et est interactif (peut provoquer l'utilisateur / le mot de passe).
gsudo.exe
peut être placé sur un partage de réseau et invoqué en tant que serversharegsudo {command}
mais ne fonctionne pas si votre dossier actuel est un lecteur réseau. Par exemple, ne mappez pas servershare
à Z:
puis Z:>gsudo do-something
.
Veuillez signaler les problèmes dans la section des problèmes.
Pourquoi s'appelle-t-il gsudo
au lieu de simplement sudo
?
Lorsque j'ai créé gsudo
, il y avait d'autres packages sudo
sur la plupart des gestionnaires de packages populaires Windows tels que Chocolatey
et Scoop
, donc je n'avais aucun autre choix pour choisir un autre nom. Les installateurs gsudo
créent un alias pour sudo
, alors n'hésitez pas à utiliser sudo
sur votre ligne de commande pour invoquer gsudo
.
Pourquoi avez-vous migré de .Net Framework 4.6
à .Net Core 7.0
?
À partir de V1.4.0, il est construit en utilisant .Net 7.0
Nativeaot. Il se charge plus rapidement et utilise moins de mémoire, et fonctionne sur les machines sans aucun cas d'exécution .NET. Versions antérieures <v1.3.0
ont utilisé .NET 4.6, car il a été inclus dans chaque installation Windows 10/11.
gsudo
est-il un port de *nix sudo
?
Non. gsudo
rappelle le Sudo d'origine concernant les attentes des utilisateurs. De nombreuses fonctionnalités sudo
sont *nix
et ne pourraient jamais avoir un homologue Windows
. D'autres fonctionnalités (telles que sudoers
) pourraient potentiellement être mises en œuvre mais ne sont pas à ce stade.
Quelles sont les exigences? Cela fonctionne-t-il dans Windows 7/8?
Il fonctionne sur Win7 SP1. Certaines fonctionnalités ne peuvent fonctionner que sous Windows 10/11, comme l'élévation en tant que TrustInstaller.
Comment revenir au niveau de sécurité précédent après avoir utilisé GSUDO?
De la même manière que vous le feriez avec Unix/Linux sudo
: gsudo
ne modifie pas le processus actuel, mais il lance un nouveau processus avec différents permissions / niveau d'intégrité. Pour revenir au niveau précédent, terminez simplement le nouveau processus. Pour Command Prompt
ou PowerShell
tapez simplement exit
.
Veuillez nous donner une étoile!
Aidez à passer le mot en mentionnant gsudo
dans les réseaux sociaux!
Parrainer ou faire un don