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
und vim
oft empfohlen wird. Terminalbasierte Texteditoren mögen vim
(oder zumindest einen vi
Befehl) und nano
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 rennst sudo -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äßig sudoedit
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 verwenden SUDO_EDITOR
, VISUAL
oder die EDITOR
Umgebungsvariablen , die es in dieser Reihenfolge konsultiert. So können Sie ausführen:
VISUAL=gedit sudoedit filename
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 einstellen gedit
, 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 GVFS admin://
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.
gedit admin:///path/to/filename
Es /path/to/filename
muss einen absoluten Pfad zur Datei geben, beginnend mit /
. Es gibt also drei /
Zeichen danach admin:
.
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 (der gvim
Befehl) oder nicht grafisch (der vim
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
und sudo 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 erledigen git
) 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 erreichen sudoedit
, es gibt auch andere Nachteile von Befehlen wie sudo nano
und sudo 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!) Befehl sudo gedit
. Wenn Sie einen Editor wie ausgeführt vim
als root aber ohne Zurücksetzen $HOME
(wie sudo -H
und sudo -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 einen admin://
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 war sudo
). Das Verhalten hat sich bereits in Ubuntu 19.10 geändert , der Entwicklungsversion zum Zeitpunkt dieses Schreibens.
-H
Teil ist wichtig , nicht verwendensudo
, um GUI-Anwendungen ohne ihn zu starten.