it-swarm-es.com

¿Hay algún comando 'Sudo' para Windows?

Siempre trabajo en una cuenta que no es de administrador en mi computadora con Windows. A veces necesito instalar programas que requieren acceso de administrador. Como uso principalmente el indicador de comando de Windows, ¿hay un comando de Windows para escalar privilegios, similar al comando de terminal de Linux Sudo?

435
ukanth

El runas command.

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

Solo corre:

runas /noprofile /user:Administrator cmd 

para iniciar un shell de comandos como administrador

262
Davy Landman

Descubrí elevate hoy que "ejecuta un comando con elevación de privilegios de UAC. Esto es útil para trabajar dentro de las solicitudes de comando o con archivos por lotes". No es lo mismo que Sudo, cambia el usuario en ejecución a Administrador, pero su sintaxis es mucho más sencilla de usar que runas, y puede mantener el directorio actual, permitiendo el uso de rutas relativas.

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

El propósito de Elevate no es evitar u omitir UAC (Control de cuentas de usuario), sino trabajar con él. Mientras el UAC esté habilitado allí, tiene para ser algún tipo de Aviso en algo punto en el proceso. Si necesita deshacerse de las indicaciones, debe deshabilitar UAC .

El punto de dolor que eleva el alivio es escalar un proceso particular desde un Shell no privilegiado y luego continuar de manera normal. Sin esto, debe iniciar una solicitud de comando con privilegios con haga clic con el botón derecho> "Ejecutar como administrador" , que no se puede escribir fácilmente, antes de intentar el comando con privilegios.

120
matt wilkie

Puede usar el comando runas que es similar, o puede revisar el proyecto Sudo para Windows en SourceForge que agrega un comando Sudo.

La diferencia es sutil:

Digamos que tienes dos usuarios. Bob es un usuario normal y James es un administrador.

Si inicia sesión como Bob y usa "runas james acommand", el comando se ejecuta como si fuera ejecutado por James, por lo que accede a la configuración de usuario de James y cualquier cambio de usuario se realiza en James Mis documentos & configuración , etc. Entonces, si está instalando una aplicación, digamos, se instalará como James, no como Bob.

Si, por otro lado, Bob hace "Sudo acommand", el comando todavía se ejecuta como Bob, pero con permisos elevados, al igual que el comando Linux Sudo. Para evitar que cualquier usuario pueda usar Sudo, debe definir un grupo de usuarios sudoers que contenga la lista de los usuarios normales que tienen permiso para elevar usando Sudo. Los usuarios todavía tienen que proporcionar credenciales antes de la elevación.

A veces la diferencia no es importante, a veces lo es, y encuentro que ambos comandos pueden ser útiles.

66
Simon P Stevens

También puede usar Script Elevation PowerToys .

39
Quog

Si está listo para cambiar a consolas alternativas, hay ConEmu (Soy el autor). Una de sus características: la capacidad de ejecutar pestañas elevadas y no elevadas en la única ventana de ConEmu. Las pestañas también pueden iniciarse con diferentes credenciales.

Para comodidad del usuario, hay un archivo por lotes csudo.cmd (que puede ser fácilmente adoptado para golpear). Lea la descripción completa en wiki del proyecto . En resumen, cuando ejecuta algún comando desde una pestaña no elevada existente, por ejemplo

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

ConEmu iniciará dism en la nueva consola/pestaña elevada (con el indicador UAC anterior en Vista o en el cuadro de inicio de sesión en XP).

De forma predeterminada, csudo inicia la nueva consola en una división (pueden ser cambios a través de la edición de csudo.cmd contents).

Y, por supuesto, puede cambiarle el nombre a Sudo.cmd si le gusta "clásico" Sudo Word.

Sudo in ConEmu/Windows

28
Maximus

Método rápido:

