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-terminal
aus vom ursprünglichen grafischen Nicht-Root-Terminal. - Geben Sie Ihr Passwort ein, wenn Sie von
sudo
dazu 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]:~$