Cómo realizar un seguimiento de los cambios en / etc /

30

Me gustaría hacer un seguimiento de los cambios en / etc /

Básicamente me gustaría saber si un archivo fue cambiado, por yum updateo por un usuario y revertirlo si no me gusta el cambio. Pensé en usar un VCS como instantáneas git, LVM o btrfs o un programa de respaldo para esto.

¿Qué recomendarías?

taffer
fuente

Respuestas:

32

Parece que quieres etckeeper de Joey Hess de Debian, que gestiona archivos /etcutilizando el control de versiones. Es compatible con git, mercurial, darcs y bazar.

git es el VCS mejor soportado por etckeeper y es más probable que los usuarios de VCS lo sepan. Es posible que su distribución haya elegido modificar etckeeper para que su VCS predeterminado no sea git. Solo debe usar etckeeper con un VCS que no sea git si está enamorado del otro VCS.

Faheem Mitha
fuente
Etckeeper es fácilmente una de las herramientas de administración más valiosas que he instalado en mis máquinas, y es uno de los primeros paquetes que instalo después de configurar un nuevo sistema.
hlovdal
6

No puedo darle una recomendación final, pero puedo compartir algunas reflexiones sobre el tema. Dado que / etc suele ser bastante pequeño, puede optar por una solución simple de bola de alquitrán comprimida. Si apenas necesita revisar el historial, podría ser la solución más fácil de configurar.

Para mí, sería demasiado tedioso administrar volúmenes lógicos solo para hacer un seguimiento de / etc y especialmente porque no creo que las instantáneas LVM hayan sido diseñadas para crearse regularmente como un medio para respaldar una cantidad relativamente pequeña de datos.

btrfs me parece que está mucho mejor equipado para esto, pero aún no es tan estable como, por ejemplo, ext {2,3,4} y la herramienta fsck tampoco está lista todavía. Pero continuamente mejora.

Personalmente, en realidad uso git para rastrear / etc, ¡pero debes tener en cuenta que git no almacena metainformación de archivos como propiedad o permiso! Y también verifique que el directorio .git tenga el permiso correcto. Sin embargo, hay algunas herramientas que ayudan con estos problemas. Es posible que desee echar un vistazo a etc-keeper , que fue desarrollado exactamente para el seguimiento de / etc o usar al menos algo como gitperms o metastore para rastrear la metainformación.

antje-m
fuente
3

Para realizar un seguimiento de los cambios "no deseados" utilizamos un HIDS, en nuestro caso, samhainotros son tripwireo aide. Todos estos sistemas te avisarán cuando ocurra algo no deseado.

A yum updateno debería cambiar nada sin dejar un .rpmnew o .rpmold, si el archivo de configuración está marcado como tal en las rpm correspondientes.

Myselv me pareció una buena práctica hacer una copia de seguridad del archivo que voy a modificar cp -p origfile origfileYYYY-MM-DDcon la fecha del día anterior.

Si todo lo demás falla, llamo a los chicos de las copias de seguridad y solicito una restauración desde la última copia de seguridad "buena" conocida.

Nils
fuente
1

Creo que puedes hacer una instantánea de los archivos / directorios en /etc.

Primero haga una lista de archivos / etc / directorio:

# ls -lha /etc >> /snapshotofetc

Y si haces un archivo en el /etc

# touch testfile

y si retomas una instantánea de /etclo que hemos hecho antes

# ls -lhs /etc /lastsnapshotofetc

y luego puedes comparar las diferencias entre los 2 archivos como este:

# diff /snapshotofetc /lastsnapshotofetc
Vine para
fuente
1

Siempre hay radmind . Puede hacer retroceder ese cambio si no le gusta.

chiggsy
fuente
0

¿Está buscando gestión de configuración o seguimiento / monitoreo de los cambios del sistema de archivos?

Si es antes, miraría puppeto chef. CFEngineexiste para fines comerciales. puppetEs una bestia popular en estos días.

Si es el último, es difícil monitorear los cambios en el sistema de archivos; sin embargo, hay instancias de programas como la inotifyauditoría del sistema de archivos auditctlo SGI, fampero nuevamente, es una cosa de monitoreo y puede ser una implementación costosa (el rendimiento del sistema de archivos puede deteriorarse).

Nikhil Mulley
fuente
etckeeper puede ser un experto silencioso solo para cosas específicas / etc.
Nikhil Mulley
Perdón por ser tan poco preciso. Mejoré la pregunta.
taffer
0

Puede verificar rsnapshotqué mantiene instantáneas por hora de los directorios que desee ... puede configurarlo para que haga 24 horas, luego X diarios, luego X semanales, etc. Tanto como desee para el espacio en disco. Es lo suficientemente inteligente como para vincular cuando los archivos no han cambiado (se usa rsyncdetrás de escena.

Aaron D. Marasco
fuente
0

Podría considerar usar git. Puede es eficiente en el seguimiento de los cambios y muy fácil de usar para algo como esto.

git status # Show changed files
git diff # Show file differences (paged automatically)
git commit -a # Commit all changes. 

Creo que la configuración inicial es así. No lo he hecho por un tiempo.

cd /etc
git init
git add *
git commit -a -m "Created repository"

Este enfoque funciona mejor para un solo servidor, pero se puede combinar con otras herramientas que cambian el repositorio. Esto puede ser útil en su (s) sitio (s) canario (s) para asegurar que ocurran los cambios esperados.

Es posible que pueda usar la clonación para manejar archivos comunes a múltiples servidores.

BillThor
fuente
0

Tengo un script que se ejecuta todos los días y realiza copias de seguridad de los archivos que han cambiado desde la copia de seguridad anterior:

#!bin/bash
ext=$(date +"%Y%m%d")_ChangeS
mkdir -p "$1/$ext" && \
  ionice -c3 rsync -ah --numeric-ids --inplace --backup \
                   --backup-dir="$1/$ext" \
                   --include="/etc" / "$1" && \
  rmdir --ignore-fail-on-non-empty "$1/$ext"

Pase la ruta donde se crearían las copias de seguridad y ese directorio tendrá una lista similar a esta (después de algunas ejecuciones):

20120106_ChangeS  etc
$ls 20120106_ChangeS/etc/
cron.d

Puede modificarlo un poco para registrar los cambios con más frecuencia o usar inotify para activar una versión modificada del script cuando se producen cambios /etc.

trk7
fuente