Der resultierende Benutzer der Datei hängt davon ab, was der Editor tut. Einige Editoren speichern die Datei, indem sie sie abschneiden und über die Datei schreiben (ohne den Inode zu ändern). Einige Editoren benennen die Datei in einen anderen Namen um ( file
bis file~
ist üblich) und erstellen eine neue Datei mit dem Namen des Originals. Durch Ändern der Originaldatei bleibt der Eigentümer unverändert. Wenn Sie eine neue Datei erstellen, wird die neue Datei der UID des Erstellungsprozesses gehört.
Von den Editoren habe ich auf Debian, nano
und joe
auch nvi
und vim
(die minimale Version in vim-tiny
) scheinen an Ort und Stelle zu überschreiben. Obwohl ich nehme an vim
und Emacs sind wahrscheinlich konfigurierbar in dem, was sie tun.
Stephen kommentiert atomare Updates . Das Problem beim erneuten Erstellen vor Ort besteht darin, dass die Datei auf die Länge Null gekürzt und dann geschrieben wird. Ein anderer Prozess könnte es öffnen und lesen, bevor alle Daten geschrieben sind.
Ein Atom Update würde durch die Schaffung der neuen Version wie etwa getan werden file.new
, dann die Umbenennung file.new
zu file
. Hinterlassen einer Backup - Datei, könnte man schaffen file.new
, Link file
auf file~
und benennen file.new
zu file
. Die Umbenennung ist insofern atomar, als jeder Prozess, der über den Namen auf die Datei zugreift, entweder die alte oder die neue Version erhält, nichts dazwischen. Alle geöffneten Dateihandles verweisen natürlich auf die Datei, die geöffnet gehalten wurde, und bieten eine konsistente Ansicht der Datei.
Aus den Dateiberechtigungen Blickwinkel, über die gleiche Datei zu speichern (Inode) Schreibzugriff auf die Datei selbst (aber nicht das Verzeichnis) erfordert, es umbenennen und eine neuen erstellt erfordert Schreibzugriff auf das Verzeichnis (aber nicht auf die Originaldatei ).
(Das Umbenennen und Neuerstellen ist im Übrigen auch eine Möglichkeit, Dateiberechtigungen zu korrigieren, falls jemand eine Datei in einem freigegebenen Verzeichnis erstellt oder ändert, aber vergisst, Gruppenschreibzugriff darauf zu gewähren.)