是否可以禁止删除文件但允许在 Linux 中为特定目录创建文件?

是否可以禁止删除文件但允许在 Linux 中为特定目录创建文件?

我有一个应用程序可以创建临时文件并快速删除它们。但我想保留这些文件,在 Linux 中有没有办法做到这一点?

答案1

是的,您可以使用每个流程功能安全增强型 Linux它已经成为 Ubuntu 的一部分,已有两年了。请做好学习难度大的准备。

答案2

我发现使用粘性位和 inotify 结合使用是一个足够好的解决方案。这个想法很简单,如果我们在目录上设置粘性位,用户将无法删除其他用户拥有的文件,但如果文件的权限设置正确,用户仍然可以写入这些文件。

因此,我们执行以下操作:

$ chmod a+t dir
$ while inotifywait -e close_write dir; do chmod a+rwx dir/*; sudo chown root:root dir/*; done

第一行设置粘性位。第二行不断等待目录中的更改,当应用程序完成对文件的写入时,它允许所有用户访问该文件,然后更改该文件的所有者。所有者不必是 root,它也可以与任何其他用户一起使用。

所以最终我们得到了应用程序无法删除的可写文件。这正是我需要的。

相关内容