file.txt
ディレクトリに名前が付けられたファイルがあり、/home/myuser
そのファイルに対する権限をroot.root
およびに変更しました644
。
-rw-r--r-- 1 root root 1.4K Jan 15 07:09 file.txt
その後、切り替えてmyuser
開きましたvim
。sudoはできません)編集して保存しようとすると、:wq!
次のような結果が表示されます。
"file.txt" E949: File changed while writing
Press ENTER or type command to continue
次にEnterを押してもう一度Enterを押すと、:wq!
出力は次のようになります。
WARNING: The file has been changed since reading it!!!
Do you really want to write to it (y/n)?
をクリックするとy
ファイルが保存され終了しますvim
。
しかし、なぜユーザーROOT
権限とread-only
アクセス権を持つファイルが変更されるのかが問題です。
PS: 1. myuser
sudoユーザーになりなさい。
ファイルを保存すると、ユーザー権限も
myuser.myuser
変更されます。-rw-r--r-- 1 myuser myuser 1.4K Jun 27 18:57 file.txt
答え1
ファイルはユーザーが書き込むことができるディレクトリにあるため、ユーザーはファイルを削除して再作成する権限を持ちます。これはvim
、ファイルに強制的に書き込むときとほぼ同じです。
$ ls -li file
3481899 -r--r--r-- 1 root wheel 6 Jun 27 15:48 file
$ vim file
$ ls -li file
3481905 -rw-r--r-- 1 myself myself 6 Jun 27 15:49 file
この例に示すように、ファイルは新しい inode 番号で再生成されました。ユーザーとグループは、ファイルを書き込むユーザーに設定されており、ユーザーのumask
。