L'utente risultante del file dipende da ciò che fa l'editor. Alcuni editor salvano il file troncandolo e scrivendo sul file (senza cambiare l'inode). E alcuni editor rinominano il file con un altro nome (come file
al file~
solito) e creano un nuovo file con il nome dell'originale. La modifica del file originale mantiene lo stesso proprietario, la creazione di uno nuovo rende il nuovo file di proprietà dell'UID del processo di creazione.
Degli editor che ho su Debian, nano
e joe
anche nvi
e vim
(la versione minima in vim-tiny
) sembrano sovrascrivere sul posto. Anche se suppongo vim
che Emacs sia probabilmente configurabile in quello che fanno.
Stephen commenta gli aggiornamenti atomici . Il problema con la ricostruzione sul posto è che il file viene troncato a lunghezza zero, quindi scritto. Un altro processo potrebbe aprirlo e leggerlo prima che tutti i dati vengano scritti.
Un aggiornamento atomica sarebbe stato fatto con la creazione della nuova versione, come ad esempio file.new
, rinominando file.new
a file
. Lasciando un file di backup, si potrebbe creare file.new
, collegamento file
a file~
e quindi rinominare file.new
a file
. La ridenominazione è atomica in quanto qualsiasi processo che accede al file per nome ottiene la vecchia o la nuova versione, non nulla in mezzo. Ovviamente qualsiasi handle di file aperto rimanderà al file che è stato tenuto aperto, offrendo una visione coerente del file.
Dal punto di vista delle autorizzazioni dei file , il salvataggio sullo stesso file (inode) richiede l'accesso in scrittura al file stesso (ma non alla directory), rinominandolo e creandone uno nuovo richiede l'accesso in scrittura alla directory (ma non al file originale ).
(Rinominare e ricreare è anche un modo per inciso di correggere i permessi dei file nel caso in cui qualcuno crei o modifichi un file in una directory condivisa, ma si dimentica di dare accesso in scrittura al gruppo.)