是否可以列出系统上不属于某个包的每个文件?或者他们是否被修改过?
可能需要使用类似的东西:apt-get、apt-files、dpkg-query 等
就上下文而言,假设继承了无法格式化的旧服务器,并且您想检查每个文件是否都应如此...我知道在 Debian 版本之间升级或删除后不会出现这种情况一个没有“--purge”的包,因为它似乎留下了很多(通常是配置)文件。
同样,如果该服务器要更换为新服务器,您要确保所有配置差异(与基本安装相比)已被转移(或如果不再相关则忽略 - 例如添加了胭脂“端口”行到 sshd_config)。
它还有助于确定是否在不使用 apt-get 的情况下安装了任何东西。
通过查看列表可以看到一个包安装的所有文件
cat /var/lib/dpkg/info/*.list
。大多数软件包都包含文件内容的 md5sums,可以通过查看cat /var/lib/dpkg/info/*.md5sums
. 不过,有些套餐不包括这些金额。如果您安装软件包 debsums,您可以像
debsums -a
这样运行该程序将检查所有已安装文件和配置的 md5sum。请注意,某些软件包不安装配置文件或内容。相反,这些文件是由这些软件包在安装时创建的。这些文件不会出现在与包关联的文件列表或 md5sums 列表中。就包系统而言,这些是它不拥有的数据文件。
我认为你应该在安装系统后首先安装etckeeper包。这个包基本上放入
/etc
了您选择的版本控制系统(我更喜欢 git)。有了这个,你可以准确地看到什么时候发生了变化。很容易将此存储库克隆到新系统,然后针对新系统进行差异。因此,您可以在单个命令中准确查看源系统和目标系统的不同之处。cruft / etckeeper / debsums
除其他外,tiger 和 rkhunter都会报告不属于任何已安装包的文件。
您可能还想查看自通过包管理器安装以来检查文件是否有修改的debsum 。
这些程序有很好的手册页,所以在使用前阅读它们应该没问题。
要查看 debian 软件包中的任何非配置文件自软件包以来是否已被修改,您可以使用 debsums。
查看是否已安装第三方软件包比较棘手,您可能可以将版本号和校验和与 packages.debian.org 中的信息进行比较,但我不确定自动化它会有多困难。
检查配置文件修改很困难,因为可以通过多种不同方式管理配置文件。如果它们是“conffiles”,那么 dpkg 会知道它们是否被修改,但许多配置文件没有。
如果服务器保持最新,那么与安装了相同软件包的相同版本的 debian 的全新安装进行交叉比较可能是一个不错的选择。显然,如果您不想更新服务器(我想您可以制作服务器的映像并更新它,但这会打开一罐它自己的蠕虫)。