Ich bin relativ neu in Ubuntu. Ich habe festgestellt, dass in den Antworten auf dieser Site, wenn Leute vorschlagen, Systemdateien zu bearbeiten, der Befehl, den sie geben, immer sudo nano
oder ist sudo vi
. Da ich Terminal-basierte Texteditoren nicht mag, verwende ich normalerweise
sudo -H gedit
stattdessen, und bis jetzt hat es einwandfrei funktioniert.
Kann es jemals Probleme bei gedit
der Bearbeitung von Systemdateien geben oder liegt die Wahl des Texteditors ausschließlich in den Vorlieben der Person? Gibt es etwas, das ich beim Bearbeiten dieser Dateien beachten sollte (z. B. Codierung)?
command-line
sudo
gedit
Shinobody
quelle
quelle
-H
Teil ist wichtig , nicht verwendensudo
, um GUI-Anwendungen ohne ihn zu starten.Antworten:
Solange Sie es richtig ausführen, ist es eine Frage Ihrer Präferenz.
Abgesehen von den unterschiedlichen Funktionen ist der von Ihnen verwendete Texteditor in der Tat Ihre Präferenz. Dies gilt auch dann, wenn Ihr Texteditor ein grafisches Programm wie Gedit ist . Das heißt nicht, dass es keinen guten Grund gibt
nano
undvim
oft empfohlen wird. Terminalbasierte Texteditoren mögenvim
(oder zumindest einenvi
Befehl) undnano
sind auch dann verfügbar, wenn keine GUI vorhanden ist und selbst auf den meisten sehr minimalen und kaputten Systemen ; Sie haben eine Tradition hinter sich (wenn Sie an solchen Dingen interessiert sind). Sie können in demselben Terminal ausgeführt werden, in dem andere Aufgaben ausgeführt werden. Sie werden automatisch in die Workflows der Terminal-Multiplexer- Benutzer integriert . und sie sind eher verfügbar als alle anderenspezieller grafischer Texteditor, sogar Gedit, sogar unter Ubuntu (das verschiedene Varianten hat ).Das ist nicht alles. Wenn Sie Systemdateien bearbeiten möchten, besteht ein Ansatz darin, Ihren Editor als Root auszuführen. Dies ist nicht der einzige Ansatz, und es gibt einige Argumente dagegen (siehe unten), aber er ist weit verbreitet. Wenn Sie diesen Ansatz wählen und ein grafisches Programm als Editor verwenden, müssen Sie darauf achten , dass es so ausgeführt wird, dass
$HOME
es das Ausgangsverzeichnis von root und nicht Ihr eigenes ist. Dies erhöht die Komplexität und Komplexität zusätzlich. Aber das machst du schon; Du rennstsudo -H gedit
, was eine der vernünftigen Möglichkeiten ist . Diese Komplexität ist jedoch ein weiterer Grund, warum Menschen dazu neigen, nicht grafische Editoren vorzuschlagen.Grafische Programme sind oft komplizierter als nicht grafische Programme. Es ist im Allgemeinen schlecht, wenn mehr Material als Root ausgeführt wird, da es mehr Möglichkeiten gibt, wie etwas schief gehen kann, auch aufgrund möglicher Fehler, auch aus Versehen. (Nicht-grafische Texteditoren, wie sie auch
vim
sehr ausgefeilt sind und häufig so konfiguriert sind, dass sie zahlreiche externe Programme ausführen, um verschiedene Aufgaben auszuführen.)Neben dem Ausführen des Editors als Root besteht ein weiterer allgemeiner Ansatz darin, eine Datei zu bearbeiten, die der Editor auch dann ändern kann, wenn er als Benutzer (ohne Root) ausgeführt wird, sodass Änderungen an der Datei an die gewünschte Root-Datei weitergegeben werden wechseln. Das klingt abstrakt, weil die Besonderheiten erheblich variieren. Es folgen zwei wichtige konkrete Ansätze.
sudoedit
Ein ziemlich langjähriger Weg, dies zu tun, ist
sudoedit
(dokumentiert auf derselben Handbuchseite wiesudo
). Standardmäßigsudoedit
verwendet den Texteditor Standard , die in der Regel nicht der Fall ist - und sollte nicht sein - ein grafisches Programm. Aber man kann sagen , es mit einem beliebigen Editor durch die verwendenSUDO_EDITOR
,VISUAL
oder dieEDITOR
Umgebungsvariablen , die es in dieser Reihenfolge konsultiert. So können Sie ausführen:Ersetzen Sie
filename
durch einen relativen oder absoluten Pfad zu Ihrer Datei.Dadurch wird eine temporäre Kopie der Datei erstellt, die Sie bearbeiten möchten. Die Kopie gehört Ihnen, nicht root (oder wer auch immer der ursprüngliche Besitzer ist). Es öffnet den Texteditor und Sie können die temporäre Kopie bearbeiten. Wenn Sie schließen Sie den Texteditor,
sudoedit
überprüft , ob Sie tatsächlich Änderungen vorgenommen. In diesem Fall wird die geänderte temporäre Kopie wieder in das Original kopiert .Funktioniert zwar
sudoedit
mit grafischen Editoren, ist aber auch für terminalbasierte Editoren nützlich. In beiden Fällen, wie Sie den Text - Editor läuft, so hat es die Konfiguration und andere Aktionen , die Sie darin ausführen andere als die in dieser Datei vorgenommenen Änderungen von Ihnen durchgeführt werden, das bietet ein wenig Schutz gegen einige Arten von Fehlern.Sie können eine dieser Umgebungsvariablen dauerhaft festlegen, wenn Sie möchten.
SUDO_EDITOR
ist vielleicht das Beste, da es für weniger andere Dinge verwendet wird. Wenn Sie es jedoch so einstellengedit
, denken Sie daran , dass Befehle wie nicht funktionieren, wenn keine GUI verfügbar ist, wie dies häufig (wenn auch nicht immer ) in einer virtuellen Konsole oder über SSH der Fall ist .sudoedit filename
Das GVFS-Administrator-Backend
Eine andere neuere Möglichkeit, dies zu tun, besteht darin, die Datei über ihren GVFS-
admin://
Pfad und nicht über ihren traditionellen Unix-Pfad zu öffnen . Danke an pomsky, dass du mir das beigebracht hast. So wie es GVFS-Pfade zum Bearbeiten von Dateien gibt, die sich ansonsten nicht an einem geeigneten Ort zum Bearbeiten befinden - beispielsweise weil sie sich auf einem Remotecomputer befinden, mit dem Sie über SSH verbunden sind -, unterstützt GVFSadmin://
Pfade zum Bearbeiten von Dateien du besitzt nicht.Dies ähnelt konzeptionell darin,
sudoedit
dass Sie Ihren Editor als sich selbst ausführen und die Datei, die der Editor sieht, bearbeitet werden darf. Um die Datei zu öffnen, müssen Sie sich authentifizieren. Dies ist kein magischer Weg, um übliche Sicherheitsbeschränkungen zu umgehen.Es
/path/to/filename
muss einen absoluten Pfad zur Datei geben, beginnend mit/
. Es gibt also drei/
Zeichen danachadmin:
.Codierungen und andere Dinge, die theoretisch von der Editor-Konfiguration betroffen sind
Die Codierung einer Datei wird nicht wirklich davon beeinflusst, ob der von Ihnen verwendete Editor grafisch ist oder nicht. Einige Editoren können
vim
sogar grafisch (dergvim
Befehl) oder nicht grafisch (dervim
Befehl) arbeiten. Die einfache Antwort auf Ihre Frage zu Codierungen lautet, dass Sie sich darüber keine Sorgen machen müssen. Das ist nah genug an der Wahrheit, dass Sie den Rest dieser Antwort wirklich nicht lesen müssen.In aktuellen (und früheren) Ubuntu-Versionen mögen Befehle diese Editoren
sudo nano
undsudo vim
führen sie als root aus, haben sich aber immer$HOME
noch auf Ihr Home-Verzeichnis festgelegt. Dies bedeutet, dass die Editoren standardmäßig Ihre Konfiguration anstelle der Root-Konfiguration verwenden. Wenn sich in Ihrer Konfiguration dieser Editoren (oder in einem Programm, das sie ausführen, um einen Teil ihrer Arbeit zu erledigengit
) etwas über Codierungen oder Zeilenenden befindet , wird dies befolgt. Mit wird das nicht passieren.sudo -H editor
Einige Leute verwenden nackte
sudo
(dh ohne-i
oder-H
) für Redakteure, weil sie das wollen. Aber wirklich, Sie sollten zweimal darüber nachdenken. Mit einer Methode wie können Sie dieses Ziel nicht nur sauberer erreichensudoedit
, es gibt auch andere Nachteile von Befehlen wiesudo nano
undsudo vim
:Wenn Ihre Editor-Konfiguration dazu führt, dass etwas ausgeführt wird, wird dies als root ausgeführt. Für anspruchsvolle Editoren wie
vim
kann dies dazu führen, dass ziemlich viel nicht trivialer Code als Root ausgeführt wird. Wie oben erwähnt, ist es im Allgemeinen gut, weniger Code als Root auszuführen, und dies ist eines der Argumente gegen die Ausführung von Grafikeditoren als Root.Wenn Ihre
vim
Konfiguration über zahlreiche Plugins verfügt, z. B. um während der Eingabe eine statische Analyse des Quellcodes durchzuführen, und die von root nicht, werden weniger Inhalte als root ausgeführt als . (Noch weniger läuft als root mit , aber Ihre Plugins funktionieren immer noch!) Dies unterscheidet sich davon, ob Ihr Editor grafisch ist oder nicht.sudo -H vim filename
sudo vim filename
VISUAL=vim sudoedit filename
Wenn Ihre Editor-Konfiguration fehlerhaft ist und Sie nicht einfach Dateien bearbeiten können, kann dies noch problematischer sein, da dies auch für root gilt. Dies ist nur ein Ärger, kein schwer zu lösendes Problem.
Befehle wie
sudo vim
haben ein bisschen das gleiche Problem wie der (schlecht beratene!) Befehlsudo gedit
. Wenn Sie einen Editor wie ausgeführtvim
als root aber ohne Zurücksetzen$HOME
(wiesudo -H
undsudo -i
tun würde), und es erzeugt Konfigurationsdateien für sich selbst , werden diese Konfigurationsdateien in Ihrem Home - Verzeichnis befinden , aber werden sie im Besitz von root werden, und die Konfiguration kann etwas gebrochen wenn Sie den Editor später als Sie selbst ausführen.Nun, das klingt sicher sehr nach diesem Problem! Der Grund dafür, dass es weniger wichtig ist als bei grafischen Anwendungen, ist, dass der Editor normalerweise immer noch startet, die Fehlermeldungen normalerweise leichter zu verstehen sind, Sie normalerweise leichter herausfinden können, welche bestimmten Dateien betroffen sind, und dass der Bruch normalerweise darauf beschränkt ist dieses eine Programm. (Grafikprogramme verwenden Konfigurationsdateien an mehreren Stellen.) Im Gegensatz zu Grafikeditoren ist es außerdem ziemlich unwahrscheinlich , dass Benutzer, die nur gelegentlich einen Texteditor verwenden und dessen Konfiguration nicht absichtlich ändern, dieses Problem auftreten.
Auch hier können Sie die Editor-Konfiguration Ihres eigenen Benutzerkontos verwenden und gleichzeitig Berechtigungsprobleme vermeiden
sudoedit
, indem Sie den Editor verwenden oder vom Desktop aus normal starten, aber über einenadmin://
Pfad auf die Datei zugreifen .Beachten Sie schließlich, dass sich das oben erwähnte Verhalten,
sudo
wann-H
oder-i
übergeben wird, in einer zukünftigen Version von Ubuntu tatsächlich ändern soll (wie es bereits vor Jahren bei den meisten Unix-ähnlichen Betriebssystemen der Fall warsudo
). Das Verhalten hat sich bereits in Ubuntu 19.10 geändert , der Entwicklungsversion zum Zeitpunkt dieses Schreibens.quelle
sudo -H
ist, dass Sie 1 Mal von 100 oder 1000 das vergessen-H
und der Besitz einer Datei möglicherweise vom Benutzer auf das Stammverzeichnis übertragen wird$HOME
.So beantworten Sie Ihre Frage: Im Allgemeinen ist die Verwendung eines GUI-Editors kein Problem, da
gedit
große Dateien sehr langsam sind.Aber für GUI-Programme würden Sie
pkexec
odergksu
anstelle von verwendensudo
. Möglicherweise müssen Sie konfigurieren,pkexec
bevor es funktioniert.oder für ältere Ubuntu-Versionen (zB 16.04) können Sie verwenden:
(Obwohl Sie vielleicht bessere GUI-Editoren ausprobieren könnten, zB
geany
;-))quelle
gksu
wird so ziemlich verworfen.pkexec
......pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY