意外的写入文件的能力

意外的写入文件的能力

我有一个名为dir1、拥有root且具有权限的目录777。我有一个名为file1inside 的文件dir1,由 拥有root,具有权限644。我以名为 的普通用户登录user1

为什么如果我file1在 vim 中编辑,它声明它是只读文件,我可以通过 保存它wq!?我的期望是,除非我sudo进入,否则应该拒绝我的写访问权限。

我注意到编辑后, 的所有权file1已从 更改rootuser1。我还注意到,如果我将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并重新创建它。

相关内容