如何查找所有已更改为默认值的Debian托管配置文件?

评论

问题在这里。答案如下。

我已将您提供的答案移到您的答案中。

#1 楼

要查找所有已更改为默认值的Debian托管配置文件,可以使用以下命令。

dpkg-query -W -f='${Conffiles}\n' '*' | awk 'OFS="  "{print ,}' | md5sum -c 2>/dev/null | awk -F': ' ' !~ /OK/{print }'


编辑(适用于本地化系统):

dpkg-query -W -f='${Conffiles}\n' '*' | awk 'OFS="  "{print ,}' | LANG=C md5sum -c 2>/dev/null | awk -F': ' ' !~ /OK/{print }' | sort | less


编辑(使用文件名中带有OK的软件包):

dpkg-query -W -f='${Conffiles}\n' '*' | awk 'OFS="  "{print ,}' | LANG=C md5sum -c 2>/dev/null | awk -F': ' ' !~ /OK$/{print }' | sort | less


评论


在Ubuntu 10.4上像魅力一样工作,我会投票上千遍:-)

–路德维希·魏尼尔(Ludwig Weinzierl)
2010年5月2日,19:30

效果很好。您可以使用md5sum --quiet来避免使用awk过滤OK文件(以及本地化问题?)。顺便说一句:您不知道如何在/ etc中包括未跟踪的文件?例如/ etc / apache2 / sites-available中的那些?

–熏蒸鸡蛋
13年5月31日在10:02

知道我的答案(debsums -ec)的实际工作方式将很有趣,因为似乎得到的结果比这少得多。

–naught101
13年7月21日在22:59

同样,显然,仅检查conf文件的软件包版本,然后是debsums -ec中出现的文件:如果我使用此方法恢复软件包版本,则通过此方法列出的某些文件不会更改。

–naught101
13年7月21日在23:20



作为其他检查以查看哪些配置更改可能尚未完成或已过时,请找到/ etc -type f \(-iname'* .ucf-dist'-o -iname'* .ucf-old'-o -iname'* .dpkg -old'-o -iname'* .dpkg-dist'\)-print |分类

– sphakka
19-10-24在15:10

#2 楼

来自man debsums

  debsums -ce
          List changed configuration files.


评论


到目前为止,这是最简单,最好的答案。

–mfisch
2013年12月19日15:53

默认情况下,仅未安装debsums,您可能不想安装它。

– Alexis Wilke
16年7月16日在21:08

@AlexisWilke:它是218kb,具有最小的依赖关系...

–naught101
16年7月18日在2:03

您过去十年来哪里?!?!十年前,我曾经在Redhat系统上使用rpm -Va做类似的事情。我一直需要这个。谢谢。

–丹·加思韦特(Dan Garthwaite)
19年12月30日在16:13

#3 楼

很抱歉necro,但是@ naught101的答案对于修改后的文件是正确的,但对于添加的文件却无济于事。 @Graeme的解决方案很好,但是取决于etckeeper;我不想修改文件系统。

find /etc -type f | grep -vFf <(debsums -e -r /etc | sed 's/[[:space:]]*OK$//')


在/ etc /中查找debsums无效的文件。这意味着未跟踪的文件或不是“确定”(哈希不匹配)的文件。

评论


还应该运行debsums --list-missing来检查一个或多个软件包是否缺少所包含文件的校验和。如今,输出应该为空。

– Mikko Rantalainen
19-09-22在16:53

#4 楼

我通常很喜欢立即在系统上设置etckeeper。使用诸如etckeeper之类的东西,我不仅可以找到文件不同的时间,而且还可以得到它实际不同之处的区别。

请参见:


对服务器配置文件使用修订控制吗?
建议您使用哪种工具来跟踪Linux / Unix服务器上的更改。


#5 楼

或debsums -e | grep FAILED
,它还会显示所有丢失的配置文件

(来自debsums包)

#6 楼

这可能是多余的,但是由于有人提到过etckeeper,并且在我调查我遇到其他宝石时,如果您尝试“在事后”解决问题,这可能会更有用。

http: //devstructure.com/blueprint/


蓝图是对服务器进行反向工程的简单配置管理工具。它可以计算出您手动执行的操作,将其存储在本地的Git存储库中,生成可以重新创建工作的代码,并帮助您将这些更改部署到生产中。


评论


如果支持Python-3,则从他们的主页不清楚(看起来有些过时)。有人尝试过吗?

– sphakka
19-10-24在16:09



从几年前上次活跃的GitHub回购来看,我不会在开箱即用的Python3上投入太多资金,但是看起来写得不错,因此在Python3中添加它可能不会花费很多精力支持。

–dragon788
19-10-24在19:24

#7 楼

这与原始问题有所不同,因为它还会提供ADDED配置文件,而不是修改过的文件。尽管未包含在任何deb软件包中的文件也会被捕获。这两种行为都可能是理想的。

这取决于从一开始就理想地将etckeeper与git vcs一起使用,尽管如果您在第一次提交后专门添加并提交先前更改的文件,它也可以工作。请注意,这里的陷阱是Ubuntu将默认配置为使用Bazaar(规范赞助商Bazaar)的etckeeper,而不是etckeeper开发人员设置的git default。

该想法是获取所有提交的列表并在运行后不会自动生成。然后列出除了第一个提交以外所有文件中更改的文件:

filter_sed="/committing changes in \/etc after apt run$/d"

etckeeper vcs log --oneline |
  sed "$filter_sed; $d; s/ .*//" |
  xargs etckeeper vcs show --name-only --format=format: |
  sort |
  uniq |
  sed "/^$/d"


如果名称一致,则过滤器字符串也可以扩展为包含其他提交。可能是直接从deb文件或从源代码安装的最佳选择。

我最喜欢的一个文件是我的xorg.conf-当前,如果您要将此文件添加到/ etc / X11中,需要它。我的default/grub更改也被选中,这似乎是通过安装后脚本从/ usr / share复制的,而不是作为软件包的一部分列出的。如果对这样的文件进行了更改,则与dpkg相关的方法将不会显示该文件。

评论


仅供参考,git log现在具有--invert-grep选项,该选项允许在不使用sed的情况下过滤掉无用的提交。

–尼尔·梅休(Neil Mayhew)
16-09-19的16:15