CH-J Server ManagerSerververwaltung über SSH
Menü
Alle Anleitungen und Artikel →

Eine entfernte Datei wurde während der Bearbeitung geändert: So vermeiden Sie ein Überschreiben

Erkennen Sie Änderungen anderer an einer Serverdatei während Ihrer Bearbeitung, vergleichen Sie Versionen und speichern Sie, ohne eine der Änderungen zu verlieren.

Wie das Problem entsteht

Sie öffnen eine Datei und bearbeiten Ihre Kopie, während etwas anderes das Original beschreibt: ein weiterer Administrator, ein Konfigurationsverwaltungslauf, ein Paket-Upgrade oder die Anwendung selbst. Wenn Sie anschließend speichern, verschwindet die andere Änderung ohne Fehlermeldung. Besonders anfällig ist die lokale Bearbeitung mit anschließendem Hochladen über SFTP, weil zwischen Lesen und Schreiben viel Zeit vergeht und ein einfaches Hochladen nichts vergleicht.

Den Zustand vor Beginn festhalten

Notieren Sie beim Herunterladen die Prüfsumme und den Zeitpunkt der letzten Änderung. Prüfen Sie beide unmittelbar vor dem Hochladen erneut. Eine andere Prüfsumme bedeutet, dass die Datei geändert wurde und Sie sie nicht ungeprüft überschreiben sollten.

sha256sum /etc/example.conf
stat -c '%y %U %G %a' /etc/example.conf

Änderungen vergleichen und zusammenführen

Bewahren Sie Ihre bearbeitete Kopie unter einem neuen Namen auf, laden Sie die aktuelle Version herunter und vergleichen Sie sie mit Ihrer Ausgangsversion und Ihrer bearbeiteten Kopie. Übertragen Sie Ihre Änderung dann in die aktuelle Version, statt diese zu überschreiben. Der Befehl diff3 kann alle drei Versionen gemeinsam anzeigen.

diff -u example.conf.orig example.conf.current
diff -u example.conf.orig example.conf.mine
diff3 example.conf.mine example.conf.orig example.conf.current

Die Ursache der Dateiänderungen finden

Wenn sich die Datei ständig ändert, ermitteln Sie die Ursache, bevor Sie sie erneut bearbeiten. Prüfen Sie, wer sie geöffnet hat, und sehen Sie im Journal und im Paketverlauf nach. Wird die Datei von einer Konfigurationsverwaltung verwaltet, ändern Sie dort die Vorlage. Andernfalls ersetzt der nächste Lauf Ihre Bearbeitung.

sudo lsof /etc/example.conf
sudo journalctl --since "1 hour ago" --no-pager | grep example.conf
grep example.conf /var/log/dpkg.log

Eine Warnung ist keine Sperre

Editoren wie vim und nano warnen, wenn eine Datei seit dem Öffnen geändert wurde, verhindern aber nicht, dass ein anderer Prozess sie beschreibt. Dasselbe gilt für Prüfsummenvergleiche: Eine Prüfung unmittelbar vor dem Speichern verkleinert das Zeitfenster stark, beseitigt es aber nicht. Auf Servern, an denen mehrere Personen arbeiten, schützt eine versionsverwaltete Konfigurationsquelle besser als jeder Editor.

Schutz beim Speichern in CH-J Server Manager

Der Editor von File Manager prüft die Datei beim Speichern erneut. Haben sich Inhalt, Rechte oder Verknüpfungsziel geändert, wird das Speichern abgebrochen und das Original bleibt unverändert. Sie können dann die aktuelle Version vom Server laden. Dabei gehen Ihre ungespeicherten Änderungen verloren; kopieren Sie Ihren Text daher vorher an eine andere Stelle. Der Editor führt Versionen nicht für Sie zusammen. Bei Übertragungen fragt die Anwendung vor dem Ersetzen eines bereits vorhandenen oder geänderten Ziels nach. Hat sich die Quelle während der Übertragung geändert, fordert sie Sie auf, von vorn zu beginnen.

Ausführliche Dokumentation

man: stat →

man: diff →

Biometrisches Entsperren und Sicherheit →