Comment exécuter Terminal en tant que root?

35

Lorsque nous voulons lancer un programme en tant que root que nous utilisons sudo, gksu, gksudoetc Maintenant , ma question est de savoir comment peut fonctionner un terminal en tant qu'utilisateur root dans un terminal?

J'ai essayé d'utiliser gksudo terminalet gksu terminalmais rien ne se passe. et en courant sudo terminalje reçois une erreur sudo: terminal: command not found.

αғsнιη
la source
4
C'est gnome-terminal. Alors essayez sudo gnome-terminal.
g_p
1
Y at-il vraiment un avantage à exécuter le programme de terminal lui-même en tant que root? pourquoi ne pas simplement lancer un shell root interactif dans le terminal avec sudo -i?
Steeldriver
2
@Guru sudone devrait pas être utilisé pour exécuter des programmes graphiques comme celui-ci. Si gksu/ gksudon'est pas (ou pourrait ne pas être installé), sudo -H ...(ou sudo -i ...) peut être utilisé pour exécuter une application graphique en ...tant que root.
Eliah Kagan
Oui vous avez raison.
g_p

Réponses:

53

L'émulateur de terminal par défaut sur Ubuntu est le terminal GNOME . Il est situé à /usr/bin/gnome-terminalet peut être exécuté avec la gnome-terminalcommande.

Ce que vous voulez vraiment

