作成されるファイルのユーザーは、エディターの動作によって異なります。一部のエディターは、ファイルを切り捨て、(inodeを変更せずに)ファイルを上書きして保存します。また、一部の編集者はファイルの名前を別の名前(通常はfile
to file~
)に変更し、元の名前で新しいファイルを作成します。元のファイルを変更すると所有者は同じになり、新しいファイルを作成すると、新しいファイルは作成プロセスのUIDによって所有されます。
私はDebianの上で持って、編集者nano
とjoe
、同様にnvi
してvim
(最小限のバージョンではvim-tiny
)その場で上書きするように見えます。私が思うにvim
、Emacsはおそらく何をするかで設定可能です。
スティーブンは、アトミック更新についてコメントしています。インプレースでの再作成の問題は、ファイルが長さゼロに切り捨てられてから書き込まれることです。すべてのデータが書き込まれる前に、別のプロセスがそれを開いて読み取る可能性があります。
アトミック更新は、言うようfile.new
に新しいバージョンを作成し、次にに名前file.new
を変更することによって行われfile
ます。バックアップファイルを残して、を作成しfile.new
、リンクしてfile
からfile~
、に名前file.new
を変更できますfile
。名前を変更すると、名前でファイルにアクセスするすべてのプロセスが古いバージョンまたは新しいバージョンのいずれかを取得します。もちろん、開いているファイルハンドルは、開いたままにしていたファイルを指し、ファイルの一貫したビューを提供します。
ファイルのアクセス許可の観点から、同じファイル(inode)を保存するには、ファイル自体(ディレクトリではなく)への書き込みアクセスが必要です。ファイル名を変更して新しいファイルを作成するには、ディレクトリ(ただし元のファイルへの書き込み)への書き込みアクセスが必要です)。
(名前の変更と再作成は、誰かが共有ディレクトリでファイルを作成または変更したが、グループにそのファイルへの書き込みアクセス権を与えるのを忘れた場合に、ファイルのアクセス許可を修正する方法でもあります。)