Wie starte ich Terminal als root?

35

Wenn wir wollen , ein Programm als root ausführen wir verwenden sudo, gksu, gksudousw. Nun meine Frage ist , wie können wir einen Terminal als Root - Benutzer im Terminal laufen?

Ich habe versucht mit gksudo terminalund gksu terminalaber nichts passiert. und beim laufen sudo terminalbekomme ich fehler sudo: terminal: command not found.

αғsнιη
quelle
4
Es ist gnome-terminal. Also versuch es sudo gnome-terminal.
g_p
1
Gibt es wirklich einen Vorteil, wenn Sie das Terminalprogramm selbst als root ausführen? warum nicht einfach eine interaktive root-shell im terminal mit starten sudo -i?
Steeldriver
2
@Guru sudosollte nicht verwendet werden, um solche Grafikprogramme auszuführen. Wenn gksu/ gksudonicht installiert ist (oder möglicherweise nicht installiert ist ), kann sudo -H ...(oder sudo -i ...) eine grafische Anwendung ...als Root ausgeführt werden.
Eliah Kagan
Ja du hast Recht.
g_p

Antworten:

53

Der Standard-Terminal-Emulator unter Ubuntu ist das GNOME-Terminal . Es befindet sich unter /usr/bin/gnome-terminalund kann mit dem gnome-terminalBefehl ausgeführt werden.

Was Sie wirklich wollen

Was Sie wahrscheinlich wollen, ist eine Shell, die als root ausgeführt wird, als ob sie von einem root-Login erstellt worden wäre (zum Beispiel mit allen Umgebungsvariablen, die für root und nicht für Ihren Benutzer festgelegt wurden).

Angenommen, Sie möchten, wie von steeldriver vorgeschlagen , Folgendes ausführen:

sudo -i

Sie haben eine Root-Shell, in der die von Ihnen eingegebenen Befehle als Root ausgeführt werden (ohne dass sie vorangestellt werden müssen sudo).

Wenn Sie die grafische Terminalemulator-Anwendung jedoch wirklich als Root ausführen möchten, lesen Sie weiter. Ich präsentiere zwei Möglichkeiten: mit gksu/ gksdound mit dem sudoBefehl.

Mit gksu/gksudo

Da Sie das gksu-Installieren Sie gksu Paket installiert haben, können Sie gnome-terminalals root eines der folgenden Programme ausführen :

gksu gnome-terminal
gksudo gnome-terminal

(Da gksuin Ubuntu standardmäßig der Sudo-Modus eingestellt ist, sollten diese gleichwertig sein.)

Laufen gnome-terminalals root ohne kontrollierendes 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 wird, in der Regel dazu führt, dass der Befehl beendet wird).

Dies wird normalerweise mit Alt+ erreicht F2. Ein Textfeld mit der Bezeichnung Befehl ausführen (oder ähnliches) wird angezeigt, und Sie können Ihren Befehl eingeben.

In Unity sieht es beispielsweise so aus:

Führen Sie in Unity ein Befehlstextfeld aus

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

Dialogfeld "Befehl ausführen" in MATE

Beachten Sie, dass dies mit gksuund funktioniert, gksudoda sie einen grafischen Authentifizierungsdialog verwenden. Wenn Sie Alt+ drücken F2und ausführen sudo ..., können Sie 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 -HFlag ist wichtig, da es die HOMEUmgebungsvariable auf /rootanstelle des Basisverzeichnisses des eigenen Benutzers setzt. Sie sollten nicht verwenden, sudo gnome-terminalda dies die Konfiguration des Gnome-Terminals des Nicht-Root-Benutzers beschädigen kann. Weitere Informationen hierzu finden Sie unter:

( sudo -i gnome-terminalIst auch in Ordnung.)

Das kontrollierende Nicht-Root-Terminal loswerden:

Wenn Sie (1) ein Grafikterminal öffnen, (2) so etwas wie sudo -H gnome-terminaldarin ausführen , um ein neues Grafikterminal zu erstellen, und (3) das ursprüngliche Nicht-Root-Grafikterminal beenden, wird auch das Root-Grafikterminal beendet .