Tres pasos para añadir sudo.

  1. Abre PowerShell.

  2. Copie el siguiente script (Ctrl + C) y péguelo en PowerShell (Alt + Space + 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. Golpear Enter.

Habilitará permanentemente el comando Sudo en PowerShell.

Uso:

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

Ejemplos:

Sudo Explorer
Sudo notepad
Sudo powershell
Sudo cmd
Sudo taskmgr
Sudo tasklist
Sudo taskkill /IM Skype.exe /PID 8496

Método largo para el aprendizaje:

Nota: mezclé el script de ambos artículos para crear el script mencionado anteriormente. En lugar de pegar manualmente el script en el bloc de notas, agregué las declaraciones Out-File para guardar los archivos ps1 y $profile del script.

Consejo: Si no eres un gran fanático de las ventanas emergentes de UAC (como yo), guarda lo siguiente en el archivo * .reg y ejecútalo:

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

Si está haciendo esto en Windows, además del comando Ejecutar como se menciona en un par de otras respuestas, también hay formas de hacerlo con el mouse.

Si mantienes presionado el Shift Cuando haga clic con el botón derecho en la mayoría de los archivos ejecutables de Windows, debería notar algunas opciones más avanzadas. Uno de ellos es la opción "Run As..." (creo que se llama "Run As Administrator" desde Vista en adelante).

También puede descargar una versión más avanzada de RunAs de Microsoft, llamada ShellRunAs , esto tiene mejoras en el comando RunAs incorporado, tanto en la línea de comandos como en los modos gráficos, que le permiten guardar credenciales de cuenta

20
GAThrawn

Como probablemente haya descubierto, las runas le permitirán ejecutarse como otro usuario, pero no puede hacer elevación y no pasa los directorios actuales, las variables de entorno o las largas líneas de comando.

Hamilton C Shell resuelve eso con un genuino su y Sudo. su le permite ejecutar un comando como otro usuario; Sudo (en realidad un alias para su) le permite ejecutar un comando elevado. También puede hacer ambas cosas, ejecutando elevado como un usuario diferente. Los directorios actuales, las variables de entorno y las largas líneas de comando se pasan a través de un protocolo de enlace de memoria compartida entre su ejecución en el contexto del llamante y una copia de sí mismo que se ejecuta como un interludio con las nuevas credenciales que luego inicia el hijo. Revelación completa: soy el autor.

3
Nicole Hamilton

Surun es una aplicación gratuita de código abierto que permite que ciertos programas se ejecuten con derechos administrativos, sin proporcionar una contraseña sin cambiar el registro de usuarios o modificar las variables de entorno.

Cuando estaba usando Windows XP esta aplicación me ayuda mucho. Beta funciona bajo Windows 7.

3
diimdeep

Hay un paquete de chocolate para él con el nombre conveniente Sudo . Puedes instalar el paquete con chocolate usando este comando:

choco install -y Sudo

Luego, en cualquier shell de Windows/MS que tenga que usar, puede usar Sudo como se espera.

3
ypid

Un reemplazo Sudo funcional para el terminal mintty de Cygwin sería colocar el siguiente script en la RUTA del usuario:

$!/bin/bash
cygstart --action=runas mintty -e `which bash` -lc \"[email protected]\"

Para mí, este es el único reemplazo viable para elevar los privilegios de programas como vim o cygrunsrv mientras se trabaja en un terminal en Windows.

1
karafior

Este script hace el trabajo:

@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

Guárdelo como Sudo.cmd luego agréguelo a su PATH

Nota: la runas significa en este contexto "Ejecutar como administrador" y no "Ejecutar como otro usuario"

Tomado desde aquí y ligeramente editado para eliminar el encabezado cscript.exe de la salida

1
Charles Milette

Desde mi punto de vista, la solución más sencilla es aprovechar PowerShell para hacer el trabajo, que es portátil y pedirá al usuario que use el UAC.

Solo puedes ejecutar esto en cualquier Shell (cmd o powershell)

powershell Start-Process -verb runAs path-to-your.exe "-all -args -in -quotes"
1
twall

El siguiente script de vbs hace el truco por mí. Lo puse en 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

Ejemplo de uso en una línea de comandos Sudo net start service

0
ceztko