Ich habe die Dokumentation zur Community "RootSudo" gelesen und interessiere mich für diese Zeile:
Sie sollten niemals normales sudo verwenden, um grafische Anwendungen als Root zu starten.
Warum? Was ist der Unterschied? Bitte geben Sie eine einfache Erklärung, da ich nur ein normaler Desktop-Benutzer bin.
Antworten:
Grafische Anwendungen speichern häufig Einstellungen und andere benutzerspezifischen Daten in Konfigurationsdateien innerhalb des Benutzers geschrieben Home - Ordner . Der Hauptmechanismus, mit dem Anwendungen bestimmen, was sie als Basisordner des Benutzers verwenden sollen, ist die
HOME
Umgebungsvariable . (Sie können es selbst mit inspizierenecho $HOME
).Angenommen, Sie verwenden
gedit
(einen grafischen Texteditor) alsroot
. Wenn Sie ausführensudo gedit
,HOME
wird weiterhin auf Ihr Basisverzeichnis verwiesen, obwohl das Programm als ausgeführt wirdroot
. Folglichgedit
werden Konfigurationsdateien wieroot
in Ihr Home-Verzeichnis geschrieben. Dies führt manchmal in den Konfigurationsdateien werden im Besitz vonroot
und somit unzugänglich Sie (wenn Sie das Programm später als selbst betreiben und nicht wieroot
). Dies geschieht hauptsächlich, wenn die Anwendung eine neue Konfigurationsdatei erstellen muss. Neu erstellte Dateien gehören standardmäßig dem Benutzer, der sie erstellt (in diesem Fallroot
nicht Ihnen).Dies ist der Hauptgrund, warum Sie grafische Anwendungen eher mit einem grafischen
sudo
Frontend als mit Straight ausführen solltensudo
. In Ubuntu und den meisten Derivaten (einschließlich Xubuntu und Lubuntu) ist das grafische Standard-Frontendgksu
/gksudo
. In Kubuntu ist eskdesudo
. (Dies hängt von der verwendeten Desktop-Umgebung ab .)Wenn Sie möchten , verwenden Sie
sudo
direkt eine grafische Anwendung wie zu laufengedit
, können Sie ausführen:Das
-H
Flag wird sosudo
gesetztHOME
, dass es aufroot
den Home-Ordner (der ist/root
) verweist .Das wird immer noch nicht automatisch den Besitz von handhaben,
.Xauthority
indem es in einen temporären Ordner kopiert wird (dies ist die andere Sache, die grafischesudo
Frontends für Sie erledigen ). In dem seltenen Fall, auf den nicht.Xauthority
zugegriffen werden kann, wird jedoch eine Fehlermeldung angezeigt. Anschließend können Sie das Problem beheben, indem Sie es löschen (sudo rm ~/.Xauthority
), da es automatisch neu generiert wird. Daher ist der Schutz.Xauthority
der Eigentumsrechte und Berechtigungen weniger wichtig als der Schutz der Eigentumsrechte und Berechtigungen von Konfigurationsdateien.Im Gegensatz zu a-
root
owned.Xauthority
istroot
das Problem nicht immer so offensichtlich , wenn Konfigurationsdateien als besessen werden (da grafische Programme häufig ausgeführt werden, aber nicht sehr gut funktionieren und nützliche Fehler auf der Konsole ausgeben). Und es ist manchmal ein größerer Aufwand, dies zu beheben, insbesondere wenn Sie möchten, dass eine oder mehrere Dateien in Ihrem Home-Verzeichnis einem anderen Eigentümer gehören (da Sie es dann nicht einfach durch rekursiveschown
Durchführen aller Ihrer Dateien beheben können) zurück zu dir selbst).Daher sollte
sudo
(zumindest ohne-H
) keine grafische Anwendung ausgeführt werden, es sei denn, Sie sind mit der Funktionsweise der App bestens vertraut und wissen, dass sie niemals versucht, Konfigurationsdateien zu schreiben.quelle
sudo chmod -R $USER:$USER ~
sudo chmod -R $USER ~
chmod
eigentlich? Ich dachte immer, dass es das warchown
.chmod
habe es nie für mich getan.chown
anstattchmod
in meinen kommentaren oben. Tut mir leid - und vielen Dank für diesen Hinweis!sudo -H echo $HOME
führt Ihre Shell, die als Sie und nicht als Root ausgeführt wird, eine Parametererweiterung durch$HOME
, ermittelt den Pfad Ihres Basisverzeichnisses und übergibt diesen ansudo
, der wiederum den bereits erweiterten Wert an übergibtecho
und ihn ausgibt.sudo -H printenv HOME
,sudo -H bash -c 'echo $HOME'
undsudo -H sh -c 'echo $HOME'
alle drucken/root
. Dies ist konzeptionell ähnlich - allerdings durch einen anderen Mechanismus - wiex=a echo "$x"
nicht gedruckt wirda
(es sei denn,x
der Wert war bereits vorhandena
).Einfach gesagt:
Lies es hier . Möglicherweise auch ein Duplikat von Was ist der Unterschied zwischen "gksudo nautilus" und "sudo nautilus"?
quelle
Eine Alternative zu
gksu nautilus
undgksu gedit
ist die Verwendung einesnautilus-admin
Add-Ons. Es ermöglicht Ihnen, Dateien und Verzeichnisse mit Nautilus zu durchsuchen und sie dann als root (Administrator) zu öffnen.Die Installation ist einfach:
Wenn Sie sich jetzt in Nautilus befinden, haben Sie eine zusätzliche Option zum Bearbeiten als Administrator:
gedit
als root erlaubt keine EinstellungenWenn Sie
gedit
als Root ausgeführt werden, können Sie die von Ihnen als normaler Benutzer festgelegten Einstellungen für Tabstopps, Konvertieren von Tabstopps in Leerzeichen, Schriftname, Schriftgröße, Zeilenumbruch usw. nicht verwenden.Um dies zu lösen, habe ich das Skript geschrieben
sgedit
, um die Benutzereinstellungen zu erben und sie auf root anzuwenden: Wie kann ich mein root-gedit mit den Einstellungen meines Benutzers gedit synchronisieren?sgedit filename1 filename2 ...
sudo -H
um den Dateieigentum zu erhalten und gleichzeitig Root- Rechte zu erhalten.sudo
abgelaufen ist.gedit
als Hintergrundaufgabe auf, sodass die Eingabeaufforderung des Terminals sofort wieder angezeigt wird.quelle