Pregunta ¿Hay algún comando 'sudo' para Windows?


Siempre trabajo en una cuenta que no sea de administrador en mi computadora con Windows. A veces necesito instalar programas que requieren acceso de administrador. Como utilizo principalmente el símbolo del sistema de Windows, ¿hay un comando de Windows para escalar privilegios, similar al comando de terminal de Linux? sudo?


414


origen


Creo que el término que está buscando es un acceso "elevado". Aunque sus credenciales tienen permiso de administrador, los procesos bajo sus credenciales no tienen permisos de administrador hasta que "sudo" el comando. En Windows, lo llaman "elevar". - surfasb
Solo usa su y tu comando. Abre una nueva instancia de powershell que se ejecuta como administrador. - IGRACH
@IGRACH no en mi powershell ... - jiggunjer


Respuestas:


los correr como mando.

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

Solo corre:

runas /noprofile /user:Administrator cmd 

para iniciar un shell de comando como administrador


254



Es posible que desee obtener el perfil cargado (por ejemplo, variables de entorno incluidas) para cualquier uso prolongado. En cuyo caso, suelte el /noprofile. - Richard
Esto no funciona para mí Después de escribir mi contraseña, el símbolo del sistema está cerrado. - Jonas
¿No es esto pedir la contraseña del administrador? sudo está pidiendo tu ¡contraseña! - n611x007
Desafortunadamente, esto está seriamente desactualizado. Runas simplemente ejecuta comandos bajo un conjunto diferente de credenciales. Aunque sus credenciales tienen permisos de administrador, no significa que todos los procesos bajo sus credenciales se ejecuten como administrador. - surfasb
+1 por "obsoleto", ya que los runas no pueden omitir el UAC. En su lugar, presione el botón de Windows, escriba cmd, y presione Ctrl + Shift + Enter. - mellow-yellow


yo descubrí elevar hoy que "ejecuta un comando con elevación de privilegios 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 ejecutor a Administrador, pero su sintaxis es mucho más sencilla de usar que runasy puede mantener el directorio actual, lo que permite 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 objetivo de Elevate no es evitar el UAC (Control de cuentas de usuario) ni eludirlo, sino trabajar con él. Siempre que UAC esté habilitado allí tiene ser un tipo de aviso en algunos punto en el proceso. Si necesitas deshacerte de las indicaciones, tienes que desactivar UAC.

El punto de dolor elevar alivia es escalar un proceso particular de un shell no privilegiado, y luego continuar como normal. Sin esto, necesita iniciar un símbolo del sistema privilegiado con haga clic derecho> "Ejecutar como administrador", que no puede ser fácilmente guionado, antes de intentar el comando privilegiado.


112



Esto funciona perfectamente con "Elevar sin preguntar" en secpol.msc. Juntos, hacen lo mismo que %wheel ALL=(ALL) NOPASSWD: ALL en sudo - sayap
@sayap, solo para ser claro, ¿te refieres a esto? ss64.com/nt/syntax-uac.html? - matt wilkie
El único problema que encuentro con elevate (v1.3.0) es que no devuelve el código de error del programa que está elevando. - Ken
Sudo.bat: @elevate %* => ganancia! - Joe DF
Sería bueno mencionar que es una utilidad externa, falta OOTB. - Hi-Angel


Puedes usar el correr como comando que es similar, o puede ver el sudo para Windows proyecto a lo largo de 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 utiliza "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 entra en James. Mis documentos & settings folders, etc. Así que si está instalando una aplicación, digamos que 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 sudo de Linux. Para evitar que cualquier usuario pueda 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 aún tienen que proporcionar credenciales antes de la elevación.

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


66



¿Estás seguro? Cuando ejecuto sudo en ubuntu, si mi tema actual está en ~/.themes entonces la aplicación sudo-ed no podrá acceder a ese tema, porque no está en /home/root/.themesy usará el tema predeterminado feo gtk. - hasen
@hasen j: su problema es simplemente porque ~ / .themes evalúa antes de ejecutar el comando (y por lo tanto antes de que cambie a la raíz). - Jared
Otra solución, excepto alojada en GitHub, es windosu: github.com/tehsenaus/windosu Acabo de encontrarlo, y parece funcionar muy bien. Lo favorito es que es muy fácil de instalar. Solo "npm install -g windosu". - Venryx


