Was ist der Unterschied zwischen "gksudo nautilus" und "sudo nautilus"?


100

Ich habe gksudo nautilusund sudo nautilusdurch Alt+ verwendet F2.

Was ist der Unterschied? Sie sehen sehr ähnlich aus!


eine sehr hilfreiche erklärung / diskussion mit vielen screenshots
verrückt nach natty 11.03.13


Antworten:


113

Von hier genommen :

Sie sollten niemals normal verwenden sudo, um grafische Anwendungen als root zu starten. Sie sollten gksudo( kdesudoauf Kubuntu) verwenden, um solche Programme auszuführen. gksudolegt fest HOME=/rootund kopiert .Xauthorityin ein tmpVerzeichnis. Dies verhindert, dass Dateien in Ihrem Home-Verzeichnis dem Root gehören.

Bitte beachten Sie, dass es sich hauptsächlich um Konfigurationsdateien handelt . Wenn Sie Nautilus wie root, auch mit gksu/ gksudo, ausführen und eine Datei oder einen Ordner damit erstellen (einschließlich Ihres Ausgangsverzeichnisses), wird diese Datei oder dieser Ordner Eigentum von root. Aber wenn Sie laufen Nautilus (oder die meisten anderen grafischen Anwendungen) , wie rootmit sudo, so können sie ihre speichern Konfigurationsdateien in Ihrem Home - Verzeichnis (statt root‚Home - Verzeichnis). Diese Konfigurationsdateien sind möglicherweise Eigentum von rootund können nicht aufgerufen werden, wenn Sie nicht als Root ausgeführt werden. Dies kann Ihre Einstellungen erheblich beeinträchtigen und sogar dazu führen, dass einige Anwendungen überhaupt nicht funktionieren.

Die Lösung, wenn Sie diesen Fehler gemacht haben, besteht darin, die Konfigurationsdateien zu finden und sie oder chownsie zu löschen, damit sie wieder zu Ihrem Nichtbenutzer gehören root. Viele solcher Dateien beginnen mit einem .oder befinden sich in einem Verzeichnis, das mit einem beginnt .. Einige befinden sich im .configOrdner in Ihrem Home-Verzeichnis. Um Dateien und Ordner anzuzeigen, die mit einem .in Nautilus beginnen, drücken Sie Ctrl+ H(dies zeigt versteckte Dateien an .) Um sie anzuzeigen ls, verwenden Sie das -a(oder -A) Flag.

Mit dem folgenden Befehl können Sie in einem Terminal feststellen, ob sich Dateien in Ihrem Ausgangsverzeichnis befinden, deren Eigentümer Sie nicht sind:

find $HOME -not -user $USER -exec ls -lad {} \;

Hier werden alle Dateien im Home-Verzeichnis aufgelistet, die nicht dem Benutzer gehören.


1
Ich habe schon 'sudo nautilus' benutzt. Bedeutet das, dass mein Home-Verzeichnis jetzt root gehört? (PS: Mein Englisch ist nicht perfekt)
DrKenobi

22
Nein, dies bedeutet, dass alle Dateien, die in Ihrem Home-Verzeichnis erstellt wurden, dem Root gehören, während Sie Nautilus als Root ausgeführt haben. Dies können Miniaturansichten und andere unterstützende Dateien sein, die Nautilus automatisch erstellt.
Ryan Thompson

1
. Das zitierte Segemnet, das Sie verwendet haben, hat mich verwirrt, seit ich es zum ersten Mal gelesen habe. speziell dort, wo es heißt: "Dies verhindert, dass Dateien in Ihrem Home-Verzeichnis root gehören." Ich habe dies heute getestet, indem ich einige Testdateien für 10.04, 10.04 (VM), 10.10 (VM) erstellt habe, und unabhängig davon, wie ich sudo / gksudo gestartet habe (Terminal-> Nautilus, Terminal-> gedit, Alt + F2). .) ... alle Fälle haben dazu geführt, dass mein neu erstelltes Objekt "root" gehört, mit der Gruppe "root". Vielleicht habe ich etwas verpasst, aber ich denke, dass ein Teil des angegebenen Segments irreführende Personen ist ...
Peter. O

