gksu (do) hat auch eine eigene Konfiguration der Umgebungsvariablen, die an das untergeordnete Element übergeben werden sollen, und zwar unabhängig von der Konfiguration von su (do). Wenn Ihre sudoers-Konfiguration beispielsweise! Keep_env angibt, kann das Fehlen von $ DISPLAY die Ausführung grafischer Anwendungen verhindern, aber gksudo sollte funktionieren. Sie finden einige Details unter git.debian.org/?p=users/kov/gksu-polkit.git;a=blob;f=common/… oder live.gnome.org/gksu .
Ephemient
@ephemient Ist also neben der grafischen Eingabeaufforderung sudo -Egleichbedeutend mit gksudo?
Ich möchte betonen, dass dies überhaupt nicht der entscheidende Unterschied ist, und diese Antwort ist für Neulinge ziemlich irreführend. Der Hauptunterschied wird hier erklärt: askubuntu.com/a/11766/81034 und die Antwort unten (die mit @johnywhy verknüpft ist) geht einen Schritt darüber hinaus, um dem etwas Nuance hinzuzufügen. Bitte lesen Sie die askubuntu-Frage, anstatt sich auf diese irreführende Antwort zu verlassen.
Sundar - Wiedereinsetzung von Monica
31
gksudoist ein GTK-basiertes Frontend von sudo(BTW,kdesudo ist ein Qt-basiertes Front - End), aber es ist (Vorgabe) Griffe mehr Umgebungsvariablen ( HOME, XAUTHORITY, etc.) als sudoso ausgeführt Befehle als Root sicherer zu machen.
Soweit ich sehen kann, ist nur die Antwort von @Logics richtig genug (@Ignacio Vazquez-Abrams ist nicht vollständig). Hier ist der Versuch, eine Klärung zu vermeiden, um @Davros @knitti Antwort / Kommentare (Bitte entfernen / bearbeiten Sie sie, wenn es nicht benötigt wird):
Obwohl beide Befehle tatsächlich repräsentativ sind sudo, ist die verwendete Benutzeroberfläche NICHT der einzige Unterschied zwischen den beiden Befehlen.
Das Ausführen eines GUI - Programms ist NICHT die einzige Situation, in der Sie gk / kdesudo verwenden sollten. Stattdessen sollten Sie gk / kdesudo immer dann verwenden, wenn Sie nicht bestimmen können, ob der Befehl Dateien in Ihr Home - Verzeichnis erstellt / schreibt (auf das die HOMEUmgebungsvariable im Verzeichnis verweist) sudoBefehl in einigen Systemen und Situationen). Nicht alle GUI-Apps schreiben in Ihr Home-Verzeichnis und nicht alle CLI-Apps schreiben in Ihr Home-Verzeichnis. Daher ist der Befehlstyp nicht der entscheidende Punkt.
Sie kann immer noch verwendet sudoBefehl zum Start GUI - Anwendungen als root (für Apps' Konsolenausgabe als Beispiel sehen), jedoch müssen Sie Griff HOME(und andere, wie XAUTHORITY, DISPLAY, Input-Methode-related-Material, etc.) Umgebungsvariablen richtig so dass die gestartete App nicht versagt, ihre Funktionalität verliert oder wirklich schlechte Sachen macht. Das Folgende ist meine aktuelle Empfehlung für die Verwendungsudo
sudo -H <rest of the command>
(ab sudoHandbuchseite von Abschnitt 8) Die -H ( HOME )Option fordert, dass die Sicherheitsrichtlinie die HOMEUmgebungsvariable auf das Basisverzeichnis des Zielbenutzers (standardmäßig root) setzt, wie in der Kennwortdatenbank angegeben. Abhängig von der Richtlinie kann dies das Standardverhalten sein.
Dies sollte zumindest verhindern, dass Dateien im sudoAusgangsverzeichnis des Anrufers erstellt werden
sudo -H DISPLAY=<a working X display name, usually :0> <rest of a GUI program command>
Dadurch sollte <GUI-Programm> in einem TTY-Terminal ausgeführt und in Ihrer Desktop-Umgebung angezeigt werden
Das Verhalten des sudoBefehls ist nicht auf allen Systemen identisch und kann über den visudoBefehl konfiguriert werden. sudoers(5)Weitere Informationen finden Sie auf der Manpage.
scheint eine viel bessere Erklärung zu sein als die, die alle Stimmen bekommt. gründlicher, korrekter. Sogar das OP antwortete: "Ist das alles?" auf die Antwort, die alle Stimmen bekam.
Johny, warum
2
Die Verwendung von regulärem Sudo zum Ausführen von Grafikprogrammen führt in seltenen Fällen zu einer Verfälschung der Berechtigungen für einige Dateien. Aus Sicherheitsgründen sollte gksudo (oder gegebenenfalls kdesudo) zum Ausführen von Programmen mit einer GUI verwendet werden. Ich denke, das ist wirklich ein Fehler, obwohl ich Erklärungen gehört habe, dass gksudo X-Servervariablen versteht und sudo möglicherweise nicht zu Problemen führt. Nur als Tipp; Wenn Sie grafische Programme als root ausführen, geben Sie ALT-F2 (Alt und Funktionstaste 2 gleichzeitig) ein, anstatt ein Terminal für jedes Programm zu öffnen, das Sie ausführen möchten, und geben Sie dann in das Dialogfeld "gksudo" ein Programm "ohne die Anführungszeichen und das Programm, das durch die Anwendung ersetzt wurde, die Sie ausführen möchten.
sudo wird als aktueller Benutzer mit erhöhten Rechten ausgeführt. Dies hat das Potenzial, die Dateiberechtigungen bestimmter Benutzerkonfigurationsdateien (in Bezug auf Ihre grafische Umgebung) zu ändern, wenn grafische Apps ausgeführt werden. Möglicherweise treten Fehler auf, wenn Sie diese Apps erneut ohne sudo ausführen.
gksudo (kdesudo unter KDE) führt die Apps als Root-Benutzer aus, sodass alle betroffenen Dateiberechtigungen für Root-Dateien gelten und nicht für die Benutzerdateien. Wenn Sie diese Apps ohne gksudo / kdesudo erneut ausführen, wird immer das erwartete Verhalten erzielt.
"Sie sollten niemals normales sudo verwenden, um grafische Anwendungen als root zu starten. Sie sollten gksudo (kdesudo auf Kubuntu) verwenden, um solche Programme auszuführen. Gksudo setzt HOME = ~ root und kopiert .Xauthority in ein tmp-Verzeichnis. Dadurch werden Dateien in Ihrem home verhindert Verzeichnis wird Eigentum von root (AFAICT, das ist alles, was das Besondere an der Umgebung des gestarteten Prozesses mit gksudo vs. sudo ist). "
Es gibt vier weitere Antworten. welches ist falsch? Ist Ihre Antwort nicht im Wesentlichen dieselbe wie die von Davros?
Fixer1234
Ich bezog mich auf die Antwort, die als richtig markiert wurde. Ja, Davros sagt dasselbe, aber ich fügte dies hinzu, weil er keinen Link zu einer Quelle enthielt.
Eugene1832
1
Eine bessere Lösung wäre, eine Änderung dieser Antwort vorzuschlagen. Das Verbessern einer Antwort wird wahrscheinlich akzeptiert (+2 Wiederholungen), während das Duplizieren einer Antwort im Wesentlichen Downvotes anzieht.
Antworten:
sudo
fragt in der Befehlszeile nach dem Kennwort undgksudo
öffnet ein Dialogfeld dafür.quelle
sudo -E
gleichbedeutend mitgksudo
?gksudo
ist ein GTK-basiertes Frontend vonsudo
(BTW,kdesudo
ist ein Qt-basiertes Front - End), aber es ist (Vorgabe) Griffe mehr Umgebungsvariablen (HOME
,XAUTHORITY
, etc.) alssudo
so ausgeführt Befehle als Root sicherer zu machen.Soweit ich sehen kann, ist nur die Antwort von @Logics richtig genug (@Ignacio Vazquez-Abrams ist nicht vollständig). Hier ist der Versuch, eine Klärung zu vermeiden, um @Davros @knitti Antwort / Kommentare (Bitte entfernen / bearbeiten Sie sie, wenn es nicht benötigt wird):
sudo
, ist die verwendete Benutzeroberfläche NICHT der einzige Unterschied zwischen den beiden Befehlen.HOME
Umgebungsvariable im Verzeichnis verweist)sudo
Befehl in einigen Systemen und Situationen). Nicht alle GUI-Apps schreiben in Ihr Home-Verzeichnis und nicht alle CLI-Apps schreiben in Ihr Home-Verzeichnis. Daher ist der Befehlstyp nicht der entscheidende Punkt.sudo
Befehl zum Start GUI - Anwendungen als root (für Apps' Konsolenausgabe als Beispiel sehen), jedoch müssen Sie GriffHOME
(und andere, wieXAUTHORITY
,DISPLAY
, Input-Methode-related-Material, etc.) Umgebungsvariablen richtig so dass die gestartete App nicht versagt, ihre Funktionalität verliert oder wirklich schlechte Sachen macht. Das Folgende ist meine aktuelle Empfehlung für die Verwendungsudo
sudo -H <rest of the command>
sudo
Handbuchseite von Abschnitt 8) Die-H ( HOME )
Option fordert, dass die Sicherheitsrichtlinie dieHOME
Umgebungsvariable auf das Basisverzeichnis des Zielbenutzers (standardmäßig root) setzt, wie in der Kennwortdatenbank angegeben. Abhängig von der Richtlinie kann dies das Standardverhalten sein.sudo
Ausgangsverzeichnis des Anrufers erstellt werdensudo -H DISPLAY=<a working X display name, usually :0> <rest of a GUI program command>
sudo
Befehls ist nicht auf allen Systemen identisch und kann über denvisudo
Befehl konfiguriert werden.sudoers(5)
Weitere Informationen finden Sie auf der Manpage.quelle
Die Verwendung von regulärem Sudo zum Ausführen von Grafikprogrammen führt in seltenen Fällen zu einer Verfälschung der Berechtigungen für einige Dateien. Aus Sicherheitsgründen sollte gksudo (oder gegebenenfalls kdesudo) zum Ausführen von Programmen mit einer GUI verwendet werden. Ich denke, das ist wirklich ein Fehler, obwohl ich Erklärungen gehört habe, dass gksudo X-Servervariablen versteht und sudo möglicherweise nicht zu Problemen führt. Nur als Tipp; Wenn Sie grafische Programme als root ausführen, geben Sie ALT-F2 (Alt und Funktionstaste 2 gleichzeitig) ein, anstatt ein Terminal für jedes Programm zu öffnen, das Sie ausführen möchten, und geben Sie dann in das Dialogfeld "gksudo" ein Programm "ohne die Anführungszeichen und das Programm, das durch die Anwendung ersetzt wurde, die Sie ausführen möchten.
quelle
sudo wird als aktueller Benutzer mit erhöhten Rechten ausgeführt. Dies hat das Potenzial, die Dateiberechtigungen bestimmter Benutzerkonfigurationsdateien (in Bezug auf Ihre grafische Umgebung) zu ändern, wenn grafische Apps ausgeführt werden. Möglicherweise treten Fehler auf, wenn Sie diese Apps erneut ohne sudo ausführen.
gksudo (kdesudo unter KDE) führt die Apps als Root-Benutzer aus, sodass alle betroffenen Dateiberechtigungen für Root-Dateien gelten und nicht für die Benutzerdateien. Wenn Sie diese Apps ohne gksudo / kdesudo erneut ausführen, wird immer das erwartete Verhalten erzielt.
quelle
Die aktuelle Antwort ist falsch. Laut dem Ubuntu RootSudo Wiki :
"Sie sollten niemals normales sudo verwenden, um grafische Anwendungen als root zu starten. Sie sollten gksudo (kdesudo auf Kubuntu) verwenden, um solche Programme auszuführen. Gksudo setzt HOME = ~ root und kopiert .Xauthority in ein tmp-Verzeichnis. Dadurch werden Dateien in Ihrem home verhindert Verzeichnis wird Eigentum von root (AFAICT, das ist alles, was das Besondere an der Umgebung des gestarteten Prozesses mit gksudo vs. sudo ist). "
quelle