Warum schreibt sudoedit in ein temporäres Verzeichnis?

10

Ich habe sudoediteine Datei erstellt:

 $ sudoedit /etc/systemd/system/apache2.service

Aber als ich die Datei speichern wollte, schrieb sie in ein temporäres Verzeichnis (/ var / temp / blahblah). Was ist los? Warum wird es nicht im Systemverzeichnis gespeichert?

Tyler Durden
quelle

Antworten:

22

Der Zweck von sudoeditbesteht darin, Benutzern das Bearbeiten von Dateien zu ermöglichen, die ihnen sonst nicht gestattet wären, während sie einen nicht privilegierten Editor ausführen. Um dies zu ermöglichen, sudoeditkopiert die Datei in ein temporäres Verzeichnis bearbeitet werden, macht es durch den anfordernden Benutzer beschreibbar, und öffnet sie in der konfigurierten Editor. Aus diesem Grund zeigt der Editor einen nicht verwandten Dateinamen in einem temporären Verzeichnis an. sudoeditÜberprüft beim Beenden des Editors, ob tatsächlich Änderungen vorgenommen wurden, und kopiert die geänderte temporäre Datei bei Bedarf an ihren ursprünglichen Speicherort zurück.

Stephen Kitt
quelle
IIRC Einige Redakteure führen auch grundlegende Überprüfungen der Gesundheit durch, um sicherzustellen, dass keine Änderungen am Computer vorgenommen wurden. Ich bin mir jedoch nicht sicher, wie häufig dies vorkommt.
Fund Monica Klage
1
@NicHartley: Das ist im allgemeinen Fall schwierig, da es so viele verschiedene Möglichkeiten gibt, Ihren Computer zu blockieren. Es ist in der Regel anwendungsspezifisch, z . B. mit visudofür /etc/sudoers.
Kevin
@ Kevin Oh, hoppla, ich glaube , ich verwirrt visudofür sudoedit. Ich wusste visudoes auf jeden Fall. Danke, dass du das geklärt hast!
Fund Monica Klage
1

Dies wird in der sudoManpage gut erklärt . Die Beschreibung von -e(was sudoeditäquivalent zu ist) sagt:

-e

Die -eOption (Bearbeiten) gibt an, dass der Benutzer anstelle eines Befehls eine oder mehrere Dateien bearbeiten möchte. Anstelle eines Befehls wird die Zeichenfolge " sudoedit" verwendet, wenn die Sicherheitsrichtlinie konsultiert wird. Wenn der Benutzer von der Richtlinie autorisiert ist, werden die folgenden Schritte ausgeführt:

  1. Temporäre Kopien werden von den zu bearbeitenden Dateien erstellt, wobei der Eigentümer auf den aufrufenden Benutzer festgelegt ist.
  2. Der in der Richtlinie angegebene Editor wird ausgeführt, um die temporären Dateien zu bearbeiten. Die sudoersPolitik nutzt das SUDO_EDITOR, VISUALund EDITORUmgebungsvariablen (in dieser Reihenfolge). Wenn keines SUDO_EDITOR, VISUALoder EDITOReingestellt ist, das erste Programm aufgeführt im Editor sudoers(5)wird Option verwendet.
  3. Wenn sie geändert wurden, werden die temporären Dateien an ihren ursprünglichen Speicherort zurückkopiert und die temporären Versionen entfernt.

Wenn die angegebene Datei nicht vorhanden ist, wird sie erstellt. Beachten Sie, dass im Gegensatz zu den meisten Befehlen, die von ausgeführt werden sudo, der Editor mit unveränderter Umgebung des aufrufenden Benutzers ausgeführt wird. Wenn sudoeine Datei aus irgendeinem Grund nicht mit der bearbeiteten Version aktualisiert werden kann, erhält der Benutzer eine Warnung und die bearbeitete Kopie verbleibt in einer temporären Datei.

Beachten Sie insbesondere den dritten Schritt: Nur wenn die Datei am Ende der Bearbeitung geändert wurde, wird das Original geändert. Wenn Sie also ein Programm haben, das eine Datei überwacht, kann dies dazu beitragen, dass (a) Zwischenschreibvorgänge nicht erfasst werden und (b) unnötige Aktionen ausgeführt werden, wenn Sie am Ende keine Änderungen vorgenommen haben.


quelle