Hmm, ich habe gerade die Wiki-Seite zitiert. Ich habe kein tiefes Verständnis für den Unterschied zwischen den beiden Werkzeugen. Vielleicht kann jemand auf unix.stakexchange.com helfen?

2
@ Peter.O Ich habe diese Antwort erweitert, um diese Frage zu beantworten und genau zu erklären, mit welchen Dateien sudoüber gksu/ anders umgegangen wird gksudo. (@ChrisWilson Sie können diese Änderung jederzeit rückgängig machen oder verkürzen, wenn Sie der Meinung sind, dass sie nicht vollständig im Rahmen Ihrer Antwort liegt. Mir scheint, dass dies der Fall ist, aber das ist ganz Ihre Aufgabe.)
Eliah Kagan


5

Wenn Sie eine grafische Anwendung mit sudo starten, können Sie den Besitz Ihrer Dateien durcheinander bringen, was dazu führen kann, dass Ihre Apps nicht mehr funktionieren. TU das niemals. Überprüfen Sie die Community-Hilfe :

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. Dies verhindert, dass Dateien in Ihrem Home-Verzeichnis Root gehören. (AFAICT, das ist das Besondere an der Umgebung des gestarteten Prozesses mit gksudo vs. sudo).


3

sudo behält standardmäßig die Variable $ HOME bei. Wenn Sie beispielsweise ausführen, werden sudo firefoxSie mit Root-Rechten ausgeführt, jedoch mit Ihrer Konfiguration. Wenn Sie in dieser Situation Einstellungen ändern, werden Teile Ihrer Konfiguration anstelle Ihrer Benutzer-ID im Besitz von root sein.


Ich mag die Durchsetzungskraft dieser Antwort.
Andre Figueiredo

2

sudo -H GUI-application-program

In Ubuntu (17.10) 17.10.1 und wahrscheinlich zukünftigen Versionen von Ubuntu gksuund gksudosind veraltet. Sie arbeiten in Xorg, aber nicht in Wayland. Sie können sudo -Hjedoch GUI-Anwendungsprogramme ausführen, ohne die Konfigurationsdateien zu beschädigen. Verwenden Sie keine normalen sudo.

Wenn Sie Wayland (das neue grafische System, das Xorg ersetzt) ​​ausführen, benötigen Sie auch einen Befehl mit xhost.

xhost +si:localuser:root       # if Wayland
sudo -H nautilus --no-desktop

Weitere Informationen finden Sie unter dem folgenden Link.

Warum funktioniert gksu / gksudo oder das Starten einer grafischen Anwendung mit sudo nicht mit Wayland?


-2

Gefunden in der vom Terminalkommando 'info gksudo' erzeugten Datei:

gksu ist ein Frontend für su und gksudo ist ein Frontend für sudo. Ihr Hauptzweck besteht darin, grafische Befehle auszuführen, die root benötigen, ohne dass ein X-Terminal-Emulator ausgeführt und su direkt verwendet werden muss.

Ich habe festgestellt, dass die "Info" -Dateien in vielen Fällen hilfreiche Beschreibungen sowie nützliche Informationen zu Optionen enthalten. Es wird dringend empfohlen, dass Sie sich zuerst mit einem Befehl vertraut machen, indem Sie auf die 'info'-Datei für diesen Befehl zugreifen.

Geben oder fügen Sie für Anfänger im Terminal die Befehlsinformationen mit dem Befehlsnamen ein, an dem Sie als Parameter interessiert sind. Das Format ist info [command_name](denken Sie daran, die Eingabeaufforderung oder die Klammern nicht einzuschließen). Empfohlene Terminaleinträge für den Anfänger sind:

$ info
$ info info

-3

Wenn Sie sich für gksudo nautilus entscheiden, fragen Sie Ihr Passwort grafisch ab. Mit sudo fragen Sie es in einem Terminal


6
Das ist nicht der einzige Unterschied und oft auch nicht der wichtigste. (Siehe einige der anderen Antworten hier.)
Eliah Kagan
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.