Gibt es eine Möglichkeit, sichere Daten in vim zu bearbeiten, ohne auf das Dateisystem zuzugreifen?


9

Ich bin daran interessiert, mit vim eine "sichere" Datei zu bearbeiten, die an anderer Stelle (z. B. irgendwo in der Cloud) verschlüsselt gespeichert ist und nicht als Klartext auf die lokale Festplatte geschrieben werden sollte. Die Reihenfolge der Ereignisse könnte also sein (mit einem separaten Wrapper-Skript oder etwas für Nicht-Vim-Schritte 1, 2 und 5):

  1. Rufen Sie eine verschlüsselte Datei aus der Cloud ab
  2. Entschlüsseln Sie die Datei und starten Sie vim, während Sie den Klartext zur Bearbeitung an vim übergeben (möglicherweise über einen neuen Dateideskriptor?).
  3. Interaktiv mit vim bearbeiten
  4. Wenn die Datei mit geschrieben wird :w, schreiben Sie das Ergebnis (erneut über einen Dateideskriptor?)
  5. Verschlüsseln Sie den neuen Klartext und speichern Sie ihn wieder in der Cloud

Jetzt verstehe ich, dass der übliche Weg, dies zu tun, darin besteht, die temporäre Datei zu entschlüsseln, eine temporäre Datei zu schreiben, die temporäre Datei in vim zu bearbeiten, die temporäre Datei zu lesen, zu verschlüsseln, die temporäre Datei zu löschen / zu löschen. Was ich suche, ist eine Möglichkeit, die Verwendung einer temporären Datei überhaupt zu vermeiden. (Außerdem wird alles eingestellt , um Vim auf einfachste Weise im privaten Modus zu starten .)

Eine andere Möglichkeit, dies zu erreichen, könnte darin bestehen, etwas zu verwenden netrw, mit dem ich nicht besonders vertraut bin.

Für die Zwecke dieser Frage bin ich nicht besorgt über die OS-Swap-Daten (aber wenn es eine Möglichkeit gibt, die internen Datenpuffer als nicht austauschbar zu markieren, wäre das interessant).

Gibt es eine Möglichkeit, dies zu tun, oder noch besser, hat jemand anderes dies bereits gelöst?


Ich denke, eine Lösung wäre, Ihr Remote-Dateisystem auf Ihrem Computer zu mounten ( z. B. sshfs ). Auf diese Weise können Sie zu Ihrer Datei navigieren, sie entschlüsseln, bearbeiten und direkt auf dem Remote-fs speichern. Vim ermöglicht auch die Bearbeitung Fern vielleicht werden Sie etwas Interessantes in dieser wikia Spitze finden.
Statox

Bedeutet Schritt 2 einen interaktiven Prozess? Müssen Sie ein Passwort schreiben?
Ярослав Рахматуллин

@ ЯрославРахматуллин: So oder so, einige Ideen, die ich dafür habe, erfordern ein Passwort und andere nicht.
Greg Hewgill

Antworten:


1

In den vim-Dokumenten sind einige Dinge versteckt, die Ihnen helfen können.

  1. read ! your shell command: Lies die Ausgabe von "your shell command" in den aktuellen Puffer (ein tempfile wird zum Lesen der Daten verwendet!)
  2. let data = system('your shell command'): Daten in eine vim-Variable einlesen (ich habe in den Dokumenten dazu keinen Verweis auf tempfiles gefunden). Moderne vim und neovim haben auch Asynchronus-Varianten davon.
  3. set buftype=acwrite: Sagen Sie vim, dass der Puffer nur mit einem automatischen Befehl gespeichert werden soll
  4. autocmd BufWriteCmd <buffer> your-vim-command: Schreiben Sie den Inhalt des aktuellen Puffers durch Ausführen :your-vim-command. Dieser automatische Befehl wird ausgelöst, wenn Sie :writedie betreffende Datei verwenden.

Zusätzlich zu den Themen aus der obigen Liste sollten Sie auch die Verwendung von tempfiles ( help tempfile) durch vim lesen, um zu entscheiden, ob sie für Sie ausreichend gespeichert sind.

Es gibt ein Plugin zum Bearbeiten von gpg-verschlüsselten Dateien, das möglicherweise einige der gewünschten Funktionen implementiert (möchten Sie gpg-verschlüsselte Dateien verwenden?). Andernfalls könnte der Code für Sie inspirierend sein, Ihre eigenen Inhalte zu schreiben: https://github.com/jamessan/vim-gnupg (Ich weiß, dass sie keine Readme-Datei und dergleichen haben, aber das Plugin ist gut und wird aktiv gepflegt).


0

Angenommen , Sie haben Befehle decryptund encryptdass die Verwendung von stdout und stdin:

# open vim using stdin
decrypt secret.msg | vim -

Nachdem Sie die Datei in vim bearbeitet haben:

:w !encrypt secret2.msg

Dies entspricht dem Senden des VIM-Puffers an die Pipe | encrypt secret2.msg

Ich denke, das sollte das Erstellen temporärer Dateien vermeiden, vorausgesetzt, Sie haben alle privaten vim-Optionen festgelegt .

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.