41 votos

¿Cómo ejecutar el Terminal como root?

Cuando queremos ejecutar un programa como root utilizamos sudo , gksu , gksudo y etc. Ahora mi pregunta es ¿cómo podemos ejecutar un Terminal como el usuario root en el Terminal?

Intenté con el uso de gksudo terminal y gksu terminal pero no pasa nada. y al ejecutar sudo terminal Me da error sudo: terminal: command not found .

4 votos

Es gnome-terminal . Por lo tanto, intente sudo gnome-terminal .

1 votos

¿Existe realmente alguna ventaja en ejecutar el propio programa de terminal como root? ¿por qué no simplemente iniciar un Shell interactivo de root? dentro de el terminal con sudo -i ?

3 votos

@Gurú sudo no debería utilizarse para ejecutar programas gráficos como éste. Si gksu / gksudo no está (o podría no estar) instalado, sudo -H ... (o sudo -i ... ) puede utilizarse para ejecutar una aplicación gráfica ... como root.

62voto

Ken Liu Puntos 123

El emulador de terminal por defecto en Ubuntu es el Terminal GNOME . Se encuentra en /usr/bin/gnome-terminal y se puede ejecutar con el gnome-terminal comando.

Lo que realmente quieres

Lo que probablemente quieres es un Shell que se ejecute como root, como si se produjera desde un inicio de sesión de root (por ejemplo, con todas las variables de entorno establecidas para root en lugar de para tu usuario).

Asumiendo que eso es lo que quieres, como steeldriver ha sugerido sólo corran:

sudo -i

Tendrás un Shell de root en el que los comandos que introduzcas se ejecutarán como root (sin tener que precederlos con sudo ).

Pero si realmente quieres ejecutar la aplicación gráfica del emulador de terminal como root, sigue leyendo. Te presento dos formas: con gksu / gksdo y con el sudo comando.

Con gksu / gksudo

Ya que tiene la gksu Install gksu instalado, puede ejecutar gnome-terminal como root con cualquiera de:

gksu gnome-terminal

gksudo gnome-terminal

(Ya que gksu está configurado en modo sudo en Ubuntu por defecto, estos deberían ser equivalentes).

Corriendo gnome-terminal como root sin un terminal de control no root:

Prácticamente todos los entornos de escritorio ofrecen la posibilidad de ejecutar un comando sin tener que abrir un terminal (que luego, si se cierra, suele hacer que se termine el comando).

Esto se suele conseguir con Alt + F2 . Un cuadro de texto etiquetado como Ejecutar el comando (o similar) aparecerá y podrá introducir su comando.

Por ejemplo, se ve así en Unity:

Run a command textbox in Unity

Y así en MATE (GNOME Flashback/Fallback, Xfce, LXDE son similares):

Run Command dialog box in MATE

Tenga en cuenta que esto funciona con gksu y gksudo porque utilizan un diálogo de autenticación gráfico. Si se pulsa Alt + F2 y ejecutar sudo ... En ese caso, no podrá interactuar con la solicitud de contraseña.

Con sudo

Si no tienes el paquete gksu y no quieres instalarlo, puedes usar

sudo -H gnome-terminal

El -H es importante porque establece el HOME a la variable de entorno /root en lugar del directorio principal de su propio usuario. Deberá no utilice sudo gnome-terminal ya que puede romper la configuración de gnome-terminal perteneciente al usuario no root. Para más información sobre esto, vea:

( sudo -i gnome-terminal también está bien).

Deshacerse de la terminal de control no root:

Si usted (1) abrir un terminal gráfico, (2) ejecutar algo así como sudo -H gnome-terminal en él, para crear un nuevo terminal gráfico root, y (3) salir de la terminal gráfica original no-root ...entonces la terminal gráfica root se cierra también.

Esto se debe a que el terminal gráfico root se envía SIGHUP cuando se sale de la terminal que lo posee.

Para evitar esto, se podría pensar en lanzar el terminal gráfico de root con:

sudo -H gnome-terminal &

Pero esto sólo funcionará si sudo no tiene que pedir una contraseña. Si lo hace, no verá la solicitud de contraseña.

Una vía para solucionar esto es utilizar:

