Cuando queremos ejecutar un programa como root usamos sudo
, gksu
, gksudo
y etc. Ahora mi pregunta es ¿cómo podemos ejecutar una Terminal como usuario raíz en la Terminal?
Probé usando gksudo terminal
y gksu terminal
pero nada pasa. y ejecutando sudo terminal
Recibo el error sudo: terminal: command not found
.
Mejor respuesta
El emulador de terminal predeterminado en Ubuntu es GNOME Terminal. Se encuentra en /usr/bin/gnome-terminal
y se puede ejecutar con el gnome-terminal
comando.
Lo que realmente quieres
Lo que probablemente desee es un shell que se ejecute como root, como si se produjera a partir de un inicio de sesión de root (por ejemplo, con todas las variables de entorno configuradas para root en lugar de para su usuario).
Suponiendo que eso es lo que quiere, como sugirió steeldriver, simplemente ejecute:
sudo -i
Tendrá un shell raíz en el que los comandos que ingrese se ejecutarán como raíz (sin tener que precederlos con sudo
).
Pero si realmente desea ejecutar la aplicación de emulador de terminal gráfico como root, siga leyendo. Presento dos formas:con gksu
/gksdo
, y con el sudo
comando.
Con gksu
/gksudo
Ya que tienes el gksu paquete instalado, puede ejecutar gnome-terminal
como root con cualquiera de:
gksu gnome-terminal
gksudo gnome-terminal
(Desde gksu
está configurado en modo sudo en Ubuntu de forma predeterminada, estos deberían ser equivalentes).
Ejecutando gnome-terminal
como root sin un terminal de control que no sea root:
Prácticamente todos los entornos de escritorio brindan la posibilidad de ejecutar un comando sin tener que abrir una terminal (que, si se cierra, generalmente provocaría la terminación del comando).
Esto generalmente se logra con Alt +F2 . Un cuadro de texto con la etiqueta Ejecutar comando (o similar) aparecerá y podrá ingresar su comando.
Por ejemplo, se ve así en Unity:
Y así en MATE (GNOME Flashback/Fallback, Xfce, LXDE son similares):
Tenga en cuenta que esto funciona con gksu
y gksudo
porque utilizan un cuadro de diálogo de autenticación gráfica. Si tuviera que pulsar Alt +F2 y ejecuta sudo ...
, entonces no podrá interactuar con la solicitud de contraseña.
Con sudo
Si no tiene el paquete gksu y no quiere instalarlo, puede usar:
sudo -H gnome-terminal
El -H
es importante porque establece el HOME
variable de entorno a /root
en lugar del directorio de inicio de su propio usuario. No deberías no use sudo gnome-terminal
ya que puede romper la configuración de gnome-terminal que pertenece al usuario no root. Para obtener más información al respecto, consulte:
- RootSudo en la wiki de ayuda de Ubuntu
- ¿Por qué los usuarios nunca deberían usar sudo normal para iniciar aplicaciones gráficas?
(sudo -i gnome-terminal
también está bien.)
Deshacerse del terminal controlador no root:
Si (1) abre una terminal gráfica, (2) ejecuta algo como sudo -H gnome-terminal
en él, para crear un nuevo terminal raíz gráfico, y (3) salga del terminal gráfico original que no sea raíz... entonces el terminal gráfico raíz también se cerrará.
Esto se debe a que se envía SIGHUP al terminal gráfico raíz cuando se sale del terminal al que pertenece.
Para evitar esto, podría pensar que podría iniciar el terminal raíz gráfico con:
sudo -H gnome-terminal &
Pero esto solo funcionará si sudo
no tiene que solicitar una contraseña. Si es así, no verá la solicitud de contraseña.
Solo ida solucionar esto es usar:
sudo -v
sudo -H gnome-terminal
sudo -v
existe sólo para este propósito. Como se explica en man sudo
, "actualiza las credenciales almacenadas en caché del usuario, autenticando al usuario si es necesario".
O puede hacerlo en lo que podría llamarse la forma tradicional, suspendiendo el trabajo después de que comience:
- Ejecute
sudo -H gnome-terminal
desde el terminal gráfico no root original. - Ingrese su contraseña como lo solicita
sudo
. Se iniciará el terminal gráfico. - Aún en la terminal no raíz , presione Ctrl +Z para suspender el terminal raíz. Mientras la terminal raíz está suspendida, no puede usarla; su interfaz no responderá a tus acciones.
- Salga del terminal no root de control con
exit
. El trabajo de la terminal raíz gráfica será suspendido y repudiado por la terminal no raíz, automáticamente.
En resumen:
sudo -H gnome-terminal
^Z
exit
Pero supongamos que también desea seguir usando el terminal original que no es root. Entonces podría ejecutar bg N
, donde N
es el número de trabajo del terminal raíz gráfico, para reanudar el trabajo en segundo plano. Puede ejecutar jobs
para encontrar N
pero probablemente no tengas que hacerlo, ese número se mostró como [N]
cuando presionaste Ctrl +Z . Por ejemplo:
[email protected]:~$ sudo -H gnome-terminal
[sudo] password for ek:
^Z
[1]+ Stopped sudo -H gnome-terminal
[email protected]:~$