Comment exécuter Terminal en tant que root?

Lorsque nous voulons exécuter un programme en tant que root, nous utilisons sudo, gksu, gksudo et etc. Maintenant, ma question est de savoir comment pouvons-nous exécuter un Terminal en tant qu'utilisateur root dans Terminal?

J'ai essayé avec l'utilisation gksudo terminal et gksu terminal mais rien ne se passe. et en courant sudo terminal Je reçois une erreur sudo: terminal: command not found.

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

Ce Que Tu Veux Vraiment

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

En supposant que c'est ce que vous voulez, comme steeldriver a suggéré, il suffit de courir:

sudo -i

Vous aurez un shell racine dans lequel les commandes que vous entrez seront exécutées en tant que root (sans avoir à les précéder de 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 façons: avec gksu/gksdo, et avec le sudo commande.

Avec gksu/gksudo

Puisque vous avez le gksu paquet installé, vous pouvez exécuter gnome-terminal en tant que racine avec l'un ou l'autre des:

gksu gnome-terminal
gksudo gnome-terminal

(Depuis gksu est réglé sur le mode sudo dans Ubuntu par défaut, ceux-ci devraient être équivalents.)

Exécuter gnome-terminal en tant que root sans terminal non root contrôlant:

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

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

Par exemple, cela ressemble à ceci dans Unity:

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

Run Command dialog box in MATE

Notez que cela fonctionne avec gksu et gksudo parce qu'ils utilisent une boîte de dialogue d'authentification graphique. Si vous deviez appuyer Alt+F2 et courir sudo ..., vous ne pourrez alors pas interagir avec l'invite de mot de passe.

Avec sudo

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

sudo -H gnome-terminal

Le -H le drapeau est important car il définit le HOME variable d'environnement à /root au lieu du répertoire personnel de votre propre utilisateur. Tu devrais pas utiliser sudo gnome-terminal comme cela peut casser la configuration du terminal gnome appartenant à l'utilisateur non root. Pour plus d'informations à ce sujet, voir:

(sudo -i gnome-terminal ça va aussi.)

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

Si vous (1) ouvrir un terminal graphique, (2) exécutez quelque chose comme sudo -H gnome-terminal dans celui-ci, pour créer un nouveau terminal racine graphique, et (3) quittez le terminal graphique d'origine non root ...ensuite, le terminal graphique racine se ferme également.

C'est parce que le terminal graphique racine est envoyé SOUPIR lorsque le terminal qui le possède est sorti.

Pour éviter cela, vous pourriez penser que vous pourriez plutôt lancer le terminal racine graphique avec:

sudo -H gnome-terminal &

Mais cela ne fonctionnera que si sudo il n'est pas nécessaire de demander un mot de passe. Si c'est le cas, vous ne verrez pas l'invite de mot de passe.

Aller simple pour contourner ce problème, il faut utiliser:

sudo -vsudo -H gnome-terminal

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

Notez que cela ne fonctionnera toujours pas s'il est exécuté directement à partir de votre environnement de bureau. Alt+F2 boîte "exécuter la commande", car vous avez toujours besoin d'un terminal pour entrer votre mot de passe pour sudo -v.

Ou vous pouvez le faire de ce que l'on pourrait appeler la manière traditionnelle, en suspendre le travail après son démarrage:

  1. Exécuter sudo -H gnome-terminal à partir du terminal graphique d'origine non root.
  2. Entrez votre mot de passe comme demandé par sudo. Le terminal graphique démarre.
  3. Toujours dans le terminal non root, appuyer Ctrl+Z pour suspendre le terminal racine. Tant que le terminal racine est suspendu, vous ne pouvez pas l'utiliser; son interface ne répondra pas à vos actions.
  4. Quittez le terminal non root de contrôle avec exit. Le travail de terminal racine graphique sera à la fois non suspendu et désavoué par le terminal non racine, automatiquement.

Bref:

sudo -H gnome-terminal^Zexit

Mais supposons que vous vouliez continuer à utiliser le terminal d'origine, non root aussi. Alors tu pourrais courir bg N, où N est le numéro de tâche du terminal racine graphique, pour reprendre la tâche en arrière-plan. Tu peux courir jobs trouver N mais vous n'aurez probablement pas à le faire--ce nombre a été affiché comme [N] quand tu as appuyé Ctrl+Z. Exemple:

ek@Ilex:~$ sudo -H gnome-terminal[sudo] password for ek: ^Z[1] + Arrêté sudo-H gnome-terminalek@Ilex:~$

Réponse courte:

gksudo gnome-terminal(assuming gksu is installed)

ouvre un terminal en tant que root:

root@jacob-Satellite-L300:~#

Pas besoin d'expliquer que vous pouvez l'utiliser pour ouvrir tout terminal comme racine comme ceci; comme Vala (gksudo vala-terminal), Xterm (gksudo xterm), Termit (gksudo termit), UXTerm (gksudo uxterm), Console (gksudo konsole) et ainsi de suite.

Comme indiqué précédemment, vous demandez comment exécuter Terminal en tant que root, mais il est plus probable que vous souhaitiez exécuter l'application Terminal graphique en tant qu'utilisateur normal et démarrer un shell racine à l'intérieur 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 de lignes de commande claires à utiliser, voici donc ce que j'utilise.

Avec xterm

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

Le '- e sudo-i' indique à xterm de passer à root dans la session, et les couleurs sont juste pour rendre très évident qu'il s'agit d'un shell root.

Avec le Terminal Gnome

gnome-terminal -- sudo -i

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

Accédez aux paramètres du clavier, ajoutez un raccourci personnalisé avec le raccourci Super + X et la commande 'xterm-bg black-fg white-sb-sl 5000', et root xterm avec le raccourci Super+Z et la commande 'xterm-bg black-fg red-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 je viens à Terminal maintenant que je cours sur de grands écrans à haute résolution. Le codage couleur de vos terminaux est une très bonne idée une fois que vous commencez à exécuter différents profils avec des conséquences dangereuses pour éviter les accidents (par exemple racine locale, machine du client distant, racine du client distant).

Cette question semble si simple qu'il doit y avoir une solution simple, n'est-ce pas?
Bien sûr, vous pouvez utiliser gksudo ou des outils similaires, mais il peut y avoir des environnements dont vous ne voulez pas dépendre GTK. C'est déroutant mais un terminal n'est pas un shell!

Le terminal est-ce que c'est cette chose qui vous montre des trucs, où le Shell est la chose qui a ces fonctionnalités fantaisistes comme les variables d'environnement, les conditions et tout ce genre de choses de script. C'est pourquoi x-terminal-emulator -e ... s'attend juste à ce qu'un programme s'exécute. Pas de scripts possibles ici, ça commence juste un nouveau processus. Quand un terminal démarre, il sait juste qu'il y a une sorte d'écran vous montrant des trucs et l'entrée de votre clavier qui se déverse directement là-dedans.A Shell fournit toute la logique d'un langage de script comme par exemple. sh, bash, cendres, zsh, ...!

L'autre distinction importante est de savoir qui dirige le terminal et quoi Shell court à l'intérieur. Vous pouvez exécuter un terminal dans le contexte d'une ordinaire utilisateur qui exécute un shell racine à l'intérieur, mais cela présente certains inconvénients, par exemple. lorsque vous démarrez un nouvel onglet, un nouveau shell est généré mais il revient aux privilèges d'un ordinaire utilisateur. Votre maîtrise d'un "Nouvelle coquille s'il vous plait" va au terminal et non au shell!
Une déception quand on se rend compte qu'il faut rentrer dans tous ces sudo stuff une fois de plus pour chaque onglet que vous ouvrez.Maintenant, existe-t-il un moyen d'ouvrir un terminal et non un shell en tant que root sans utiliser de packages comme gksudo? S'attendre à un Debian cadre:

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

Bien que cela semble simple, il se passe beaucoup de choses ici:

  • permettre racine pour accéder au bureau X de l'utilisateur actuel.
  • depuis sudo nécessite un ATS, nous évitons cela en courant ssh-askpass qui s'exécute dans le contexte de l'utilisateur actuel et demande votre pass.
  • sudo lit maintenant ce passage de la stdin (- S), il définit le dossier personnel (-H) et génère un nouveau processus se détachant de notre contexte (-b).
  • et enfin définit le dossier d'accueil par défaut du processus terminal sur racine pour éviter d'atterrir dans la maison de l'utilisateur actuel.

et voilà!Vous avez un terminal fonctionnant comme racine généré dans le contexte de l'utilisateur actuel. Maintenant, lorsque vous générez un nouvel onglet, cela se produit dans le terminal racine au lieu de l'utilisateur qui l'a généré.

Attention!Il y a une raison pour laquelle ce truc est si compliqué. Gardez à l'esprit dans quoi que ce soit X / VNC / RDP session vous l'exécutez. Il garde juste un terminal ouvert. C'est l'inconvénient! Si quelqu'un est capable de capturer votre session (aussi probable que cela puisse être), l'accès root est gratuit! Votre décision.

Il existe une autre façon de procéder, testée et fonctionnant sur Ubuntu 16.04 LTS:

Première installation de gnome-panel:

sudo apt install gnome-panel

Ensuite, 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 vous pouvez appeler le vôtre à peu près ce que vous voulez. Entrez /usr/bin/gksu* pour le chemin 'Commande'.

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

Vous serez maintenant invité à entrer votre mot de passe; une fois que vous l'aurez entré, vous aurez accès à un terminal root fonctionnel. N'oubliez pas de ne l'utiliser que lorsque cela est absolument nécessaire et de la fermer lorsque vous en 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.

J'utilise Debian 9 stretch

Allez dans Raccourcis clavier, ajoutez une commande comme celle-ci:

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

J'avais mis Super + T comme raccourci.

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

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

Vous pouvez démarrer un shell interactif avec:

sudo -s

Pour plus d'informations, faites:

man sudo

et lisez le -s --shell section.

C’est`gnome-terminal’. Essayez donc ‘sudo gnome-terminal’.

@Guru [‘sudone devrait pas être utilisé pour exécuter des programmes graphiques comme this.](http://askubuntu.com/questions/270006/why-user-should-never-use-normal-sudo-to-start-graphical-application) Sigksu/gksudo’ n’est pas (ou pourrait ne pas être) installé, sudo-H...'(ou ' sudo-i...') peut être utilisé pour exécuter une application graphique …'comme racine.

Y a-t-il vraiment un avantage à exécuter le programme terminal lui-même en tant que root? pourquoi ne pas simplement démarrer un shell racine interactif à l’intérieur du terminal avec ‘sudo-i’?

oui, vous avez raison.