GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment exécuter le 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 exécuter un terminal en tant qu'utilisateur root dans Terminal ?

J'ai essayé d'utiliser gksudo terminal et gksu terminal mais rien ne se passe. et en exécutant sudo terminal J'obtiens l'erreur sudo: terminal: command not found .

Meilleure réponse

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

Ce que vous voulez 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 l'a suggéré Steeldriver, exécutez simplement :

sudo -i

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

Mais si vous voulez vraiment exécuter l'application d'émulation de terminal graphique en tant que root, lisez la suite. Je présente deux manières :avec gksu /gksdo , et avec le sudo commande.

Avec gksu /gksudo

Puisque vous avez le gksu package installé, vous pouvez exécuter gnome-terminal en tant que root avec l'un des éléments suivants :

gksu gnome-terminal
gksudo gnome-terminal

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

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

Pratiquement tous les environnements de bureau offrent la possibilité d'exécuter une commande sans avoir à ouvrir un terminal (qui, s'il est 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 :

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

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

Avec sudo

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

sudo -H gnome-terminal

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

  • RootSudo sur le wiki d'aide d'Ubuntu
  • Pourquoi les utilisateurs ne devraient-ils jamais utiliser sudo normal pour démarrer des applications graphiques ?

(sudo -i gnome-terminal est également correct.)

Se débarrasser du terminal non root de contrôle :

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

Connexe :Sudo ne demande plus de mot de passe ?

En effet, le terminal graphique racine reçoit SIGHUP lorsque le terminal qui le possède est quitté.

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 n'a pas besoin 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, utilisez :

sudo -v
sudo -H gnome-terminal

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

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

  1. Exécutez sudo -H gnome-terminal depuis le terminal graphique original non root.
  2. Entrez votre mot de passe comme demandé par sudo . Le terminal graphique démarre.
  3. Toujours dans le terminal non root , appuyez sur 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 . La tâche du terminal racine graphique sera à la fois non suspendue et désavouée par le terminal non racine, automatiquement.

En bref :

sudo -H gnome-terminal
^Z
exit

Mais supposons que vous souhaitiez également continuer à utiliser le terminal d'origine non root. Ensuite, vous pouvez exécuter bg N , où N est le numéro de travail du terminal racine graphique, pour reprendre le travail en arrière-plan. Vous pouvez exécuter des jobs pour trouver N mais vous n'aurez probablement pas à le faire - ce numéro a été affiché sous la forme [N] lorsque vous avez appuyé sur Ctrl +Z . Par exemple :

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

Ubuntu
  1. Comment exécuter un programme spécifique en tant que root sans invite de mot de passe ?

  2. Comment fonctionnent les composants internes de Sudo ?

  3. Comment exécuter rétroactivement un script en tant que root ?

  4. Comment changer de propriétaire pour revenir à la racine ? ?

  5. Exécutez ifconfig sans sudo

Comment installer LAMP sur Manjaro 20

Comment installer Magento sur Debian 11

Comment installer phpIPAM sur Ubuntu 20.04 LTS

Comment exécuter Dolphin en tant que root ?

Comment exécuter un alias avec Sudo sous Linux

Comment exécuter les commandes sudo sans mot de passe