También puedes usar el Script Elevation PowerToys.


39



Impresionante, exactamente lo que estaba buscando. No quería ejecutar como un comando tiene un usuario diferente, solo para ejecutarlo con privilegios elevados. - orip
¡Exactamente la solución correcta para este problema! ¿Quién quiere Runas con su sintaxis desordenada? - Stabledog
A menudo he deseado que el comando elevar estuviera integrado en Windows. Es una herramienta fantástica. - nhinkle♦
ahora hay un Colección PowerToys de la elevación por el mismo autor del cual Crear una secuencia de comandos de elevación automática es particularmente relevante. - matt wilkie
@barlop por supuesto que no. Eso vencería el propósito de UAC. - nhinkle♦


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

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

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

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

Por defecto csudo inicia una nueva consola en una división (puede haber cambios a través de la edición de csudo.cmd contenido).

Y, por supuesto, puede cambiarle el nombre a sudo.cmd si te gusta "clásico" sudo palabra.

sudo in ConEmu/Windows


25



csudo hace mucho tiempo se incluyó en la distribución de ConEmu. No se necesita ningún enlace. - Maximus
El problema aquí es que la nueva pestaña de la consola se vuelve inutilizable después del comando sudo'd. Por lo tanto, no puede seguir trabajando en la pestaña elevada, solo obtenga un press enter or esc to exit mensaje. - jiggunjer
Por supuesto que no puedes Incluso en Unix vuelves a la terminal no elevada después sudo¡el comando está hecho su trabajo! Estás yendo mal. - Maximus
1) si va a abrir una nueva ventana o pestaña, puede guardarla, deje que usuario elige si quieren continuar 2) En mi ubuntu no tengo que sudo cada vez, creo que la elevación dura unos minutos. 3) esta aplicación tiene un millón de opciones, pero nada para esto? Tal vez estoy en mal estado. - jiggunjer


Método rápido:

Tres pasos para agregar sudo.

  1. Abre PowerShell.

  2. Copie la siguiente secuencia de comandos (Ctrl + C) y péguela en PowerShell (Alt + Espacio + 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 Entrar.

Permitirá permanentemente sudo comando 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

Largo método para aprender:

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

Consejo: Si no eres un gran admirador 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

23



Me encanta la solución powershell para esta pregunta. Esta tiene que ser la forma más fácil de elevar algo. Los archivos .bat existentes se pueden convertir fácilmente a POSH - Mitchell Skurnik
Obtuve este error en 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, vea [este artículo] (www.faqforge.com/windows/windows-powershell-running-scripts-is-disabled-on-this-system/). De manera predeterminada, los scripts de PowerShell están deshabilitados en cualquier instalación de Windows. Necesita habilitarlo con este comando set-executionpolicy remotesigned. Otras opciones además remotesigned están descritos en documentos oficiales. - vulcan raven
Los lectores notan que este script ps es un contenedor para powershell -c start -verb runas program.exe funcionalidad. También ten en cuenta no se puede elevar como este con el indicador de cmd (de forma nativa). Powershell es la mejor opción nativa. - jiggunjer


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

Si mantienes presionado el Cambio Si hace clic con el botón derecho en la mayoría de los archivos ejecutables en Windows, debería observar algunas opciones más avanzadas. Uno de estos es el "Run As..."opción (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 sobre el comando RunAs incorporado, tanto en la línea de comandos como en los modos gráficos, que le permiten guardar las credenciales de la cuenta


20





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 variables de entorno.

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


3



Surun hace un gran trabajo. Sin embargo, a veces en Windows 8 y 8.1 sus valores predeterminados no son ideales. Como reemplaza la ejecución de Windows como función, no puede iniciar un símbolo del sistema haciendo clic con el botón derecho en la pantalla de inicio. - Wolf


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

Concha Hamilton C resuelve eso con un su y un sudo genuinos. su le permite ejecutar un comando como otro usuario; sudo (en realidad, un alias a su) le permite ejecutar un comando elevado. También puede hacer ambas cosas, ejecutándose elevado como un usuario diferente. Los directorios actuales, las variables de entorno y las líneas de comando largas se transfieren mediante un intercambio de memoria entre su ejecución en el contexto de la persona que llama y una copia de sí misma ejecutándose como un interludio con las nuevas credenciales que luego inicia el elemento secundario. Descripción completa: soy el autor.


3