我有一个应用程序可以创建临时文件并快速删除它们。但我想保留这些文件,在 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,它也可以与任何其他用户一起使用。
所以最终我们得到了应用程序无法删除的可写文件。这正是我需要的。