假设用户 A 和用户 B 不具有 root 权限。假设:
- 用户A创建目录
X
权限为777 - 用户B然后创建一个具有755权限的目录
X/Y
。 - 用户B然后创建一个
X/Y/troll
具有755权限的文件。
如果用户 A 尝试运行以下命令,正确的行为是什么:
rm -rf X/Y
那么“巨魔”文件呢?我刚刚在我的机器上测试过,用户 A 无法删除用户 B 的文件。它是否正确?
如果是这样,是否意味着用户 B 可以在 A 的目录中创建一个 A 无法删除的非常大的文件,从而超出 A 的配额?
答案1
是的,这是预期的行为,正如您所指出的,它可以用来欺骗其他用户,该用户已授予其他人对其目录的写入权限。正如您正确显示的那样,“troll”用户使用内容创建的没有写权限的目录只能由该用户和 root 删除。
这是因为您不能删除任何非空目录,并且未经许可不能修改其他用户的目录。
通常这不会导致资源限制问题(配额),因为它们通常是根据文件所有权而不是目录位置来计算的这chown
这是普通用户无法将自己的文件提供给其他用户的原因之一。否则,他们可以向chown
用户传递一个文件,而该用户无权删除该文件。
还有一种方法可以用这个来控制配额:如果用户 AX
在用户 B 添加文件后更改了权限:
chmod 700 X
用户 B 将无法删除该文件。如果没有指向任何文件的硬链接,他们也无法查看或重写它们。虽然您无法移动目录,但如果您对父目录具有写入权限,则可以移动其他用户的文件。所以世界可写目录通常是不明智的。
相反,在 Linux 中,当将文件传递给另一个用户时,请始终将文件保留在您自己的目录中并授予读取权限。其他用户可以为自己复制文件,而不会给您或他们带来任何风险。
几乎在每种情况下,针对此类行为的答案都是礼貌地要求巨魔用户停止,然后将他们的用户报告给系统管理员(如果他们不这样做)。
答案2
假设您没有任何其他奇特的东西,例如棒位或 ACL 或文件功能或其他东西。
由于A无法写入Y,A无法取消troll文件的链接,那么Y不为空,因此无法删除,最终什么也不会发生。
FSUID=A 的进程是否可以取消链接拥有 B 的文件确实取决于……许多条件。请关注流程的凭据,而不是一直谈论用户名。
你的最后一个问题也是如此。 Linux 真的有这么多花哨的东西,你有权限做一些事情吗?这确实取决于很多条件……