跟踪,保存和还原Linux下某个程序对文件系统所做的修改


9

我希望能够在运行诸如安装程序之类的程序时跟踪对我的文件系统所做的修改的列表,以便以后可以还原它们。

编辑:这涉及一个非打包程序。我会尽量使用apt-get。

理想情况下,我希望能够执行以下操作:

(sudo) catch-modifs some-installer.bin > fsmodifs.patch

然后:

(sudo) revert-modifs fsmodifs.patch

有方便的方法吗?

Answers:


1

可能最简单的方法(?)是从具有“持久数据分区”的LiveUSB引导。(或者,为了自己复制效果,请在chroot监狱中:在ro层上安装一个rw层。)拍摄rw文件系统的快照(在重新启动后应该很小),然后运行安装程序。它更改或创建的每个文件都将位于rw“持久数据”覆盖分区上。甚至删除的文件也将显示为“魔术点文件”。


这看起来很复杂……难道无法仅创建一个新分区,将旧的RO挂载并在RW中将新的RO挂载在其上吗?
Ywen 2011年

是的,您也可以从单用户模式执行此操作。看一下unionfs-基本上,RW文件系统接受所有写操作,但是RO文件系统在其下面仍然可见。如果文件已更改,它将“迁移”到RW fs。如果将其删除,则RW fs上实际上存在一个“魔术点文件”以对其进行“屏蔽”。设置unionfs可能会有些麻烦,这就是为什么我建议使用LiveUSB(它为您完成了这一部分,并且您可以从中获得“干净”的系统映像)的原因
BRPocock 2011年

2

也许看看tripwire?Tripwire比您的主动示例更被动,但它可能仍对您有用。

http://www.linuxjournal.com/article/8758

Tripwire是入侵检测系统(IDS),如果您的关键系统文件和报告被破解者(或错误地)破坏或修改,它会不断自动地对其进行控制。它使系统管理员可以立即知道有什么漏洞并进行修复。


1

您是说“ CheckInstall”?没有makefile时可以使用吗?就我而言(Eclim),安装是通过jar安装程序进行的。

不,我的意思是Installwatch,它是CheckInstall的一部分。
qerub 2011年

“ Installwatch与每个动态链接的ELF程序一起使用,覆盖导致文件系统更改的系统调用。其中一些这样的系统调用是open(2)和unlink(2)。” 应该可以在JVM上正常工作。
qerub 2011年

是的,但很显然, Installwatch 不再长期维护。另外,您需要CheckInstall才能还原InstallWatch日志。我还是应该看看。谢谢。

1

使用LD_PRELOAD加载库截获open库函数和改变路径/日志输出/做一个备份打开文件之前。

看一下的源代码strace


是的,但是就像有人说的那样,如果程序是静态链接的怎么办?
Ywen 2011年

0

如果安装程序使用某种打包工具(例如,.deb用于Debian / Ubuntu / ...的.rpm软件包,用于RedHat / CentOS / ...的软件包),则软件包安装程序应知道在安装和删除时该怎么做。而且我相信您应该使用现有的包装系统,而不是发明自己的包装系统。(Linux通常没有Windows那样的安装程序)。

如果您确实希望遵循某些过程所做的文件更改,则可以使用straceltrace捕获系统调用。您还可以赋予和相关的设施。

但我不知道您想要的catch-modifsrevert-modifs

我建议不要为您的应用程序制作安装程序,而应使用软件包管理器,从而为您的应用程序提供.deb(和/或.rpm)软件包。他们将比您自己的安装程序更好地处理依赖性问题。


是的,我一直都使用apt-get。我不是在谈论自己的应用程序,而是在谈论未打包的应用程序。我并不总是手头上有一个.deb。

您提到的未打包应用程序应记录它们使用哪些文件以及应如何安装。

^^如果不这样做怎么办?我知道我可以自己包装它们,但这并不简单。另外,这样的命令对于以更安全的方式测试您制作的某些系统脚本可能很有用。

我同意您的愿望很有趣,但是我不确定它是否容易实现....

0

实现所需目标的简单方法:在全新的虚拟机实例(VMWare工作站,Oracle VirtualBox等)中安装“不受信任”的应用程序。

当您决定不再需要该应用程序时,请删除虚拟机。

您的其他替代方案-捕获文件访问系统调用-可能容易出错且不完整。特别警惕任何需要动态链接才能起作用的解决方案(就像Installwatch那样)。安装程序可以相当合法地执行直接系统调用,也可以进行静态链接。


哇,虚拟机肯定是过大的...我只需要以方便的方式保存和备份一些配置文件。
Ywen 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.