Quando vogliamo eseguire un programma come root utilizziamo sudo
, gksu
, gksudo
e così via. Ora la mia domanda è come possiamo eseguire un terminale come utente root in Terminale?
Ho provato a usare gksudo terminal
e gksu terminal
ma non succede niente. ed eseguendo sudo terminal
Ottengo l'errore sudo: terminal: command not found
.
Migliore risposta
L'emulatore di terminale predefinito su Ubuntu è il terminale GNOME. Si trova in /usr/bin/gnome-terminal
e può essere eseguito con il gnome-terminal
comando.
Quello che vuoi veramente
Quello che probabilmente vuoi è una shell in esecuzione come root, come se fosse prodotta da un login di root (ad esempio, con tutte le variabili d'ambiente impostate per root invece che per il tuo utente).
Supponendo che sia quello che vuoi, come ha suggerito steeldriver, esegui:
sudo -i
Avrai una shell di root in cui i comandi immessi verranno eseguiti come root (senza doverli precedere con sudo
).
Ma se vuoi davvero eseguire l'applicazione dell'emulatore di terminale grafico come root, continua a leggere. Presento due modi:con gksu
/gksdo
e con il sudo
comando.
Con gksu
/gksudo
Dal momento che hai il gksu installato, puoi eseguire gnome-terminal
come root con uno di:
gksu gnome-terminal
gksudo gnome-terminal
(Dato che gksu
è impostato su sudo-mode in Ubuntu per impostazione predefinita, dovrebbero essere equivalenti.)
Eseguire gnome-terminal
come root senza un terminale non root di controllo:
Praticamente ogni ambiente desktop fornisce una funzione per eseguire un comando senza dover aprire un terminale (che, se chiuso, di solito causerebbe la chiusura del comando).
Questo di solito si ottiene con Alt +F2 . Una casella di testo con l'etichetta Esegui comando (o simile) apparirà e potrai inserire il tuo comando.
Ad esempio, ha questo aspetto in Unity:
E così in MATE (GNOME Flashback/Fallback, Xfce, LXDE sono simili):
Nota che funziona con gksu
e gksudo
perché usano una finestra di autenticazione grafica. Se dovessi premere Alt +F2 ed esegui sudo ...
, non sarai quindi in grado di interagire con la richiesta della password.
Con sudo
Se non hai il pacchetto gksu e non vuoi installarlo, puoi usare:
sudo -H gnome-terminal
Il -H
flag è importante perché imposta la HOME
variabile di ambiente su /root
invece della directory home del tuo utente. Non dovresti non usa sudo gnome-terminal
in quanto può interrompere la configurazione gnome-terminale appartenente all'utente non root. Per ulteriori informazioni su questo, vedere:
- RootSudo sul wiki della guida di Ubuntu
- Perché gli utenti non dovrebbero mai utilizzare sudo normale per avviare applicazioni grafiche?
(sudo -i gnome-terminal
va bene anche.)
Sbarazzarsi del terminale di controllo non root:
Se (1) apri un terminale grafico, (2) esegui qualcosa come sudo -H gnome-terminal
in esso, per creare un nuovo terminale grafico radice e (3) esci dal terminale grafico originale non root …quindi si chiude anche il terminale grafico root.
Questo perché il terminale grafico di root viene inviato SIGHUP quando si esce dal terminale che lo possiede.
Per evitare ciò, potresti invece pensare di avviare il terminale di root grafico con:
sudo -H gnome-terminal &
Ma questo funzionerà solo se sudo
non deve richiedere una password. In tal caso, non vedrai la richiesta della password.
Solo andata per ovviare a questo è usare:
sudo -v
sudo -H gnome-terminal
sudo -v
esiste proprio per questo scopo. Come spiegato in man sudo
, "aggiorna[i] le credenziali memorizzate nella cache dell'utente, autenticando l'utente se necessario".
Oppure puoi farlo in quello che potrebbe essere chiamato il modo tradizionale, sospendendo il lavoro dopo l'inizio:
- Esegui
sudo -H gnome-terminal
dal terminale grafico originale non root. - Inserisci la tua password come richiesto da
sudo
. Verrà avviato il terminale grafico. - Ancora nel terminale non root , premi Ctrl +Z per sospendere il terminale di root. Mentre il terminale di root è sospeso, non puoi usarlo; la sua interfaccia non risponderà alle tue azioni.
- Chiudi il terminale non root di controllo con
exit
. Il lavoro del terminale di root grafico sarà sia sospeso che disconosciuto dal terminale non root, automaticamente.
In breve:
sudo -H gnome-terminal
^Z
exit
Ma supponiamo che tu voglia continuare a usare anche il terminale originale, non root. Quindi potresti eseguire bg N
, dove N
è il numero del lavoro del terminale grafico principale, per riprendere il lavoro in background. Puoi eseguire jobs
per trovare N
ma probabilmente non sarà necessario:quel numero è stato mostrato come [N]
quando hai premuto Ctrl +Z . Ad esempio:
[email protected]:~$ sudo -H gnome-terminal
[sudo] password for ek:
^Z
[1]+ Stopped sudo -H gnome-terminal
[email protected]:~$