(Ubuntu 11.04。)
我想解决配置限制某个写入仅附加文件的服务的难题。
我将从远程计算机挂载该文件(例如,通过 NFS,可以更改这一点)。我想欺骗在本地计算机上使用该文件的程序,让它认为它可以成功附加到所述文件,而无需它这样做。
该文件应忽略所有本地写入(不会触发错误)。如果远程源发生变化,该文件应进行稳健更新(因此,如果服务突然重启,它将读取实际数据)。
有什么线索吗? 有可靠的解决方案吗?
答案1
如果您的应用程序是动态链接的,您可以使用LD_预加载用自定义和函数覆盖 glibcwrite
和调用,可以在尝试附加特定文件时忽略任何错误(或强制它处于只读模式),并且也可以只返回成功而不写出任何内容(当然仅限于那一个文件)。open
write
open
open
write
还有liboverride我从来没有使用过,但它似乎可以让你更容易一点。
答案2
我不是 Linux 专家,所以这可能不是最有效的解决方案,但可以编写一个小型的命令程序(隐藏在用户视图中)来监视文件,并在发生任何更改时立即撤消更改。该程序可以扫描远程源并在发生更改时应用必要的更改/更新。