Wenn wir ein Programm als root ausführen wollen, verwenden wir sudo , gksu , gksudo usw. Nun ist meine Frage, wie können wir ein Terminal als Root-Benutzer in Terminal ausführen?
Ich habe es mit gksudo terminal versucht und gksu terminal aber nichts passiert. und durch Ausführen von sudo terminal Ich erhalte den Fehler sudo: terminal: command not found .
Beste Antwort
Der Standard-Terminalemulator auf Ubuntu ist das GNOME-Terminal. Es befindet sich unter /usr/bin/gnome-terminal und kann mit dem gnome-terminal ausgeführt werden Befehl.
Was Sie wirklich wollen
Was Sie wahrscheinlich wollen, ist eine Shell, die als root läuft, als wäre sie von einem root-Login erzeugt worden (zum Beispiel mit allen Umgebungsvariablen, die für root und nicht für Ihren Benutzer gesetzt sind).
Angenommen, das ist das, was Sie wollen, wie Steeldriver vorgeschlagen hat, führen Sie einfach Folgendes aus:
sudo -i
Sie haben eine Root-Shell, in der von Ihnen eingegebene Befehle als Root ausgeführt werden (ohne dass ihnen sudo vorangestellt werden muss ).
Aber wenn Sie die grafische Terminal-Emulator-Anwendung wirklich als Root ausführen möchten, lesen Sie weiter. Ich stelle zwei Möglichkeiten vor:mit gksu /gksdo , und mit dem sudo Befehl.
Mit gksu /gksudo
Da Sie die gksu
Paket installiert ist, können Sie gnome-terminal ausführen als root mit einem der folgenden:
gksu gnome-terminal
gksudo gnome-terminal
(Da gksu in Ubuntu standardmäßig auf den sudo-Modus eingestellt ist, sollten diese äquivalent sein.)
gnome-terminal wird ausgeführt als root ohne ein steuerndes Nicht-Root-Terminal:
Praktisch jede Desktop-Umgebung bietet die Möglichkeit, einen Befehl auszuführen, ohne ein Terminal öffnen zu müssen (was dann, wenn es geschlossen wäre, normalerweise dazu führen würde, dass der Befehl beendet wird).
Dies wird normalerweise mit Alt erreicht +F2 . Ein Textfeld mit der Bezeichnung Befehl ausführen (oder ähnlich) erscheint und Sie können Ihren Befehl eingeben.
In Unity sieht es beispielsweise so aus:

Und so in MATE (GNOME Flashback/Fallback, Xfce, LXDE sind ähnlich):

Beachten Sie, dass dies mit gksu funktioniert und gksudo weil sie einen grafischen Authentifizierungsdialog verwenden. Wenn Sie Alt drücken würden +F2 und führen Sie sudo ... aus , könnten Sie dann nicht mit der Passwortabfrage interagieren.
Mit sudo
Wenn Sie das gksu-Paket nicht haben und es nicht installieren möchten, können Sie Folgendes verwenden:
sudo -H gnome-terminal
Das -H Flag ist wichtig, weil es den HOME setzt Umgebungsvariable zu /root anstelle des Home-Verzeichnisses Ihres eigenen Benutzers. Das sollten Sie nicht Verwenden Sie sudo gnome-terminal da es die Gnome-Terminal-Konfiguration beschädigen kann, die dem Nicht-Root-Benutzer gehört. Weitere Informationen hierzu finden Sie unter:
- RootSudo im Ubuntu-Hilfe-Wiki
- Warum sollten Benutzer niemals das normale sudo verwenden, um grafische Anwendungen zu starten?
(sudo -i gnome-terminal geht auch.)
Das steuernde Nicht-Root-Terminal loswerden:
Wenn Sie (1) Öffnen Sie ein grafisches Terminal, (2) Führen Sie so etwas wie sudo -H gnome-terminal aus darin, um ein neues grafisches Root-Terminal zu erstellen, und (3) Beenden Sie das ursprüngliche grafische Nicht-Root-Terminal … dann wird das grafische Root-Terminal ebenfalls beendet.
Dies liegt daran, dass das grafische Root-Terminal SIGHUP sendet, wenn das Terminal, das es besitzt, beendet wird.
Um dies zu verhindern, könnten Sie denken, Sie könnten stattdessen das grafische Root-Terminal mit starten:
sudo -H gnome-terminal &
Aber das funktioniert nur, wenn sudo muss nicht nach einem Passwort fragen. Wenn dies der Fall ist, wird die Passwortabfrage nicht angezeigt.
Eine Richtung Um dies zu umgehen, verwenden Sie:
sudo -v
sudo -H gnome-terminal
sudo -v existiert nur für diesen Zweck. Wie in man sudo erklärt , es "aktualisiert die zwischengespeicherten Anmeldeinformationen des Benutzers und authentifiziert den Benutzer bei Bedarf."
Oder Sie können dies auf traditionelle Weise tun, indem Sie den Job nach dem Start anhalten:
- Führen Sie
sudo -H gnome-terminalaus vom ursprünglichen grafischen Nicht-Root-Terminal. - Geben Sie Ihr Passwort ein, wenn Sie von
sudodazu aufgefordert werden . Das grafische Terminal wird gestartet. - Immer noch im Nicht-Root-Terminal , drücken Sie Strg +Z um das Root-Terminal zu suspendieren. Während das Root-Terminal ausgesetzt ist, können Sie es nicht verwenden; seine Benutzeroberfläche reagiert nicht auf Ihre Aktionen.
- Beenden Sie das steuernde Nicht-Root-Terminal mit
exit. Der graphische Root-Terminal-Job wird vom Nicht-Root-Terminal automatisch sowohl aufgehoben als auch abgelehnt.
Kurz:
sudo -H gnome-terminal
^Z
exit
Aber nehmen Sie an, Sie wollten auch weiterhin das ursprüngliche Nicht-Root-Terminal verwenden. Dann könnten Sie bg N , wobei N ist die Jobnummer des grafischen Root-Terminals, um den Job im Hintergrund fortzusetzen. Sie können jobs ausführen um N zu finden aber das müssen Sie wahrscheinlich nicht – diese Nummer wurde als [N] wenn Sie Strg gedrückt haben +Z . Zum Beispiel:
[email protected]:~$ sudo -H gnome-terminal
[sudo] password for ek:
^Z
[1]+ Stopped sudo -H gnome-terminal
[email protected]:~$