Ce que vous voulez probablement, c'est un shell s'exécutant en tant que root, comme s'il avait été créé à partir d'un login root (par exemple, avec toutes les variables d'environnement définies pour root plutôt que pour votre utilisateur).

En supposant que ce que vous voulez, comme l' a suggéré Steeldriver , lancez simplement:

sudo -i

Vous aurez un shell root dans lequel les commandes que vous saisirez seront exécutées en tant que root (sans avoir à les précéder sudo).

Mais si vous voulez vraiment exécuter l'application d'émulateur de terminal graphique en tant que root, lisez la suite. Je présente deux manières: avec gksu/ gksdoet avec la sudocommande.

Avec gksu/gksudo

Le paquetage gksu étantInstallez gksu installé, vous pouvez exécuter en gnome-terminaltant que root l’un des éléments suivants:

gksu gnome-terminal
gksudo gnome-terminal

(Puisque gksuest défini par défaut sur sudo-mode dans Ubuntu, ces valeurs devraient être équivalentes.)

Exécution en gnome-terminaltant que root sans terminal non-root de contrôle:

Pratiquement tous les environnements de bureau offrent la possibilité d’exécuter une commande sans avoir à ouvrir un terminal (ce qui, s’il était fermé, entraînerait généralement l’arrêt de la commande).

Ceci est généralement réalisé avec Alt+ F2. Une zone de texte intitulée Exécuter la commande (ou similaire) apparaîtra et vous pourrez entrer votre commande.

Par exemple, cela ressemble à ceci dans Unity:

Exécuter une zone de texte de commande dans Unity

Et comme cela dans MATE (GNOME Flashback / Fallback, Xfce, LXDE sont similaires):

Boîte de dialogue Exécuter la commande dans MATE

Notez que cela fonctionne avec gksuet gksudoparce qu'ils utilisent une boîte de dialogue d'authentification graphique. Si vous deviez appuyer sur Alt+ F2et exécuter sudo ..., vous ne seriez plus en mesure d'interagir avec l'invite de mot de passe.

Avec sudo

Si vous n'avez pas le paquetage gksu et que vous ne voulez pas l'installer, vous pouvez utiliser:

sudo -H gnome-terminal

L' -Hindicateur est important car il définit la HOMEvariable d'environnement à la /rootplace du répertoire de base de votre propre utilisateur. Vous ne devriez pas utiliser sudo gnome-terminalcar cela risquerait de casser la configuration de gnome-terminal appartenant à l'utilisateur non root. Pour plus d'informations à ce sujet, voir:

( sudo -i gnome-terminalest aussi d'accord.)

Se débarrasser du terminal non root contrôlant:

Si vous (1) ouvrez un terminal graphique, (2) exécutez quelque chose de similaire sudo -H gnome-terminal, pour créer un nouveau terminal racine graphique, et (3) quittez le terminal graphique non racine d'origine ... alors le terminal graphique racine se ferme également .

Ceci est dû au fait que le terminal graphique racine est envoyé SIGHUP lorsque le terminal qui le possède est quitté.

Pour éviter cela, vous pourriez peut-être plutôt lancer le terminal racine graphique avec:

sudo -H gnome-terminal &

Mais cela ne fonctionnera que s'il sudon'est pas nécessaire de demander un mot de passe. Si tel est le cas, l'invite du mot de passe ne s'affiche pas.

Une façon de contourner ce problème consiste à utiliser:

sudo -v
sudo -H gnome-terminal

sudo -vexiste uniquement dans ce but. Comme expliqué dans man sudo, cela "met à jour les informations d'identification mises en cache de l'utilisateur, authentifiant l'utilisateur si nécessaire."

Notez que cela ne fonctionne toujours pas s'il est exécuté directement à partir de votre environnement de bureau Alt+ F2boîte « ordre de marche », parce que vous avez encore besoin d' un terminal pour entrer votre mot de passe pour sudo -v.

Ou vous pouvez le faire de manière dite traditionnelle, en suspendant le travail après son démarrage:

  1. Exécuter à sudo -H gnome-terminalpartir du terminal graphique non racine d'origine.
  2. Entrez votre mot de passe comme demandé par sudo. Le terminal graphique va démarrer.
  3. Toujours dans le terminal non root , appuyez sur Ctrl+ Zpour suspendre le terminal root. Tant que le terminal root est suspendu, vous ne pouvez pas l'utiliser. son interface ne répondra pas à vos actions.
  4. Quittez le terminal de contrôle non root avec exit. Le travail du terminal racine graphique sera automatiquement suspendu et rejeté par le terminal non root.

En bref:

sudo -H gnome-terminal
^Z
exit

Mais supposons que vous vouliez continuer à utiliser le terminal non root original. Vous pouvez ensuite exécuter , où se trouve le numéro de travail du terminal racine graphique, pour reprendre le travail en arrière-plan. Vous pouvez courir pour trouver mais vous n’aurez probablement pas à le faire - ce numéro s’affiche comme lorsque vous avez appuyé sur + . Par exemple:bg NNjobsN[N]CtrlZ

ek@Ilex:~$ sudo -H gnome-terminal
[sudo] password for ek: 
^Z
[1]+  Stopped                 sudo -H gnome-terminal
ek@Ilex:~$
Eliah Kagan
la source
Je peux aussi courir par xterm. combien de terminaux existent dans Ubuntu?
αғsнιη
@ KasiyA beaucoup. Une fois, j'ai arrêté de compter à 25. Putty, Terminator sont aussi beaucoup utilisés.
Rinzwind
6

Réponse courte:

gksudo gnome-terminal
(assuming gksu is installed)

ouvre un terminal en tant que root:

root@jacob-Satellite-L300:~#

Inutile d'expliquer que vous pouvez utiliser ceci pour ouvrir n'importe quel terminal en tant que root. comme Vala ( gksudo vala-terminal), Xterm ( gksudo xterm), Termit ( gksudo termit), UXTerm ( gksudo uxterm), Konsole ( gksudo konsole) et ainsi de suite.

Jacob Vlijm
la source
1
Qu'en est- ce sudo x-terminal-emulator?
αғsнιη
@KasiyA Vous devriez toujours utiliser gksu x-terminal-emulator, gksudo x-terminal-emulator, kdesudo x-terminal-emulator(si votre environnement de bureau KDE est), sudo -H x-terminal-emulatorou sudo -i x-terminal-emulatorau contraire, pour éviter ce problème . De même, sudo geditne doit pas être utilisé pour s'exécuter en gedittant que root.
Eliah Kagan
2

Comme indiqué précédemment, vous demandez comment exécuter Terminal en tant que root, mais il est plus probable que vous souhaitiez réellement exécuter l'application graphique Terminal en tant qu'utilisateur normal et y démarrer un shell root à partir duquel vous êtes connecté en tant que root. De cette manière, l’application de terminal graphique ne bénéficie pas des privilèges root. Les réponses précédentes ne semblent pas donner des lignes de commande claires à utiliser, donc voici ce que j'utilise.

Avec xterm

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

Le '-e sudo -i' indique à xterm de passer à la racine dans la session, et les couleurs ne font que rendre très évident qu'il s'agit d'un shell racine.

Avec Gnome Terminal

gnome-terminal -- sudo -i

Personnellement, je lie les raccourcis clavier Gnome pour lancer facilement les terminaux

Accédez aux paramètres du clavier, ajoutez un raccourci personnalisé avec Shortcut Super + X et la commande 'xterm -bg noir -fg blanc -sb -sl 5000', et xterm racine avec raccourci Super + Z et la commande 'xterm -bg black -fg rouge - sb -sl 5000 -e sudo -i '.

Dans le passé, j’avais tendance à préférer xterm à Gnome Terminal parce que la police est petite et simple, mais j’arrive à Terminal, je lance maintenant des écrans géants à haute résolution. Le codage couleur de vos terminaux est une très bonne idée lorsque vous commencez à exécuter différents profils avec des conséquences dangereuses pour éviter les accidents (par exemple, la racine locale, la machine du client distant, la racine du client distant).

Neek
la source
0

Il existe un autre moyen de le faire, testé et fonctionnant sous Ubuntu 16.04 LTS:

Installez d'abord le panneau de gnome:

sudo apt install gnome-panel

Puis installez gksu:

sudo apt install gksu

Une fois l'installation terminée, exécutez:

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

Cela crée un raccourci sur le bureau. Vous devriez avoir la possibilité de le nommer. J'ai appelé le mien 'X-Term' mais tu peux appeler le tien à peu près comme tu veux. Tapez /usr/bin/gksu* pour le chemin 'Commande'.

Lorsque vous lancez votre nouveau raccourci sur le bureau, vous serez invité à exécuter une application. Tapez: xterm.

Vous serez maintenant invité à entrer votre mot de passe. une fois que vous y entrez, vous aurez accès à un terminal racine en état de fonctionnement. N'oubliez pas d'utiliser uniquement lorsque c'est absolument nécessaire et fermez-le lorsque vous avez terminé.

* en supposant que vous avez installé Ubuntu avec les paramètres par défaut et que vous n'avez modifié aucun des systèmes de fichiers de manière significative depuis l'installation.

Peter David Carter
la source
0

J'utilise Debian 9 Stretch

Accédez aux raccourcis clavier, ajoutez une commande comme celle-ci:

`gksu / usr / bin / émulateur de terminal x '

Je l'avais mis Super + Tcomme raccourci.

Maintenant, chaque fois que vous voulez ouvrir un terminal en tant que root, tapez simplement votre raccourci

J'espère que cela pourra aider quelqu'un à l'avenir

Alex
la source
-1

Vous pouvez démarrer un shell interactif avec:

sudo -s

Pour plus d'informations, faites:

man sudo

et lisez la -s --shellsection.

utilisateur465589
la source