¿Cómo verificar los archivos de configuración modificados en un sistema Debian?

62

¿Cómo encontrar todos los archivos de configuración administrados de Debian que se han cambiado de forma predeterminada?

Malclocke
fuente
1
La pregunta va aquí. La respuesta va abajo.
Dennis Williamson
Moví la respuesta que proporcionaste a tu respuesta.
Zoredache

Respuestas:

78

Para encontrar todos los archivos de configuración administrados de Debian que se han cambiado de forma predeterminada, puede usar un comando como este.

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

Editar (funciona con sistemas localizados):

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

Editar (funciona con paquetes con OK en el nombre del archivo):

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
Malclocke
fuente
Funciona a las mil maravillas en Ubuntu 10.4, te votaría miles de veces :-)
Ludwig Weinzierl
Funciona genial. Sin md5sum --quietembargo, podría utilizar para evitar filtrar archivos OK con awk(y por lo tanto, los problemas de localización?). Por cierto: ¿no sabes cómo incluir archivos sin seguimiento en / etc? ¿Como los de / etc / apache2 / sites-available por ejemplo?
sfussenegger
Sería interesante saber cómo debsums -ecfunciona realmente mi respuesta ( ), porque parece obtener muchos menos resultados que este.
naught101
Además, aparentemente los únicos archivos conf que se verifican para las versiones de paquete son los que aparecen debsums -ec: si uso este método para reinstalar versiones de paquete , algunos de los archivos enumerados a través de este método no se cambian.
naught101
Como una comprobación adicional para ver qué cambios de configuración pueden estar pendientes u obsoletosfind /etc -type f \( -iname '*.ucf-dist' -o -iname '*.ucf-old' -o -iname '*.dpkg-old' -o -iname '*.dpkg-dist' \) -print | sort
sphakka
47

de man debsums:

  debsums -ce
          List changed configuration files.
nada101
fuente
1
Esta es, con mucho, la mejor y más simple respuesta.
mfisch
1
Solo debsums no está instalado de manera predeterminada y es posible que no desee instalarlo.
Alexis Wilke
1
@AlexisWilke: es 218kb y tiene dependencias mínimas ...
naught101
11

Perdón por necro, pero aunque la respuesta de @ naught101 fue correcta para los archivos modificados , no ayudó para los archivos agregados . La solución de @ Graeme es buena, pero depende de etckeeper; No quiero modificar el sistema de archivos.

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

Encontrar archivos en / etc / que debsumsno no informan como válido. Esto significa archivos no rastreados o archivos que no están "bien" (los hashes no coinciden).

blast_hardcheese
fuente
También se debe ejecutar debsums --list-missingpara verificar si faltan sumas de verificación de uno o más paquetes de los archivos incluidos. Hoy en día la salida debe estar vacía.
Mikko Rantalainen
6

O debsums -e | grep FAILED que también mostrará todos los archivos faltantes

(del paquete debsums)

Wookey
fuente
2

Esto podría ser excesivo, pero dado que alguien mencionó a etckeeper y mientras investigaba que me encontré con esta otra gema que podría ser más útil si está tratando de resolver las cosas "después del hecho".

http://devstructure.com/blueprint/

Blueprint es una herramienta de administración de configuración simple que hace ingeniería inversa a los servidores. Descubre lo que ha hecho manualmente, lo almacena localmente en un repositorio Git, genera código que puede recrear sus esfuerzos y lo ayuda a implementar esos cambios en la producción.

dragon788
fuente
No está claro desde su página de inicio (parece un poco desactualizado) si Python-3 es compatible. ¿Alguien lo intentó?
sphakka
A juzgar por el repositorio de GitHub que estuvo activo hace varios años, no apostaría demasiado dinero trabajando en Python3, pero parece bastante bien escrito, por lo que podría no ser una gran cantidad de esfuerzo agregar Python3 apoyo.
dragon788
1

Esto se aleja un poco de la pregunta original, ya que también proporcionará archivos de configuración AGREGADOS en lugar de solo aquellos modificados. Aunque los archivos no incluidos en ningún paquete deb también serán capturados. Ambas conductas pueden ser deseables.

Depende de haber usado etckeeper con git vcs idealmente desde el principio, aunque también debería funcionar si agrega y confirma específicamente archivos previamente modificados después de la primera confirmación. Tenga en cuenta que uno de los problemas aquí es que Ubuntu configura etckeeper para usar Bazaar de manera predeterminada (patrocinador canónico Bazaar), en lugar del valor predeterminado de git establecido por los desarrolladores de etckeeper.

La idea es obtener una lista de todas las confirmaciones que no se realizan automáticamente después y se ejecutan. Luego, enumere los archivos modificados en todos, excepto en el primer commit:

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"

La cadena de filtro también podría extenderse para abarcar otras confirmaciones si se nombran de manera coherente. Puede ser bueno para instalaciones directamente desde un archivo deb o desde el código fuente.

Un archivo notable que esto recoge para mí es mi xorg.conf: actualmente tiene que agregarlo a / etc / X11 usted mismo si lo necesita. También default/grubse recogen mis cambios, parece que esto se copia de / usr / share mediante un script posterior a la instalación en lugar de aparecer como parte de un paquete. Si se ha realizado un cambio en un archivo como este, los métodos relacionados con dpkg no lo revelarán.

Graeme
fuente
1
Para su información, git logahora tiene una --invert-grepopción que permite filtrar confirmaciones poco interesantes sin el uso de sed.
Neil Mayhew