Wynikowy użytkownik pliku zależy od czynności edytora. Niektóre edytory zapisują plik, obcinając go i zapisując nad plikiem (bez zmiany i-węzła). A niektórzy redaktorzy zmień nazwę pliku na inną nazwą ( file
aby file~
to zwykle bywa) i utworzyć nowy plik o nazwie oryginału. Modyfikacja oryginalnego pliku nie zmienia właściciela, tworzenie nowego powoduje, że nowy plik jest własnością UID procesu tworzenia.
Z redaktorów Mam na Debianie, nano
a joe
, a nvi
, a vim
(minimalna wersja vim-tiny
) wydają się zastąpić w miejscu. Chociaż przypuszczam, że vim
Emacsa można konfigurować w tym, co robią.
Stephen komentuje aktualizacje atomowe . Problem z ponownym tworzeniem w miejscu polega na tym, że plik jest obcinany do zerowej długości, a następnie zapisywany. Inny proces może zostać otwarty i odczytany przed zapisaniem wszystkich danych.
Aktualizacja atomowa zostałaby wykonana przez utworzenie nowej wersji, jak powiedzmy file.new
, a następnie zmianę nazwy file.new
na file
. Pozostawiając plik kopii zapasowej, można utworzyć file.new
, połączyć file
się, file~
a następnie zmienić nazwę file.new
na file
. Zmiana nazwy ma charakter atomowy, ponieważ każdy proces, który uzyskuje dostęp do pliku według nazwy, otrzymuje zarówno starą, jak i nową wersję, a nie nic pośredniego. Wszelkie otwarte uchwyty plików będą oczywiście wskazywały na plik, który był trzymany otwarty, co zapewnia spójny widok pliku.
Z punktu widzenia uprawnień do plików zapisanie tego samego pliku (i-węzła) wymaga dostępu do zapisu do samego pliku (ale nie do katalogu), zmiana jego nazwy i utworzenie nowego wymaga zapisu do katalogu (ale nie do oryginalnego pliku ).
(Zmiana nazwy i odtwarzanie jest zresztą okazjonalnie sposobem ustalenia uprawnień do plików na wypadek, gdyby ktoś utworzył lub zmodyfikował plik we współdzielonym katalogu, ale zapomniał przyznać grupie uprawnienia do zapisu).