Come eseguire Terminal come root?


35

Quando vogliamo eseguire un programmi come root usiamo sudo, gksu, gksudoed ecc Ora la mia domanda è come si possa gestire un terminale come utente root nel terminale?

Ho provato a usare gksudo terminale gksu terminalma non succede nulla. e correndo sudo terminalottengo un errore sudo: terminal: command not found.


4
Lo è gnome-terminal. Quindi prova sudo gnome-terminal.
g_p,

1
C'è davvero qualche vantaggio nell'esecuzione del programma terminale stesso come root? perché non avviare una shell root interattiva all'interno del terminale con sudo -i?
steeldriver,

2
@Guru sudonon dovrebbe essere usato per eseguire programmi grafici come questo. Se gksu/ gksudonon è (o potrebbe non essere) installato, sudo -H ...(o sudo -i ...) può essere utilizzato per eseguire un'applicazione grafica ...come root.
Eliah Kagan,

sì hai ragione.
g_p,

Risposte:


53

L'emulatore di terminale predefinito su Ubuntu è il Terminale GNOME . Si trova in /usr/bin/gnome-terminale può essere eseguito con il gnome-terminalcomando.

Quello che vuoi davvero

Quello che probabilmente vuoi è una shell in esecuzione come root, come se fosse prodotta da un login root (ad esempio, con tutte le variabili d'ambiente impostate per root anziché per il tuo utente).

Supponendo che sia quello che vuoi, come ha suggerito steeldriver , corri:

sudo -i

Avrai una shell di root in cui i comandi immessi verranno eseguiti come root (senza doverli precedere sudo).

Ma se vuoi davvero eseguire l'applicazione di emulazione terminale grafica come root, continua a leggere. Vi presento due modi: con gksu/ gksdoe con il sudocomando.

Con gksu/gksudo

Dato che hai installato il pacchetto gksuInstalla gksu , puoi eseguire gnome-terminalcome root con uno dei seguenti:

gksu gnome-terminal
gksudo gnome-terminal

(Poiché gksuè impostato su sudo-mode in Ubuntu per impostazione predefinita, questi dovrebbero essere equivalenti.)

In esecuzione gnome-terminalcome root senza un terminale non root di controllo:

Praticamente ogni ambiente desktop offre la possibilità di eseguire un comando senza dover aprire un terminale (che, se chiuso, di solito causa la chiusura del comando).

Questo di solito si ottiene con Alt+ F2. Apparirà una casella di testo con il comando Esegui (o simile) ed è possibile inserire il comando.

Ad esempio, appare così in Unity:

Esegui una casella di testo del comando in Unity

E così in MATE (GNOME Flashback / Fallback, Xfce, LXDE sono simili):

Finestra di dialogo Esegui comando in MATE

Nota che funziona con gksue gksudoperché usano una finestra di dialogo di autenticazione grafica. Se dovessi premere Alt+ F2ed eseguire sudo ..., non saresti in grado di interagire con la richiesta della password.

Con sudo

Se non si dispone del pacchetto gksu e non si desidera installarlo, è possibile utilizzare:

sudo -H gnome-terminal

Il -Hflag è importante perché imposta la HOMEvariabile di ambiente /rootinvece della home directory del tuo utente. Si dovrebbe non usare sudo gnome-terminalcome si può rompere la configurazione gnome-terminale appartenente all'utente non root. Per ulteriori informazioni al riguardo, consultare:

( sudo -i gnome-terminalva anche bene.)

Sbarazzarsi del terminale di controllo non root:

Se (1) si apre un terminale grafico, (2) si esegue qualcosa di simile sudo -H gnome-terminalad esso, per creare un nuovo terminale grafico di base e (3) si esce dal terminale grafico non root originale ... quindi anche il terminale grafico di root si chiude .

Questo perché il terminale grafico di root viene inviato SIGHUP quando viene chiuso il terminale proprietario.

Per evitarlo, potresti pensare di poter invece avviare il terminale grafico di root con:

sudo -H gnome-terminal &

Questo funzionerà solo se sudonon è necessario richiedere una password. In tal caso, non verrà visualizzata la richiesta della password.

Un modo per aggirare questo è usare:

sudo -v
sudo -H gnome-terminal

sudo -vesiste proprio per questo scopo. Come spiegato in man sudo, "aggiorna [s] le credenziali memorizzate nella cache dell'utente, autenticando l'utente se necessario."

Si noti che questo non funzionerà ancora se eseguito direttamente dalla casella Alt+ F2"comando comando" dell'ambiente desktop , poiché è ancora necessario un terminale per immettere la password sudo -v.

Oppure puoi farlo in quello che potrebbe essere chiamato il modo tradizionale, sospendendo il lavoro dopo l'avvio:

  1. Esegui sudo -H gnome-terminaldal terminale grafico non root originale.
  2. Inserisci la tua password come richiesto da sudo. Verrà avviato il terminale grafico.
  3. Sempre nel terminale non root , premere Ctrl+ Zper sospendere il terminale root. Mentre il terminale di root è sospeso, non è possibile utilizzarlo; la sua interfaccia non risponderà alle tue azioni.
  4. Chiudere il terminale non root di controllo con exit. Il processo grafico del terminale di root verrà automaticamente sospeso e ignorato dal terminale non di root.

In breve:

sudo -H gnome-terminal
^Z
exit

Ma supponi di voler continuare a utilizzare anche il terminale originale non root. Quindi è possibile eseguire , dove si trova il numero di lavoro del terminale principale grafico, per riprendere il lavoro in background. Puoi correre per trovare ma probabilmente non dovrai farlo - quel numero è stato mostrato come quando hai premuto + . Per esempio:bg NNjobsN[N]CtrlZ

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

Anche io posso correre xterm. quanti terminali esistono in Ubuntu?
αғsнιη,

@KasiyA molto. Una volta ho smesso di contare su 25. Putty, anche Terminator sono usati molto.
Rinzwind,

6

Risposta breve:

gksudo gnome-terminal
(assuming gksu is installed)

apre un terminale come root:

root@jacob-Satellite-L300:~#

Non è necessario spiegare che è possibile utilizzare questo per aprire qualsiasi terminale come root in questo modo; come Vala ( gksudo vala-terminal), Xterm ( gksudo xterm), Termit ( gksudo termit), UXTerm ( gksudo uxterm), Konsole ( gksudo konsole) e così via.


1
Che ne dici di questo sudo x-terminal-emulator?
αғsнιη,

@KasiyA Si dovrebbe comunque utilizzare gksu x-terminal-emulator, gksudo x-terminal-emulator, kdesudo x-terminal-emulator(se l'ambiente desktop è KDE), sudo -H x-terminal-emulatoro sudo -i x-terminal-emulatorinvece, per evitare questo problema . Allo stesso modo, sudo geditnon dovrebbe essere usato per essere eseguito geditcome root.
Eliah Kagan,

2

Come affermato in precedenza, si chiede come eseguire Terminal come root, ma molto probabilmente si desidera eseguire l'applicazione Terminal grafica come utente normale e avviare al suo interno una shell root dove si è connessi come root. In questo modo all'applicazione grafica terminale non vengono concessi i privilegi di root. Le risposte precedenti non sembrano dare chiare linee di comando da usare, quindi ecco cosa uso.

Con xterm

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

'-E sudo -i' dice a xterm di passare a root nella sessione, e i colori sono solo per rendere molto ovvio che si tratta di una shell root.

Con Terminale Gnome

gnome-terminal -- sudo -i

Personalmente, associo i tasti Gnome per avviare facilmente i terminali

Vai su Impostazioni tastiera, aggiungi una scorciatoia personalizzata con Scorciatoia Super + X e comando 'xterm -bg black -fg white -sb -sl 5000' e root xterm con Scorciatoia Super + Z e comando 'xterm -bg black -fg red - sb -sl 5000 -e sudo -i '.

In passato tendevo a preferire xterm al Terminale di Gnome perché il carattere è piccolo e semplice, ma ora arrivo al Terminale ora eseguo grandi schermi DPI alti. La codifica a colori dei terminali è un'ottima idea quando si avvia l'esecuzione di diversi profili con conseguenze pericolose per evitare incidenti (ad es. Radice locale, macchina del client remoto, radice del client remoto).


0

C'è un altro modo per farlo, testato e funzionante su Ubuntu 16.04 LTS:

Prima installa gnome-panel:

sudo apt install gnome-panel

Quindi installare gksu:

sudo apt install gksu

Al termine dell'installazione, eseguire:

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

Questo crea un collegamento sul desktop. Dovresti avere la possibilità di nominarlo. Ho chiamato il mio "X-Term" ma puoi chiamare il tuo praticamente come vuoi. Digita /usr/bin/gksu* per il percorso "Comando".

Quando avvii il nuovo collegamento sul desktop, ti verrà richiesto di eseguire un'applicazione. Digitare: xterm.

Ora ti verrà richiesta la password; una volta inserito, avrai accesso a un terminale root funzionante. Ricorda di usare solo quando assolutamente necessario e chiudi quando hai finito.

* supponendo che tu abbia installato Ubuntu con le impostazioni predefinite e non abbia modificato significativamente nessuno dei file system dall'installazione.


0

Sto usando Debian 9 stretch

Vai alle scorciatoie da tastiera, aggiungi un comando come questo:

`gksu / usr / bin / x-terminal-emulator '

Avevo messo Super + Tcome scorciatoia.

Ora ogni volta che vuoi aprire un terminale come root, digita il tuo collegamento

Spero che possa aiutare qualcuno in futuro


-1

Puoi avviare una shell interattiva con:

sudo -s

Per ulteriori informazioni:

man sudo

e leggi la -s --shellsezione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.