组的用户能够删除文件,即使该用户仅通过组对文件具有读取访问权限

组的用户能够删除文件,即使该用户仅通过组对文件具有读取访问权限

我有一个具有以下权限的目录:

drwxrwsr-x 3 john ro 20K Jun 20 14:48 logs

我以 john 身份登录,并在日志中触摸了一个新文件:

-rw-r--r-- 1 john ro 0 Jun 20 14:48 d

根据我的理解,在这种情况下,只有 john 应该能够删除文件 d。具有 ro 组的任何其他用户都不能删除该文件,因为它只有组读访问权限。但是,当我尝试使用另一个以 ro 为组的帐户进行删除时,该文件被删除!

mathew@ip-10-0-0-148:/mnt/custom/ops/logs$ ls -lrth d
-rw-r--r-- 1 john ro 0 Jun 20 14:48 d
mathew@ip-10-0-0-148:/mnt/custom/ops/logs$ rm d
rm: remove write-protected regular empty file 'd'? yes
mathew@ip-10-0-0-148:/mnt/custom/ops/logs$ ls -lrth d
ls: cannot access 'd': No such file or directory

这看起来很奇怪!我希望群组成员能够读取但不能删除文件。我缺少什么?

答案1

您不是删除文件,而是从目录中删除它们的条目。您需要目录写入权限才能执行此操作。 (此权限存在于您的示例中)。

您可能想看看粘性位。将其应用到目录 ie chmod +t …/logs/d。这将使只有所有者(以及具有CAP_DAC_OVERRIDE例如权限的用户root)才能从目录中删除文件。

当文件没有目录条目并且不再被任何进程打开时,它将被删除。

答案2

ro组对该目录具有完全权限,这意味着其任何成员都可以删除或修改其中的文件或目录,无论他们是否拥有这些文件或目录,也不管文件权限如何。

如果您只希望组成员能够读取其中的文件,请更改组john或删除组的写入权限。从包含该目录的目录中执行其中一项操作logs

chown :john logs

chmod 755 logs

我建议使用第二个命令来删除写入权限。

相关内容