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

jca*_*er2 0 linux permissions

试试这个代码

root /home/user $ touch hehehe
Run Code Online (Sandbox Code Playgroud)

然后作为普通用户

user ~ $ rm -f hehehe
Run Code Online (Sandbox Code Playgroud)

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

现在试试

root /home/user $ mkdir -p testdir
Run Code Online (Sandbox Code Playgroud)

user ~ $ rm -rf testdir
Run Code Online (Sandbox Code Playgroud)

也有效。然而:

root /home/user $ mkdir -p testdir/childdir
user ~ $ rm -rf testdir/childdir
Run Code Online (Sandbox Code Playgroud)

失败,因此我们的用户显然无法删除可写目录中的非空不可写目录。

根据我的理解,这三个测试用例都应该失败了。但显然,当目录可写时,这赋予用户一些关于其内容的重要功能。

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

Eug*_*eck 5

一旦您了解在所有兼容 UNIX 的文件系统中,文件不是存在于目录中的东西,而是完全独立的东西,答案就变得非常清楚了。目录只不过是文件链接的集合(这就是为什么从目录中删除文件的系统调用是unlink())。当没有指向文件的链接(refcount为零)时,文件本身就会死亡。

这有几个含义:

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