更改 root 拥有的目录的所有权

更改 root 拥有的目录的所有权

作为非特权用户,在EXT4文件系统上拥有一个目录,在该目录中我拥有所有必要的权限 ( rwx),这使我可以更改其中文件的内容和所有权(例如vim file:w!),即使它们由 root 拥有,并且即使我无权更改它们(root:root0644)。

如果 root 拥有的目录位于我的非特权用户拥有的目录中,那么这是否可能?

答案1

目录的所有者可以根据需要更改目录的内容。即使目录中存在不允许目录所有者写入的文件,目录所有者也可以删除该文件并创建一个同名的新文件。

更一般地说,如果您对某个目录具有写权限,则可以在该目录中删除和创建文件。因此,您可以更改该目录中的文件,如果您没有文件的写权限,则不是通过写入它们,而是通过删除现有文件并创建同名的新文件。

如果您拥有一个目录parent,并且该目录包含 root 拥有的子目录child,并且您没有 的写入权限child,则您无法修改 中的文件child。但是,您可以重命名child并创建一个名为 的新子目录child,该子目录将归您所有,因此可以包含您想要的任何内容。

这就是为什么验证文件控制的安全检查(例如 OpenSSH 对私钥文件进行的健全性检查)会验证整个目录链直至根目录。同样,如果您授予用户 sudo 运行文件的权限,则该文件的整个路径应由 root 控制。例如,不要授予用户 sudo 权限来运行其主目录下的程序。 (另一方面,任何地方的 setuid 根程序都可以,因为 setuid 附加到文件本身,而不是附加到其路径。)控制目录路径中任何中间步骤的任何人都可以替换自己的内容,而不是通过编辑实际的内容文件,但通过重命名路径中该点的目录。

答案2

我无法复制你所说的前提。

我拥有的目录包含 root 拥有的文件:

$ ls -ld mydir mydir/file2
drwxrwxr-x 2 user1 user1 4096 Jan  5 13:52 mydir
-rw-rw-r-- 1 root  root     0 Jan  5 13:52 mydir/file2

尝试声明root的文件的所有权mydir

$ chown user1 mydir/file2
chown: changing ownership of 'mydir/file2': Operation not permitted

相关内容