给定一个非 root 用户“joshua”,以 root 身份我在 joshua 的主目录 (/home/johsua/) 中创建了一个名为“foo”的文件;它看起来像这样:
-rw-r--r-- 1 root root 0 12-19 21:00 foo
然后以joshua的身份删除它,我可以成功删除它。
我认为 joshua 没有足够的权限来删除它。这是某种“权限继承”吗?我的平台是 Debian 5.0.7。
答案1
用户没有删除文件,系统删除了。用户只是从自己的目录中删除了文件。系统删除文件是因为其引用计数降至零。用户从目录中删除文件时恰好将其引用计数降至零,这只是偶然。(如果文件硬链接到另一个目录或打开了该文件的句柄,则不会删除它。)
当文件的引用计数降至零时,系统会自动删除文件。文件的所有者无关紧要。文件所有者以外的其他人可以通过多种方式将文件的引用计数降至零。
从目录中删除文件(称为“取消链接”)是针对目录的操作。取消链接文件会减少其引用计数。
类似地,所有者以外的用户可以关闭未链接到任何目录的文件的最后一个句柄。关闭该句柄也会删除该文件,因为引用计数将再次降至零。
答案2
第一个猜测:要删除文件,您需要对包含文件夹具有写入权限。因此,尝试 /home/johsua/foo/bar,将 755 赋予 foo,将 644 赋予 bar。