494 votes

Y a-t-il une commande 'sudo' pour Windows ?

Je travaille toujours sur un compte non-administrateur sur mon ordinateur Windows. Parfois, j'ai besoin d'installer des programmes qui nécessitent un accès administrateur. Comme j'utilise principalement l'invite de commandes Windows, y a-t-il une commande Windows pour augmenter les privilèges, similaire à la commande terminal Linux sudo ?

8 votes

Je crois que le terme que vous recherchez est l'accès "élevé". Même si vos informations d'identification ont l'autorisation d'administrateur, les processus sous vos informations d'identification n'ont pas les autorisations d'administrateur tant que vous ne "sudo" pas la commande. Sous Windows, ils appellent cela "élever".

8 votes

@IGRACH pas sur mon powershell...

2 votes

Je utilise ce doskey sudo= runas /user:Administrator "cmd /k cd \"%cd%\" & $*"

1voto

noseratio Points 2021

Il y a quelque temps, j'ai créé wsudo, un outil CLI open-source similaire à sudo pour Windows afin d'exécuter des programmes ou des commandes avec des droits élevés, dans le contexte du répertoire actuel. Il est disponible gratuitement en tant que paquet Chocolatey.

Je l'utilise beaucoup pour des choses comme la configuration des agents de build, des tâches d'administration comme sfc /scannow, dism /online /cleanup-image /restorehealth ou simplement pour installer/mettre à jour mes paquets Chocolatey locaux (par exemple, wasudo cup all -y). Utilisez-le à vos propres risques.

Installation

choco install wsudo

Chocolatey doit déjà être installé.

Objectif

wsudo est un outil similaire à sudo pour Linux sur Windows pour invoquer un programme avec des droits élevés (en tant qu'administrateur) à partir d'une invite de commande shell non admin et en conservant son répertoire actuel.

Cette implémentation ne dépend pas de l'ancien Windows Script Host (CScript). Au lieu de cela, elle utilise un script d'aide PowerShell 5.1 qui invoque le cmdlet "Start-Process -Wait -Verb runAs ...". Votre système a très probablement déjà installé PowerShell 5.x, sinon on vous proposera de l'installer en tant que dépendance.

Utilisation

wsudo exécute un programme ou une commande en ligne avec des droits élevés dans le répertoire actuel. Exemples :

wsudo .\myAdminScript.bat 
wsudox "del C:\Windows\Temp\*.* && pause"
wasudo cup all -y
wasudox start notepad C:\Windows\System32\drivers\etc\hosts 

Je l'invoque souvent à partir de la boîte d'exécution Windows (Win+R), ou en tapant wasudo Entrée dans la barre d'adresse de l'Explorateur Windows (Alt+D). Ce dernier ouvre une invite de commande admin dans le dossier actuel de l'Explorateur.

Pour plus de détails, visitez le dépôt GitHub.

0voto

karafior Points 127

Un remplacement fonctionnel de sudo pour le terminal mintty de Cygwin consisterait à placer le script suivant dans le chemin de l'utilisateur :

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

Pour moi, il s'agit du seul remplacement viable pour élever les privilèges de programmes tels que vim ou cygrunsrv lorsqu'on travaille dans un terminal sur Windows.

0voto

Charles Milette Points 191

Ce script fait le travail :

@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

Enregistrez-le sous sudo.cmd puis ajoutez-le à votre PATH

Note : le runas signifie dans ce contexte "Exécuter en tant qu'administrateur" et non "Exécuter en tant qu'un autre utilisateur"

Pris d'ici et légèrement modifié pour supprimer l'en-tête cscript.exe de la sortie

1 votes

Cela crée une nouvelle console. La nouvelle fenêtre disparaîtra après l'exécution de la commande sudo, donc vous ne pourrez même pas lire la sortie.

0 votes

Malheureusement, oui. Mais il peut être utilisé pour certaines commandes de base (copier), des outils GUI, ou pour ouvrir une cmd administrateur.

0 votes

Ceci est l'élévation d'un compte utilisateur en Administrateurs; sudo est une autre chose.

0voto

ceztko Points 152

Le script vbs suivant permet de lancer une commande donnée avec des arguments avec élévation et imite le comportement de la commande Unix originale sudo pour un ensemble limité de cas d'utilisation (il ne mettra pas en cache les informations d'identification ni ne permettra d'exécuter réellement des commandes avec des informations d'identification différentes). Je l'ai placé dans 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

Exemple d'utilisation dans une invite de commande sudo net start service

0 votes

Downvoters: Expliquez pourquoi et ce qui ne fonctionne pas pour vous. Le script est testé et fonctionne pour moi.

0 votes

Il s'agit de l'élévation d'un compte utilisateur en Administrateurs; sudo est une autre chose.

0 votes

@Massimo bien sûr appeler ce script sudo est un petit abus de nommage : il n'a pas et n'aura pas les mêmes fonctionnalités que l'original sudo, mais par défaut sous unix, il s'exécutera en tant qu'utilisateur super (root), à condition que cela soit autorisé dans sudoers, donc la copie de l'exemple fourni est parfaitement claire pour moi. Il n'est pas possible de créer un remplacement complet de sudo sous Windows sans accès aux internes de Windows et sans définir de manière claire ce qui peut et ne peut pas être fait par la commande. Si ce script rapide et sale ne fonctionne pas pour vous, vous devriez trouver une solution différente

-1voto

AnrDaemon Points 103

Une autre option est TakeCommand's commutateur START /ELEVATED ....

La version non interactive (TCC-RT) de la suite est proposée gratuitement. Le fichier de commandes "sudo.btm" ressemblerait à

@START "" /ELEVATED %*

qui supporterait également la forme sudo /wait /params

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X