Dies liegt daran, dass dem grafischen Root-Terminal SIGHUP gesendet wird, wenn das Terminal, dessen Eigentümer es ist, beendet wird.

Um dies zu verhindern, könnten Sie denken, Sie könnten das grafische Root-Terminal stattdessen mit folgendem Befehl starten:

sudo -H gnome-terminal &

Dies funktioniert sudojedoch nur, wenn Sie nicht zur Eingabe eines Kennworts aufgefordert werden müssen. In diesem Fall wird die Passwortabfrage nicht angezeigt.

Eine Möglichkeit , dies zu umgehen, besteht darin, Folgendes zu verwenden:

sudo -v
sudo -H gnome-terminal

sudo -vexistiert nur für diesen Zweck. Wie unter man sudo"Aktualisieren der zwischengespeicherten Anmeldeinformationen des Benutzers und Authentifizieren des Benutzers, falls erforderlich" erläutert .

Beachten Sie, dass dies immer noch nicht funktioniert, wenn Sie direkt über das Feld Alt+ F2"Befehl ausführen" Ihrer Desktop-Umgebung ausgeführt werden, da Sie immer noch ein Terminal benötigen, für das Sie Ihr Kennwort eingeben können sudo -v.

Oder man kann es intunwas könnte die traditionelle ArtWeise genannt werden, durch den Auftrag zur Aussetzung nach dem Start:

  1. Führen Sie sudo -H gnome-terminalvom ursprünglichen grafischen Terminal ohne Rootberechtigung aus.
  2. Geben Sie Ihr Passwort ein, wenn Sie dazu aufgefordert werden sudo. Das Grafikterminal wird gestartet.
  3. Drücken Sie im Nicht-Root-TerminalCtrl + Z, um das Root-Terminal anzuhalten. Solange das Root-Terminal angehalten ist, können Sie es nicht verwenden. Die Benutzeroberfläche reagiert nicht auf Ihre Aktionen.
  4. Beenden Sie das steuernde Nicht-Root-Terminal mit exit. Der grafische Root-Terminal-Job wird vom Nicht-Root-Terminal automatisch sowohl nicht suspendiert als auch abgelehnt.

Zusamenfassend:

sudo -H gnome-terminal
^Z
exit

Angenommen, Sie möchten weiterhin das ursprüngliche Nicht-Root-Terminal verwenden. Anschließend können Sie ausführen , wo sich die Auftragsnummer des grafischen Root-Terminals befindet, um den Auftrag im Hintergrund fortzusetzen. Du kannst rennen , um zu finden, aber du musst es wahrscheinlich nicht - diese Nummer wurde so angezeigt, als du + gedrückt hast . Beispielsweise: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
quelle
Ich kann auch vorbei laufen xterm. Wie viele Terminals gibt es in Ubuntu?
αғsнιη
@ Kasiya viel. Ich habe mal mit 25 aufgehört zu zählen. Putty, Terminator werden auch oft verwendet.
Rinzwind
6

Kurze Antwort:

gksudo gnome-terminal
(assuming gksu is installed)

öffnet ein Terminal als root:

root@jacob-Satellite-L300:~#

Sie müssen nicht erklären, dass Sie damit ein beliebiges Terminal wie dieses als root öffnen können . wie Vala ( gksudo vala-terminal), Xterm ( gksudo xterm), Termit ( gksudo termit), UXTerm ( gksudo uxterm), Konsole ( gksudo konsole) und so weiter.

Jacob Vlijm
quelle
1
Was ist damit sudo x-terminal-emulator?
αғsнιη
@KasiyA Sie sollten immer noch verwenden gksu x-terminal-emulator, gksudo x-terminal-emulator, kdesudo x-terminal-emulator(wenn Ihre Desktop - Umgebung KDE), sudo -H x-terminal-emulatoroder sudo -i x-terminal-emulatorstattdessen, um dieses Problem zu vermeiden . Ebenso sudo geditsollte nicht geditals root ausgeführt werden.
Eliah Kagan
2

