当我拥有的目录包含另一个用户拥有的子目录时,如何删除它?

当我拥有的目录包含另一个用户拥有的子目录时,如何删除它?

/home/web/test我使用一个基本的非特权帐户在 Debian 服务器上创建了一个目录web。另一个帐户——tomcat然后在该文件夹中创建了一些子目录和文件(您可能已经猜到了,tomcat这是一个 Web 应用程序)。

我现在想删除该测试文件夹,但我无法删除,因为tomcat它拥有其下的目录和文件。我得到没有权限尝试时出现错误。设置方法如下:

ls -l /主页/网站

drwxrwxrwx 3 web users 4096 2011-04-19 12:06 test

ls -l /home/web/测试

drwxr-xr-x 46 tomcat tomcat 4096 2011-04-19 12:06 www

ls -l /home/web/test/www

-rw-r--r-- 1 tomcat tomcat  9939 2011-04-19 12:44 test1.html
-rw-r--r-- 1 tomcat tomcat 16346 2011-04-19 12:44 test2.html
...

rm -rf /home/web/测试

rm: cannot remove `/home/web/test/www/test1.html': Permission denied
rm: cannot remove `/home/web/test/www/test2.html': Permission denied
...

有什么方法可以让我/home/web/test使用该帐户删除文件夹(即无需以或web身份登录) ?tomcatroot

毕竟,我拥有它/home/web/test,难道我不应该可以用它做任何我想做的事情吗?

答案1

据我所知,您不能。您授予 tomcat 用户将其文件存储在您的目录中的权限,但他们的文件属于他们。如果您不是其所有者或其组的成员(并且您未使用扩展 ACL),则您无法修改或删除这些文件。

它们在文件系统上的位置几乎无关紧要,因为同一个 inode 可以在多个位置被多次引用。这不是 Unix 权限的工作方式 - 它们是基于 inode 的,而不是基于位置的。

编辑:这是个有趣的观察@syserr0r。原因是,作为目录的所有者,您可以更改其文件列表 - 包括从该列表中删除文件(如果文件没有剩余的硬链接,则操作系统将删除 inode)。所以我的答案不正确:对于创建和删除,重要的权限是父目录的权限,而不是与 inode 关联的权限。

答案2

单个文件夹

~/test与组drwxr-xr-x所有与组所有gompelsgompels
~/test/test0r-rw-r--r--rootroot

gompels@stonewall:~$rm -Rf test并且污垢文件夹不见了!

嵌套文件夹

~/test与组drwxr-xr-x所有与组所有与组所有gompelsgompels
~/test/test2/drwxr-xr-xrootroot
~/test/test2/test0r-rw-r--r--rootroot

gompels@stonewall:~$rm -Rf testrm: cannot remove 'test/test2/test0r': Permission denied失败:(

因此,如果您拥有该文件夹,您可以删除其中的其他人的文件,但不能删除他们的文件夹。

相关内容