/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
身份登录) ?tomcat
root
毕竟,我拥有它/home/web/test
,难道我不应该可以用它做任何我想做的事情吗?
答案1
据我所知,您不能。您授予 tomcat 用户将其文件存储在您的目录中的权限,但他们的文件属于他们。如果您不是其所有者或其组的成员(并且您未使用扩展 ACL),则您无法修改或删除这些文件。
它们在文件系统上的位置几乎无关紧要,因为同一个 inode 可以在多个位置被多次引用。这不是 Unix 权限的工作方式 - 它们是基于 inode 的,而不是基于位置的。
编辑:这是个有趣的观察@syserr0r。原因是,作为目录的所有者,您可以更改其文件列表 - 包括从该列表中删除文件(如果文件没有剩余的硬链接,则操作系统将删除 inode)。所以我的答案不正确:对于创建和删除,重要的权限是父目录的权限,而不是与 inode 关联的权限。
答案2
单个文件夹
~/test
与组drwxr-xr-x
所有与组所有gompels
gompels
~/test/test0r
-rw-r--r--
root
root
gompels@stonewall:~$rm -Rf test
并且污垢文件夹不见了!
嵌套文件夹
~/test
与组drwxr-xr-x
所有与组所有与组所有gompels
gompels
~/test/test2/
drwxr-xr-x
root
root
~/test/test2/test0r
-rw-r--r--
root
root
gompels@stonewall:~$rm -Rf test
并rm: cannot remove 'test/test2/test0r': Permission denied
失败:(
因此,如果您拥有该文件夹,您可以删除其中的其他人的文件,但不能删除他们的文件夹。