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 surtout l'invite de commande Windows, existe-t-il une commande Windows pour augmenter les privilèges, similaire à la commande du terminal Linux sudo
?
La commande runas .
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 commande en tant qu'administrateur
J'ai découvert l' élévation aujourd'hui qui "exécute une commande avec l'élévation des privilèges UAC. Ceci est utile pour travailler à l'intérieur d'instructions de commande ou avec des fichiers par lots". Ce n'est pas le même que sudo
, il modifie l'utilisateur exécutant pour Administrateur, mais sa syntaxe est beaucoup plus simple à utiliser que les runas
, et elle peut conserver le répertoire actuel, 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 de Elevate n'est pas de contourner ou de contourner UAC (User Account Control), mais de travailler avec lui. Tant que UAC est activé, il doit y avoir une sorte d'invite à un moment donné du processus. Si vous devez vous débarrasser de l'invite, vous devez désactiver UAC .
Le niveau de douleur éleve atténue l'escalade d'un processus particulier à partir d'un shell non privilégié, puis continue comme normalement. Sans cela, vous devez lancer une invite de commande privilégiée en cliquant avec le bouton droit de la souris sur "Exécuter en tant qu'administrateur" , qui ne peut pas être facilement scripté, avant d'essayer la commande privilégiée.
Vous pouvez utiliser la commande runas qui est similaire à celle-ci, ou vous pouvez consulter le projet sudo pour Windows sur SourceForge 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 utilisez "runas james acommand", la commande est exécutée comme si elle était gérée par James, donc elle accède aux paramètres de l'utilisateur de James et tous les changements d'utilisateurs entrent dans James My Documents & dossiers de configuration, etc. Donc, si vous Sont en train d'installer une application, par exemple, il sera installé comme James, et non comme Bob.
Si, d'autre part, Bob fait "sudo acommand", la commande est toujours exécutée comme Bob, mais avec des autorisations élevées – tout comme la commande Linux sudo. Pour éviter que n'importe quel utilisateur puisse sudo, vous devez définir un groupe d'utilisateurs sudoers qui contient la liste des utilisateurs normaux qui ont la permission d'élever en utilisant sudo. Les utilisateurs doivent toujours fournir des informations d'identification avant l'élévation.
Parfois, la différence n'est pas importante, parfois elle est, et je trouve que les deux commandes peuvent être utiles.
Vous pouvez également utiliser le script Elevation PowerToys .
Si vous êtes prêt à passer à des consoles alternatives, il existe ConEmu (je suis l'auteur). L'une de ses fonctionnalités: la possibilité d'exécuter des onglets élevés et non élevés dans la seule fenêtre ConEmu. Les onglets peuvent également être lancés avec différentes références.
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 dans le wiki du projet . En bref, lorsque vous exécutez une commande à partir d'un onglet existant non élevé, par exemple
csudo dism /online /enable-feature /featurename:NetFX3 /All /Source:D:\sources\sxs /LimitAccess
ConEmu dism
sur la nouvelle console / onglet élevée (avec l'invite UAC précédente dans Vista ou la boîte de connexion dans XP).
Par défaut, csudo
lance une nouvelle console dans une partition (peut-être des modifications via l'édition de contenu csudo.cmd
).
Et bien sûr, vous pouvez le renommer à sudo.cmd
si vous aimez le mot "classique" sudo
.
Si vous faites cela sur Windows, en plus de la commande Exécuter comme indiqué dans quelques autres réponses, il existe également des moyens de le faire avec la souris.
Si vous maintenez la touche Maj enfoncée lorsque vous cliquez avec le bouton droit de la souris sur la plupart des fichiers exécutables dans Windows, vous devriez remarquer quelques options plus avancées. L'une d'entre elles est l'option " Run As...
" (je pense que c'est appelé " Run As Administrator
" depuis Vista).
Vous pouvez également télécharger une version plus avancée de RunAs de Microsoft, appelée ShellRunAs , qui présente des améliorations sur la commande RunAs intégrée, tant en mode de commande que dans les modes graphiques, y compris vous permettant de sauvegarder les informations d'identification du compte
Trois étapes pour ajouter sudo.
Ouvrez PowerShell.
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
Il sera en permanence activé sudo
commande dans PowerShell.
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
Remarque: J'ai mélangé le script des deux articles pour créer le script ci-dessus. Plutôt collage manuel du script dans le bloc-notes, j'ai ajouté les instructions Out-File
pour enregistrer les ps1
$profile
ps1
et $profile
à partir du script.
Astuce: si vous n'êtes pas un très grand fan des popups UAC (comme moi), enregistrez 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
Surun est une application open source ouverte qui permet à certains programmes de fonctionner avec des droits administratifs, sans fournir de mot de passe sans modifier le registre des utilisateurs ou modifier les variables d'environnement.
Lorsque j'utilise Windows XP, cette application m'a beaucoup aidé. Beta fonctionne sous Windows 7.
Comme vous l'avez probablement découvert, les runas vous permettront de fonctionner comme un autre utilisateur, mais il ne peut pas faire d'élévation et il ne transmet pas les répertoires actuels, les variables d'environnement ou les longues lignes de commande.
La coque de Hamilton C résout celle avec un su et sudo authentique. Su vous permet d'exécuter une commande comme un autre utilisateur; Sudo (en fait, un alias à su) vous permet d'exécuter une commande élevée. Vous pouvez également faire les deux, être élevé comme un utilisateur différent. Les répertoires actuels, les variables d'environnement et les longues lignes de commande sont transmis par une mémoire de mémoire partagée entre les exécutions dans le contexte de l'appelant et une copie de lui-même s'exécute en tant qu'interlocuteur avec les nouvelles informations d'identification qui débute l'enfant. La divulgation complète: je suis l'auteur.
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 comme sudo.cmd
puis ajoutez-le à votre PATH
Remarque: les runas
signifient dans ce contexte "Exécuter en tant qu'administrateur" et non "Exécuter comme autre utilisateur"
Pris à partir d'ici et légèrement édités pour supprimer l'en-tête cscript.exe de la sortie
Un remplaçant sudo
fonctionnel pour le terminal mintty
de Cygwin serait de placer le script suivant dans PATH de l'utilisateur:
$!/bin/bash cygstart --action=runas mintty -e `which bash` -lc \"$@\"
Pour moi, c'est le seul remplacement viable pour élever les privilèges de programmes comme vim
ou cygrunsrv
tout en travaillant dans un terminal sur Windows.