Wie bereits erwähnt, werden Sie gefragt, wie Sie Terminal als Root ausführen möchten. Mit größerer Wahrscheinlichkeit möchten Sie jedoch die grafische Terminal-Anwendung als normalen Benutzer ausführen und eine Root-Shell starten, in der Sie als Root angemeldet sind. Auf diese Weise werden der grafischen Terminalanwendung keine Root-Rechte gewährt. Die vorherigen Antworten scheinen keine eindeutigen Befehlszeilen zu geben, daher verwende ich die folgenden Informationen.

Mit xterm

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

Das '-e sudo -i' weist xterm an, in der Sitzung auf root zu wechseln, und die Farben sollen nur deutlich machen, dass es sich um eine Root-Shell handelt.

Mit dem Gnome Terminal

gnome-terminal -- sudo -i

Persönlich binde ich Gnome-Tastenkombinationen, um Terminals einfach zu starten

Gehen Sie zu den Tastatureinstellungen, fügen Sie eine benutzerdefinierte Verknüpfung mit der Tastenkombination Super + X und dem Befehl 'xterm -bg black -fg white -sb -sl 5000' hinzu und root-xterm mit der Tastenkombination Super + Z und dem Befehl 'xterm -bg black -fg red - sb -sl 5000 -e sudo -i '.

In der Vergangenheit habe ich xterm dem Gnome-Terminal vorgezogen, weil die Schriftart klein und einfach ist, aber ich komme jetzt zum Terminal, wo ich große Bildschirme mit hohen DPI-Werten verwende. Die Farbcodierung Ihrer Terminals ist eine sehr gute Idee, wenn Sie verschiedene Profile mit gefährlichen Konsequenzen ausführen, um Unfälle zu vermeiden (z. B. lokales Stammverzeichnis, Remoteclient-Computer, Remoteclient-Stammverzeichnis).

Neek
quelle
0

Es gibt einen anderen Weg, dies zu tun, getestet und auf Ubuntu 16.04 LTS zu arbeiten:

Installiere zuerst gnome-panel:

sudo apt install gnome-panel

Dann installiere gksu:

sudo apt install gksu

Führen Sie nach Abschluss der Installation Folgendes aus:

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

Dadurch wird eine Desktop-Verknüpfung erstellt. Sie sollten die Option haben, es zu benennen. Ich habe meinen 'X-Term' genannt, aber du kannst deinen so ziemlich wie du willst anrufen. Geben Sie /usr/bin/gksu* als Befehlspfad ein.

Wenn Sie Ihre neue Desktop-Verknüpfung starten, werden Sie aufgefordert, eine Anwendung auszuführen. Geben Sie in: xterm.

Sie werden nun aufgefordert, Ihr Passwort einzugeben. Sobald Sie es eingegeben haben, haben Sie Zugriff auf ein funktionierendes Root-Terminal. Denken Sie daran, es nur zu verwenden, wenn es unbedingt erforderlich ist, und schließen Sie es, wenn Sie damit fertig sind.

* Angenommen, Sie haben Ubuntu mit den Standardeinstellungen installiert und seit der Installation keine wesentlichen Änderungen an den Dateisystemen vorgenommen.

Peter David Carter
quelle
0

Ich verwende Debian 9 stretch

Gehen Sie zu den Tastaturkürzeln und fügen Sie einen Befehl wie den folgenden hinzu:

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

Ich hatte Super + Tals Abkürzung gesetzt.

Wenn Sie jetzt jedes Mal ein Terminal als Root öffnen möchten, geben Sie einfach Ihre Verknüpfung ein

Ich hoffe es kann jemandem in Zukunft helfen

Alex
quelle
-1

Sie können eine interaktive Shell starten mit:

sudo -s

Weitere Informationen erhalten Sie unter:

man sudo

und lesen Sie den -s --shellAbschnitt.

user465589
quelle