En los sistemas * nix, puede obtener un shell raíz como este:
$ su # or 'sudo -s'
#
El shell raíz se genera en su lugar dentro de la misma terminal.
Estoy tratando de encontrar algo que haga una elevación similar en el lugar en el símbolo del sistema de Windows. En otras palabras, no debería generar una nueva ventana o mostrar mensajes UAC. Hasta ahora he podido hacer una tarea programada que omite UAC, pero la ventana elevada del símbolo del sistema no se genera en su lugar.
¿Existe un comando similar para Windows que realice una elevación in situ sin generar una nueva ventana?
windows
command-line
uac
usuario2064000
fuente
fuente
sudo
a veces pedirá una contraseña, pero lo hace con una interfaz de texto. Me pregunto cómo lo manejan los servidores Nano (que no creo que incluso ofrezcan una GUI para Escritorio remoto).Respuestas:
TL; DR : la única opción es generar otro proceso. (Una nueva
cmd.exe
). En el caso del símbolo del sistema, iniciar una nueva instancia con un token de acceso que tenga permisos más altos siempre dará como resultado una nueva ventana creada.No es posible otorgar permisos adicionales a un proceso que ya se está ejecutando .
Cuando un usuario con derechos administrativos inicia sesión en una máquina Windows con el Control de cuentas de usuario (UAC) habilitado, se crean dos tokens de acceso separados :
En el momento en que
CMD.EXE
se crea un proceso (por ejemplo ), se le asigna uno de estos dos tokens de acceso . Si el proceso se ejecuta "elevado" como administrador, se utiliza el token de acceso sin filtrar. Si al proceso no se le otorgan derechos de administrador, se utiliza el token de usuario estándar filtrado.Una vez que se ha creado un proceso, no es posible reemplazar su token de acceso . 1 En este hilo de MSDN Application Security for Windows Desktop , un póster que se identifica a sí mismo como miembro del Equipo de Kernel de Windows dice:
Nota: El Control de cuentas de usuario se introdujo con el lanzamiento de Windows Vista .
Esta respuesta de Superusuario cita dos fuentes adicionales que confirman lo mismo:
La publicación del blog devzest.com Programming Elevated Privilege / UAC :
El artículo de techtarget.com Cómo elevar los privilegios de los programas correctamente usando el UAC de Vista :
Por lo tanto, simplemente no es posible elevar el símbolo del sistema o cualquier otro proceso en el lugar. La única opción es generar otro proceso con un nuevo token de acceso (que puede ser otra instancia del proceso original si lo desea). En el caso del símbolo del sistema, iniciar una nueva instancia con un token de acceso que tenga permisos más altos siempre generará una nueva ventana, y si los avisos UAC están habilitados en el sistema, también se activarán.
1 Puede ajustar los privilegios en un token de acceso existente con la función AdjustTokenPrivileges , pero de acuerdo con MSDN :
fuente
Si bien soy un usuario entusiasta
TCC-LE
, existe una solución que no necesita ningún programa nuevo:cmd
como administrador.%SystemRoot%\system32\
- si no,cd
allí.copy cmd.exe cmdadmin.exe
(o cualquier nombre que elija, comosu.exe
).cmdadmin.exe
.Ahora
cmdadmin
es susu
osudo
: puede iniciarlo sin parámetros para darle un shell con privilegios administrativos, o puede ejecutarlo/c
para ejecutar un solo comando en este modo. Dependiendo de sus políticas, es posible que se le solicite confirmación o no.Tenga en cuenta que esto siempre abrirá una nueva ventana (como lo hace la solución TCC
start /elevated ...
): para una aplicación GUI esto se espera, pero para un programa de línea de comandos, puede usar en/k
lugar de/c
, para darle la oportunidad de ver la salida ; o puede ejecutar a través de un archivo por lotes (sudo.cmd
¿tal vez?) que se concatena& pause
al final de su cadena de ejecución.En cualquier caso, no es lo mismo que
su
osudo
, pero es lo más cercano que obtendrá. Al configurar el diseño de Windows manualmente, la nueva ventana se puede crear directamente debajo y colindando con el original.fuente
sudo
, con la advertencia de que todavía tiene que lidiar con una nueva ventana / proceso que se genera. Aunque probablemente no sea la mejor idea desde el punto de vista de la seguridad, deshabilitar todas las indicaciones de UAC eliminaría tener que responder a la solicitud de UAC cuando se inicia el proceso elevado.mklink cmdadmin.exe cmd.exe
Hay una forma bastante inconveniente:
Había mejores formas, pero Microsoft las cerró. Por supuesto, siempre puede arremangarse y escribir su propio script equivalente
sudo
con el código fuente que le acabo de dar.¡Blasfemia! ¡Quémalo en la hoguera! ;) Broma aparte, no. No hay Eso sería un error y una vulnerabilidad de seguridad. Microsoft hizo un esfuerzo explícito para garantizar que el proceso elevado y estándar tenga lo menos en común posible.
Los niños inteligentes que están pensando en dos back-end (uno estándar y uno elevado) y un front-end gráfico para ambos, deben leer sobre el aislamiento de la sesión 0 .
fuente
No hay un comando incorporado. Aunque no lo he probado, creo que sí, porque he visto múltiples formas de usar software / código adicional para solucionar este problema.
Olvídalo. Absolutamente olvídalo. Eso va en contra del diseño de UAC. Si pudieras manejar eso, estás rompiendo un proceso de seguridad fundamental. Espere que su solución pase por un parche después de que Microsoft se entere y arregle cualquier proceso que pueda hacer para solucionar esto.
La solución para evitar los avisos de UAC es tener una elevación elevada para comenzar. UAC no debería molestarte si estás lo suficientemente autorizado. Si comienza con una elevación más baja (que a menudo se recomienda para obtener beneficios de seguridad) y luego intenta hacer algo que requiera una elevación más alta, espere la interacción de UAC.
fuente
elevate cmd
para abrir una nueva ventana de símbolo del sistema con un indicador UAC (¡el sitio también tiene comandos del menú contextual!). O, por supuesto, puede simplemente hacer Ctrl + Shift + Hacer clic en el icono de la barra de tareas de cualquier ventana de símbolo del sistema existente para hacer lo mismo: eso es lo que suelo hacer con más frecuencia. (Lo que sé no es lo que solicitó el OP, pero lo que solicitó el OP está bloqueado por diseño)Lo que quieres es imposible en Windows, porque no es compatible con este concepto. Necesita comenzar un nuevo proceso con permisos más altos .
Yo uso nircmd para elevar procesos desde la línea de comandos. Tu comando sería
nircmdc elevate cmd
fuente
Vi esta pregunta y se me ocurrió una solución simple. Esta es una pequeña utilidad llamada
rsudo
, que ejecuta comandos escalados desde una ventana CMD normal.Nota: Un UAC se van a plantear. Ocultar esto no es posible, esa es la forma en que UAC ha sido diseñado.
Descargar[La descarga no funciona, se actualizará pronto]Nota: Los comandos se ejecutan en una nueva ventana. Si desea ver la salida, ejecute
rsudo.exe "pause && [command]"
fuente
rsudo.exe "[command] && pause"
?pause
que se ejecute primero entoncesEste es raro.
Puede intentar hacer un ssh en su propia computadora que usaría la misma terminal existente, pero en realidad sería una completamente diferente.
Funcionará, pero probablemente no sea lo que quieres.
Sin embargo, otros pueden encontrarlo útil.
fuente
Pruebe el símbolo del sistema JPSOFT Take Command TCC / LE. Viene en versiones de 32 y 64 bits y es gratuito a menos que desee más funcionalidad.
Vaya a https://jpsoft.com/ y haga clic en Descargas y seleccione lo que desee.
TCC / LE tiene un START / ELEVATED, que inicia el programa elevado con todos los privilegios de administrador. (Solo Windows Vista o posterior).
fuente