#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
评论
问题在这里。答案如下。我已将您提供的答案移到您的答案中。