file.txt
我有一个以目录中的某些内容命名的文件/home/myuser
,我将该文件的权限更改为root.root
和644
。
-rw-r--r-- 1 root root 1.4K Jan 15 07:09 file.txt
然后我切换到myuser
并打开它vim
(没有须藤)并尝试编辑并保存它:wq!
,我得到如下输出:
"file.txt" E949: File changed while writing
Press ENTER or type command to continue
然后我按下回车键,然后再次按下回车键: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
正如您在此示例中所看到的,该文件已被重新创建并具有新的索引节点号。用户和组已设置为写入文件的用户,并且已根据用户的umask
.