阻止用户删除目录中的文件

阻止用户删除目录中的文件

这是场景

  1. 有一个目录 /test 属于 oracle.dba
  2. 我创建了新用户 TEST,他将有权创建新文件,但不应删除他/她创建的文件

我尝试了多种方法,甚至 acls 但不起作用。

答案1

我相信仅使用标准 UNIX 权限是无法做到这一点的。这里的问题是(据我所知)新创建的文件始终归其创建者所有 - 如果您能够创建该文件,则您拥有父目录的写入权限,因此也可以删除该文件。

您可以使用粘滞位来防止用户删除其他用户文件,并且您可以使用目录上的 SETGID 位来更改新创建的文件组,但在 Linux 上,SETUID 目录位将被忽略。

您可以创建一个守护程序来监视目录(可能使用某种文件更改监视器)并在创建文件后将所有权更改为 oracle.dba。不过,存在一个竞争条件 - 攻击者可以在守护进程注意到文件存在之前删除该文件。

即使您成功了,请注意,只要您具有写入权限,您就可以将文件截断为零长度,从而销毁内容,而无需显式删除文件。

相关内容