制作一个忽略所有写入操作且不标记为只读的文件

制作一个忽略所有写入操作且不标记为只读的文件

(Ubuntu 11.04。)

我想解决配置限制某个写入仅附加文件的服务的难题。

我将从远程计算机挂载该文件(例如,通过 NFS,可以更改这一点)。我想欺骗在本地计算机上使用该文件的程序,让它认为它可以成功附加到所述文件,而无需它这样做。

该文件应忽略所有本地写入(不会触发错误)。如果远程源发生变化,该文件应进行稳健更新(因此,如果服务突然重启,它将读取实际数据)。

有什么线索吗? 有可靠的解决方案吗?

答案1

如果您的应用程序是动态链接的,您可以使用LD_预加载用自定义和函数覆盖 glibcwrite和调用,可以在尝试附加特定文件时忽略任何错误(或强制它处于只读模式),并且也可以只返回成功而不写出任何内容(当然仅限于那一个文件)。openwriteopenopenwrite

还有liboverride我从来没有使用过,但它似乎可以让你更容易一点。

答案2

我不是 Linux 专家,所以这可能不是最有效的解决方案,但可以编写一个小型的命令程序(隐藏在用户视图中)来监视文件,并在发生任何更改时立即撤消更改。该程序可以扫描远程源并在发生更改时应用必要的更改/更新。

相关内容