sudo -v
sudo -H gnome-terminal

sudo -v existe precisamente para este fin. Como se explica en man sudo En este caso, "actualiza las credenciales almacenadas en la caché del usuario, autentificándolo si es necesario".

Tenga en cuenta que esto no funcionará si se ejecuta directamente desde el entorno de escritorio Alt + F2 "comando de ejecución", porque todavía necesita un terminal para introducir su contraseña para sudo -v .

O puede hacerlo en lo que podría llamarse la forma tradicional, por suspender el trabajo después de que se inicie:

  1. Ejecutar sudo -H gnome-terminal de la terminal gráfica original no root.
  2. Introduzca su contraseña tal y como le pide sudo . El terminal gráfico se iniciará.
  3. Todavía en el terminal no root , pulse Ctrl + Z para suspender el terminal root. Mientras el terminal root esté suspendido, no podrá utilizarlo; su interfaz no responderá a sus acciones.
  4. Salir de la terminal de control no root con exit . El trabajo de la terminal gráfica root será desuspendido y repudiado por la terminal no root, automáticamente.

En resumen:

sudo -H gnome-terminal
^Z
exit

Pero supongamos que también quieres seguir usando la terminal original, no root. Entonces podrías ejecutar bg **_N_** , donde N es el número de trabajo del terminal gráfico root, para reanudar el trabajo en segundo plano. Puede ejecutar jobs para encontrar N pero probablemente no tendrás que hacerlo ese número se mostró como [**_N_**] cuando pulsó Ctrl + Z . Por ejemplo:

ek@Ilex:~$ sudo -H gnome-terminal
[sudo] password for ek: 
^Z
[1]+  Stopped                 sudo -H gnome-terminal
ek@Ilex:~$

0 votos

@KasiyA mucho. Una vez dejé de contar en 25. Putty, Terminator se usan mucho también.

6voto

Jacob Vlijm Puntos 24137

Respuesta corta:

gksudo gnome-terminal
(assuming gksu is installed)

abre una terminal como root:

root@jacob-Satellite-L300:~#

No hace falta explicar que se puede utilizar para abrir cualquier como root así; como Vala ( gksudo vala-terminal ), Xterm ( gksudo xterm ), Termit ( gksudo termit ), UXTerm ( gksudo uxterm ), Konsole ( gksudo konsole ) y así sucesivamente.

0 votos

@KasiyA Todavía debe utilizar gksu x-terminal-emulator , gksudo x-terminal-emulator , kdesudo x-terminal-emulator (si su entorno de escritorio es KDE), sudo -H x-terminal-emulator o sudo -i x-terminal-emulator en su lugar, para evitar ese problema . De la misma manera, sudo gedit no debe utilizarse para ejecutar gedit como root.

2voto

Esta pregunta parece tan simple que debe haber una solución sencilla, ¿verdad?
Por supuesto, puede utilizar gksudo o herramientas similares, pero puede haber entornos en los que no se quiera depender de GTK . Es confuso pero un terminal no es un shell ¡!

El terminal es esa cosa que te muestra cosas, donde el Shell es la cosa que tiene esas características de lujo como las variables de entorno, condicionales y todas esas cosas de scripting. Por eso x-terminal-emulator -e ... sólo espera que se ejecute un programa. No hay scripts posibles aquí, sólo inicia un nuevo proceso . Cuando un terminal se inicia sólo sabe que hay una especie de pantalla que le muestra cosas y la entrada de su teclado que se vierte directamente allí. A Shell entrega toda la lógica de un lenguaje script como por ejemplo sh, bash, ash, zsh, ¡...!

La otra distinción importante es quién dirige el terminal y que Shell se está ejecutando en su interior. Puede ejecutar un terminal en el contexto de una ordinario que ejecuta un Shell root dentro de él, pero esto tiene algunas desventajas, por ejemplo, cuando se inicia una nueva pestaña se genera un nuevo Shell, pero vuelve a los privilegios de un ordinario usuario. Su dominio de un 'Nuevo Shell por favor' ¡va a la terminal y no al Shell!
Una decepción cuando te das cuenta de que tienes que entrar en todos esos sudo una vez más por cada pestaña que se abra. Ahora bien, ¿hay alguna forma de abrir un terminal y no un Shell como root sin usar paquetes como gksudo ? Esperando un debian contexto:

bash -c "xhost +si:localuser:root; ssh-askpass | sudo -S -Hb /usr/bin/xfce4-terminal --default-working-directory=/root"

Aunque parezca sencillo aquí están pasando muchas cosas:

  • permitir root para acceder al escritorio X del usuario actual.
  • desde sudo requiere un tty evitamos eso ejecutando ssh-askpass que se ejecuta en el contexto del usuario actual y le pide su pase.
  • sudo ahora lee ese pase de la stdin (-S), establece la carpeta de inicio (-H) y genera un nuevo proceso que se separa de nuestro contexto (-b).
  • y finalmente establece la carpeta de inicio por defecto del proceso de la terminal en root para evitar aterrizar en la casa del usuario actual.

¡et voilà! Tienes un terminal que se ejecuta como root generada en el contexto del usuario actual. Ahora, cuando se crea una nueva pestaña, se produce dentro del terminal de root en lugar del usuario que la creó.

¡Atención! Hay una razón por la que estas cosas son tan complicadas. Tenga en cuenta en cualquier X|VNC|RDP sesión que estás ejecutando. Sólo mantiene un terminal abierto. Esa es la desventaja. Si alguien es capaz de capturar tu sesión (por muy probable que sea), ¡el acceso root es gratis! Tu decisión.

2voto

Como se ha dicho anteriormente, usted pregunta cómo ejecutar Terminal como root, pero lo más probable es que en realidad quiera ejecutar la aplicación gráfica de Terminal como su usuario normal, e iniciar un Shell de root dentro de él en el que usted está conectado como root. De esta manera la aplicación gráfica de Terminal no tiene privilegios de root. Las respuestas anteriores no parecen dar líneas de comando claras para usar, así que esto es lo que yo uso.

Con xterm

xterm -bg black -fg red -e sudo -i

El '-e sudo -i' le dice a xterm que cambie a root en la sesión, y los colores son sólo para hacer muy obvio que es un Shell de root.

Con Gnome Terminal

gnome-terminal -- sudo -i

Personalmente, asocio las combinaciones de teclas de Gnome para lanzar los terminales fácilmente

Vaya a la configuración del teclado, añada un acceso directo personalizado con el acceso directo Super+X y el comando 'xterm -bg black -fg white -sb -sl 5000', y root xterm con el acceso directo Super+Z y el comando 'xterm -bg black -fg red -sb -sl 5000 -e sudo -i'.

En el pasado he tendido a preferir xterm sobre Gnome Terminal porque la fuente es pequeña y simple, pero me estoy acercando a Terminal ahora que corro pantallas grandes de alto DPI. Codificar por colores tus terminales es una muy buena idea una vez que empiezas a ejecutar diferentes perfiles con consecuencias peligrosas para evitar accidentes (por ejemplo, root local, máquina del cliente remoto, root del cliente remoto).

0voto

Scottie Puntos 21

Hay otra forma de hacerlo, probada y funcionando en Ubuntu 16.04 LTS:

Primero instala gnome-panel:

sudo apt install gnome-panel

Luego instala gksu:

sudo apt install gksu

Una vez finalizada la instalación, ejecute:

gnome-desktop-item-edit ~/Desktop/ --create-new

Esto crea un acceso directo en el escritorio. Deberías tener la opción de nombrarlo. Yo llamé al mío "X-Term", pero puedes llamar al tuyo prácticamente como quieras. Escribe /usr/bin/gksu * para la ruta de 'Comando'.

Cuando inicie su nuevo acceso directo al escritorio, se le pedirá que ejecute una aplicación. Escriba: xterm .

Ahora se te pedirá tu contraseña; una vez que la introduzcas, tendrás acceso a un terminal root que funciona. Recuerda usarla sólo cuando sea absolutamente necesario y cerrarla cuando hayas terminado con ella.

*suponiendo que has instalado Ubuntu con la configuración por defecto y no has cambiado ninguno de los sistemas de archivos de forma significativa desde la instalación.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: