我有一个名为dir1
、拥有root
且具有权限的目录777
。我有一个名为file1
inside 的文件dir1
,由 拥有root
,具有权限644
。我以名为 的普通用户登录user1
。
为什么如果我file1
在 vim 中编辑,它声明它是只读文件,我可以通过 保存它wq!
?我的期望是,除非我sudo
进入,否则应该拒绝我的写访问权限。
我注意到编辑后, 的所有权file1
已从 更改root
为user1
。我还注意到,如果我将dir1
权限更改为775
,我的期望就会得到满足。也就是说,我被拒绝写访问。
答案1
发生这种情况是因为dir1
向所有用户提供了写访问权限。权限777
允许任何人查看目录并创建/删除内容。
现在,基线是,当您使用 时wq!
,vim 会删除它file1
并使用新的权限集重新创建它,从而允许user1
写入访问权限。这成为可能,因为user1
能够在内部删除和创建文件dir1
# at beginning
$ ls -li file1
# after vim wq!
$ ls -li file1
但是,一旦您将 dir1 的权限更改为775
,它就不再允许user1
在 中创建/删除文件dir1
。因此,vim 无法删除原始文件file1
并重新创建它。