如何检查在Debian系统上修改的configuration文件?

如何find所有Debianpipe理的configuration文件已经从默认的更改?

要find所有Debianpipe理的configuration文件,这些configuration文件已经从默认的改变了,你可以使用这样的命令。

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

编辑(使用本地化系统):

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

编辑(与文件名一起使用OK):

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

man debsums

  debsums -ce List changed configuration files. 

对不起,坏了,但@ naught101的答案是正确的修改后的文件,它没有帮助添加文件。 @ Graeme的解决scheme很好,但依赖于etckeeper; 我不想修改文件系统。

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

查找/ etc / debsums没有报告为有效的文件。 这意味着未跟踪的文件或不是“OK”的文件(散列不匹配)。

我通常喜欢立即在系统上设置etckeeper。 有了像etckeeper这样的东西,我不仅可以在文件不同的时候find,而且实际上我可以比较它们的差异。

看到:

  • 使用服务器configuration文件的版本控制?
  • 你推荐什么工具来跟踪Linux / Unix服务器上的变化。

或者debsums -e | grep失败,这也将显示所有缺less的conffiles

(来自debsums包)

这与原来的问题稍有不同,因为它也会赋予ADDEDconfiguration文件,而不是仅仅修改这些文件。 虽然没有包含在任何deb包中的文件也将被捕获。 这两种行为都可能是可取的。

这取决于使用etckeeper与理想的git vcs从开始,但它也应该工作,如果你第一次提交专门添加和提交以前更改的文件。 请注意,这里的一个问题是Ubuntuconfigurationetckeeper默认使用Bazaar(规范赞助商Bazaar),而不是etckeeper开发者设置的git默认值。

这个想法是获得所有提交的列表,它们在运行之后不会自动生成。 然后列出除了第一次提交之外全部更改的文件:

 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" 

filterstring也可以扩展为包含其他提交,如果他们一致地命名。 可能会直接从deb文件或源代码安装。

一个值得注意的文件是我的xorg.conf – 你现在必须自己添加这个到/ etc / X11,如果你需要的话。 另外我的default/grub变化被拿起,似乎这是从一个后安装脚本从/ usr / share复制,而不是被列为一个包的一部分。 如果对这样的文件进行了更改,dpkg相关的方法将不会显示它。