
Ich habe ein Projekt, bei dem ich einen Stream wie folgt verschlüssele:
some_command | gpg --keyring tempkeyring.gpg --recipient "person" --output filename.gpg --encrypt
Während der Stream läuft und die Verschlüsselung bereits begonnen hat, wird es dem Prozess schaden, den aktuell verwendeten Schlüsselbund zu löschen? Der Schlüsselbund ist temporär und wird bei jeder Ausführung des Skripts neu erstellt. Ich VERMUTE, dass der Kernel dem System weiterhin Zugriff auf die Datei gewährt und den Speicherplatz freigibt, sobald GPG damit fertig ist. Wird GPG ausflippen oder wird es die Verschlüsselung problemlos abschließen?
Die Betriebssysteme sind Linux RHEL und CentOS-Kernel 2.6+, falls das einen Unterschied macht.
Antwort1
Ich habe nachgeforscht, und obwohl dies die Frage für Linux-Kernel beantwortet, schließt es andere Betriebssysteme oder Dateisysteme keineswegs ein.
gpg kümmert sich nicht darum. Ich vermute, es behandelt dies wie jede andere Löschung innerhalb des Systems. In *nix-Umgebungen wird beim Löschen einer Datei tatsächlich die Verknüpfung dieser Datei aufgehoben. Wenn Sie alle Verknüpfungen zu einer Datei entfernen, löscht das System DANN die Datei und gibt den Speicherplatz frei. Linux-Kernel (und Unix, da bin ich mir sicher ...) trennen die Verknüpfung der Datei, prüfen dann, ob Programme diese Dateien verwenden, und wenn ja, warten sie, bis das Programm, das sie verwendet, geschlossen wird, und geben dann den Speicherplatz frei, indem sie die Datei wirklich löschen. Da die Verknüpfung der Datei bereits aufgehoben wurde, kann niemand sonst auf diese Datei zugreifen, aber die aktuell geöffnete Anwendung wird keine Probleme haben, solange sie nicht versucht, über den Namen auf die Datei zuzugreifen, sondern nur den aktuell geöffneten Handle verwendet.