用户可以删除其主目录中的 root 拥有的文件,或者控制更改用户可写目录内的文件的规则是什么?

用户可以删除其主目录中的 root 拥有的文件,或者控制更改用户可写目录内的文件的规则是什么?

尝试此代码

root /home/user $ touch hehehe

然后作为普通用户

user ~ $ rm -f hehehe

我们的用户可以删除其主目录中的 root 拥有的文件。这不仅适用于其主目录,还适用于其可写入的任何目录。

现在尝试

root /home/user $ mkdir -p testdir

user ~ $ rm -rf testdir

也可以。但是:

root /home/user $ mkdir -p testdir/childdir
user ~ $ rm -rf testdir/childdir

失败,所以我们的用户显然无法删除可写目录内的非空不可写目录。

据我所知,这三个测试用例都应该失败。但显然,当目录可写时,这会赋予用户一些与其内容相关的非同小可的能力。

关于用户拥有的文件系统权限可以执行哪些原始文件系统操作( create,等)的具体规则是什么?delete

答案1

一旦你理解了在所有 UNIX 兼容文件系统中文件都是不是存在于目录中但完全独立的东西。目录只不过是指向文件的链接的集合(这就是为什么从目录中删除文件的系统调用是unlink())。当没有指向文件的链接时( 为零refcount),文件本身就会消亡。

这有几个含义:

  • 同一个文件完全可以存在于文件系统上的多个目录中
  • 你的问题:从目录中删除文件(或子目录)(删除指向它的链接)或创建指向它的链接不是对文件的操作,而是对目录的操作。这意味着文件的权限无关紧要,重要的是目录的权限。

相关内容