Question Existe-t-il une commande 'sudo' pour Windows?


Je travaille toujours sur un compte non administrateur sur mon ordinateur Windows. Parfois, je dois installer des programmes nécessitant un accès administrateur. Comme j'utilise principalement l'invite de commande Windows, existe-t-il une commande Windows permettant d'élever les privilèges, similaire à la commande de terminal Linux? sudo?


414
2017-09-17 09:24


origine


Je crois que le terme que vous recherchez est un accès «élevé». Même si vos informations d'identification ont une autorisation d'administrateur, les processus sous vos informations d'identification ne disposent pas d'autorisations d'administrateur jusqu'à ce que vous "sudo" la commande. Dans Windows, ils appellent cela «élever». - surfasb
Juste utiliser su et votre commande. Il ouvre une nouvelle instance de powershell qui s'exécute en tant qu'administrateur. - IGRACH
@IGRACH pas sur mon Powershell ... - jiggunjer


Réponses:


le courir comme commander.

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

Il suffit de courir:

runas /noprofile /user:Administrator cmd 

démarrer un shell de commandes en tant qu'administrateur


254
2017-09-17 09:29



Vous constaterez peut-être que le profil doit être chargé (par exemple, en incluant des variables d'environnement) pour toute utilisation étendue. Dans quel cas laisser tomber le /noprofile. - Richard
Cela ne fonctionne pas pour moi. Après avoir tapé mon mot de passe, l'invite de commande est fermée. - Jonas
n'est-ce pas demander le mot de passe de l'administrateur? sudo demande votre mot de passe! - n611x007
Malheureusement, cela est sérieusement dépassé. Runas exécute simplement des commandes sous un autre ensemble d'informations d'identification. Même si vos informations d'identification disposent d'autorisations d'administrateur, cela ne signifie pas que tous les processus sous vos informations d'identification sont exécutés en tant qu'administrateur. - surfasb
+1 pour "obsolète" car les runas ne peuvent pas contourner l'UAC. Au lieu de cela, appuyez sur le bouton Windows, tapez cmd et appuyez sur Ctrl + Maj + Entrée. - mellow-yellow


J'ai découvert élever aujourd'hui qui "exécute une commande avec une élévation de privilèges UAC. Ceci est utile pour travailler à l'intérieur des invites de commandes ou avec des fichiers de commandes." Ce n'est pas la même chose que sudo, il change l'utilisateur exécutant en administrateur, mais sa syntaxe est beaucoup plus simple à utiliser que runas, et il peut conserver le répertoire en cours, ce qui permet d'utiliser des chemins relatifs.

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".

Le but d'Elevate n'est pas de contourner ou de contourner le contrôle de compte d'utilisateur (UAC), mais de travailler avec lui. Tant que l'UAC y est activé a être une sorte de prompt à certains point dans le processus. Si vous avez besoin de vous débarrasser de toute invite, vous devez désactiver UAC.

Le point de soulèvement soulève le problème en escaladant un processus particulier à partir d'un shell non privilégié, puis en poursuivant normalement. Sans cela, vous devez démarrer une invite de commandes avec privilèges avec clic droit> "Exécuter en tant qu'administrateur", qui ne peut pas être facilement scripté, avant de tenter la commande privilégiée.


112
2018-04-12 06:42



Cela va parfaitement avec "Elevate without prompting" dans secpol.msc. Ensemble, ils font la même chose que %wheel ALL=(ALL) NOPASSWD: ALL dans sudo. - sayap
@sayap, juste pour être clair, vous voulez dire ceci: ss64.com/nt/syntax-uac.html? - matt wilkie
Le seul problème que je trouve avec elevate (v1.3.0) est qu'il ne renvoie pas le code d'erreur du programme qu'il élève. - Ken
Sudo.bat: @elevate %* => profit! - Joe DF
Serait bien de mentionner que c'est un utilitaire externe, manquant OOTB. - Hi-Angel


Vous pouvez utiliser le courir comme commande qui est un peu similaire, ou vous pouvez vérifier la sudo pour Windows projeter à SourceForge ce qui ajoute une commande sudo.

La différence est subtile:

Disons que vous avez deux utilisateurs. Bob est un utilisateur normal et James est un administrateur.

Si vous vous connectez en tant que Bob et que vous utilisez "runas james acommand", la commande est exécutée comme si elle était exécutée par James, elle accédait donc aux paramètres utilisateur de James et les modifications apportées par les utilisateurs entraient dans James. Mes documents & settings files, etc Donc, si vous installez une application, par exemple, il sera installé en tant que James, pas comme Bob.

Si, par contre, Bob fait "sudo acommand", la commande est toujours exécutée en tant que Bob, mais avec des autorisations élevées, tout comme la commande Linux sudo. Pour empêcher tout utilisateur de pouvoir utiliser sudo, vous devez définir un groupe d'utilisateurs sudoers contenant la liste des utilisateurs normaux autorisés à élever avec sudo. Les utilisateurs doivent toujours fournir des informations d'identification avant l'élévation.

Parfois, la différence n'est pas importante, parfois elle l'est, et je trouve que les deux commandes peuvent être utiles.


66
2017-09-17 09:28



Êtes-vous sûr? Quand je lance sudo dans Ubuntu, si mon thème actuel est dans ~/.themes alors l'application sudo-ed ne sera pas en mesure d'accéder à ce thème, car il n'est pas dans /home/root/.themeset utilisera le thème gtk par défaut. - hasen
@hasen j - votre problème est juste parce que ~ / .themes évalue avant que la commande ne soit exécutée (et donc avant de basculer sur root). - Jared
Une autre solution, sauf hébergée sur GitHub, est windosu: github.com/tehsenaus/windosu Je viens de le trouver, et cela semble fonctionner très bien. La chose préférée est que c'est super facile à installer. Juste "npm install -g windosu". - Venryx


Vous pouvez également utiliser le Élévation de script PowerToys.


39
2017-09-17 13:11



Génial - exactement ce que je cherchais. Je ne voulais pas courir car une commande a un utilisateur différent, seulement pour l'exécuter avec des privilèges élevés. - orip
Exactement la bonne solution pour ce problème! Qui veut Runas avec sa syntaxe désordonnée? - Stabledog
J'ai souvent souhaité que la commande d'ascenseur soit intégrée à Windows. C'est un outil fantastique. - nhinkle♦
il y a maintenant un Collection Elevation PowerToys par le même auteur dont Créer un script auto-élévateur est particulièrement pertinent. - matt wilkie
@barlop bien sûr que non. Cela irait à l'encontre du but de l'UAC. - nhinkle♦


Si vous êtes prêt à passer à des consoles alternatives, il y a ConEmu (Je suis l'auteur). Une de ses fonctionnalités - la possibilité d'exécuter des onglets élevés et non élevés dans la fenêtre ConEmu. Les onglets peuvent également être lancés avec des identifiants différents.

Pour le confort de l'utilisateur, il existe un fichier batch csudo.cmd (qui peut être facilement adopté pour bash). Lire la description complète en wiki du projet. En bref, lorsque vous exécutez une commande à partir d'un onglet non élevé existant, par exemple

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

ConEmu va commencer dism dans la nouvelle console / le nouvel onglet (avec l'invite UAC précédente dans Vista ou la zone de connexion sous XP).

Par défaut csudo commence la nouvelle console dans un split (peut être des changements via l'édition de csudo.cmd Contenu).

Et bien sûr, vous pouvez le renommer en sudo.cmd si vous aimez "classique" sudo mot.

sudo in ConEmu/Windows


25
2017-10-26 07:52



csudo a longtemps été inclus dans la distribution ConEmu. Aucun lien n'est nécessaire. - Maximus
Le problème ici est que le nouvel onglet de la console devient inutilisable après la commande sudo'd. Donc, vous ne pouvez pas continuer à travailler dans l'onglet élevé, il suffit d'obtenir un press enter or esc to exit message. - jiggunjer
Bien sûr, vous ne pouvez pas. Même sur Unix, vous êtes de retour sur un terminal non élevé après sudocommande est fait son travail! Vous allez mal. - Maximus
1) si vous ouvrez une nouvelle fenêtre ou un nouvel onglet, vous pouvez tout aussi bien le conserver, laissez le utilisateur choisissez s'ils veulent continuer. 2) Sur mon ubuntu je n'ai pas à sudo à chaque fois, l'élévation dure quelques minutes je pense. 3) cette application a un million d'options, mais rien pour cela? Je suis peut-être gâté. - jiggunjer


Méthode rapide:

Trois étapes pour ajouter sudo.

  1. Ouvrez PowerShell.

  2. Copiez le script suivant (Ctrl + C) et collez-le dans PowerShell (Alt + Espace + 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. Frappé Entrer.

Il permettra en permanence sudo commande dans PowerShell.

Usage:

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

Exemples:

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

Méthode longue d'apprentissage:

Remarque: J'ai mélangé le script des deux articles pour créer le script susmentionné. Coller plutôt manuellement le script dans le bloc-notes, j'ai ajouté le Out-File déclarations à sauver ps1 et $profile fichiers du script.

Astuce: Si vous n'êtes pas très fan des popups UAC (comme moi), sauvegardez les éléments suivants dans le fichier * .reg et exécutez-le:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"ConsentPromptBehaviorAdmin"=dword:00000000

23
2017-08-28 10:36



J'adore la solution Powershell pour cette question. Cela doit être le moyen le plus simple d'élever quelque chose. Les fichiers .bat existants peuvent facilement être convertis en POSH - Mitchell Skurnik
Vous avez cette erreur sur Windows 10: . : File C:\Users\User\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 cannot be loaded because running scripts is disabled on this system. - sowrov
@sowrov, voir [cet article] (www.faqforge.com/windows/windows-powershell-running-scripts-is-disabled-on-this-system/). Par défaut, les scripts PowerShell sont désactivés sur toute installation Windows. Vous devez l'activer avec cette commande set-executionpolicy remotesigned. Autres options en plus remotesigned sont décrits dans documents officiels. - vulcan raven
Les lecteurs notent que ce script ps est un wrapper pour le powershell -c start -verb runas program.exe fonctionnalité. Notez également vous ne peut pas élever comme ceci avec l'invite cmd (en natif). Powershell est la meilleure option native. - jiggunjer


Si vous faites cela sous Windows, en plus de la commande Exécuter en tant que mentionnée dans quelques autres réponses, il existe également des moyens de le faire avec la souris.

Si vous maintenez la Décalage Lorsque vous cliquez avec le bouton droit de la souris sur la plupart des fichiers exécutables de Windows, notez quelques options plus avancées. L'un d'eux est le "Run As..."option (je pense que ça s'appelle"Run As Administrator"à partir de Vista).

Vous pouvez également télécharger une version plus avancée de RunAs de Microsoft, appelée ShellRunAs, cette fonctionnalité comporte des améliorations par rapport à la commande RunAs intégrée, à la fois en mode ligne de commande et en mode graphique, et vous permet notamment d’enregistrer les informations d’identification du compte.


20
2017-09-17 11:22





Surun est une application libre et gratuite qui permet à certains programmes de s'exécuter avec des droits d'administration, sans fournir de mot de passe sans modifier le registre d'utilisateurs ni modifier les variables d'environnement.

Lorsque j'utilisais Windows XP, cette application m'aide beaucoup. Bêta fonctionne sous Windows 7.


3
2017-11-17 15:24



Surun fait un excellent travail. Cependant, parfois, sous Windows 8 et 8.1, ses valeurs par défaut ne sont pas idéales. Comme il remplace la fonction Windows en tant que fonction, vous ne pouvez pas démarrer une invite de commande avec un clic droit sur l'écran de démarrage. - Wolf


Comme vous l'avez probablement découvert, les runas vous permettront d'exécuter en tant qu'autre utilisateur, mais il ne peut pas effectuer d'élévation et il ne transmet pas les répertoires actuels, les variables d'environnement ou les longues lignes de commande.

Coquille Hamilton C résout cela avec un véritable su et sudo. su vous permet d'exécuter une commande en tant qu'autre utilisateur; sudo (en fait un alias à su) vous permet d'exécuter une commande élevée. Vous pouvez également faire les deux, en étant élevé en tant qu'utilisateur différent. Les répertoires actuels, les variables d'environnement et les longues lignes de commande sont transmis via un échange de mémoire partagée entre su s'exécutant dans le contexte de l'appelant et une copie de lui-même s'exécutant comme interlude avec les nouvelles informations d'identification qui démarrent l'enfant. Divulgation complète: je suis l'auteur.


3
2017-09-06 15:01