如何检测并阻止用户删除 Linux 上的特定文件?

如何检测并阻止用户删除 Linux 上的特定文件?

是否可以监视用户在文件系统上的操作并阻止他执行特定操作? inotify 只能监控文件系统上的操作吗?那么 fanotify 呢?网上关于这方面的资料很少...

我的程序(守护程序)通过网络发送特定文件。我想确保该用户不会删除或移动我的文件,但他可以读取它。当用户尝试使用任何调用例如的程序删除我的文件时。 unlink() 我想让这个 unlink() 调用失败并出现一些错误(EACCES?)。我可以在 FUSE 上执行类似的技巧实现文件系统,但这不是这里的解决方案......

答案1

您所要求的内容可以通过传统的 UNIX 权限轻松实现。确保用户可以访问存储文件的目录,但不能对其进行写入(r-x对该目录及其祖先的权限)。授予用户对文件的读取权限,但不授予写入权限(假设用户不应该能够修改文件),即r--.由于对该目录没有写权限,用户将无法删除该文件。

监控对你没有帮助。它可以告诉您用户删除了该文件,但您无法仅通过监视此操作来阻止该操作的发生。

答案2

尽管 Gilles 提出了一个很好的建议,但另一种选择(例如,如果您无法控制目录权限)是在文件上设置不可变标志,使用chattr +i.这会防止任何用户写入或删除有问题的文件。请注意,这需要 root 访问权限。

相关内容