
etckeeper est un outil simple mais puissant qui me permet de suivre
l’évolution des fichiers de configuration sous Linux en utilisant Git. En
versionnant le répertoire /etc, je peux facilement revenir à une configuration
antérieure après une mise à jour, un changement malheureux ou une erreur de
manipulation. Un indispensable pour tout administrateur qui veut dormir
tranquille.
Pourquoi versionner le répertoire /etc ?
Section intitulée « Pourquoi versionner le répertoire /etc ? »Le répertoire /etc contient l’ensemble des fichiers de configuration système sur une machine Linux. Cela inclut des éléments aussi critiques que la configuration réseau, les comptes utilisateurs, les services démarrés au boot, les règles de sécurité et bien plus encore. Si un fichier est accidentellement modifié ou supprimé, les conséquences peuvent être lourdes : panne réseau, impossibilité de démarrer des services essentiels, voire blocage complet du serveur.
C’est ici que versionner /etc avec Git via etckeeper prend tout son sens. Voici pourquoi :
- Historique complet des changements : chaque modification est enregistrée, datée et associée à un auteur. Cela me permet d’identifier facilement quand et pourquoi un changement a été fait.
- Retour en arrière simplifié : en cas de problème, je peux restaurer rapidement une ancienne version d’un fichier ou de l’ensemble du répertoire.
- Audit facilité : lors d’une analyse de sécurité, pouvoir montrer un historique clair de la configuration est un vrai plus.
- Travail en équipe sécurisé : sur des systèmes gérés par plusieurs administrateurs, cela permet d’éviter des conflits ou des erreurs silencieuses.
- Sauvegarde efficace : même si ce n’est pas une sauvegarde complète du système, garder une copie versionnée de /etc est un élément clé d’une bonne stratégie de sauvegarde des fichiers /etc.
Installation d’etckeeper sur différentes distributions
Section intitulée « Installation d’etckeeper sur différentes distributions »Pour installer etckeeper, je dois d’abord choisir le gestionnaire de paquets adapté à ma distribution Linux. L’outil est disponible dans les dépôts officiels de la plupart des distributions modernes.
Sur Debian, Ubuntu et dérivés
Section intitulée « Sur Debian, Ubuntu et dérivés »sudo apt updatesudo apt install etckeeperL’installation configure automatiquement Git comme système de contrôle de version par défaut. Si je préfère Mercurial, Bazaar ou Darcs, je peux modifier ce choix après l’installation.
Sur CentOS, RHEL et Fedora
Section intitulée « Sur CentOS, RHEL et Fedora »sudo dnf install etckeeperou, sur les anciennes versions utilisant yum :
sudo yum install etckeeperSur Arch Linux et Manjaro
Section intitulée « Sur Arch Linux et Manjaro »sudo pacman -S etckeeperVérification de l’installation
Section intitulée « Vérification de l’installation »Une fois installé, je peux vérifier la version d’etckeeper avec :
etckeeper --versionConfiguration initiale et choix du gestionnaire de version
Section intitulée « Configuration initiale et choix du gestionnaire de version »Après l’installation d’etckeeper, je dois effectuer une configuration de base pour l’adapter à mon environnement.
Le fichier principal de configuration se trouve ici :
/etc/etckeeper/etckeeper.confJe commence par ouvrir ce fichier avec mon éditeur préféré :
sudo vi /etc/etckeeper/etckeeper.confSi vous ne maitrisez pas l’éditeur de fichiers vi, je vous recommande de lire mon guide sur vi pour mieux comprendre son fonctionnement.
Choisir le système de contrôle de version (VCS)
Section intitulée « Choisir le système de contrôle de version (VCS) »Par défaut, Git est utilisé, ce qui est parfait pour la majorité des besoins. Si je souhaite utiliser un autre VCS (comme Mercurial ou Bazaar), je peux modifier la ligne suivante :
VCS="git"Je peux remplacer "git" par "hg", "bzr" ou "darcs" selon mes préférences
et outils installés.
Initialiser le dépôt
Section intitulée « Initialiser le dépôt »Si ce n’est pas déjà fait automatiquement, je peux initialiser manuellement le dépôt Git dans /etc :
sudo etckeeper initsudo etckeeper commit "Initial commit of /etc"Cela crée un premier snapshot de l’état actuel de tous les fichiers de configuration.
Paramétrer les options additionnelles
Section intitulée « Paramétrer les options additionnelles »Dans le fichier de configuration, je peux également :
- Activer les commits automatiques après les mises à jour de paquets.
- Décider si je souhaite inclure ou exclure certains types de fichiers.
- Configurer l’usage de sudo pour toutes les commandes liées à etckeeper.
En prenant quelques minutes pour ajuster ces réglages, je m’assure que la sauvegarde des fichiers /etc est fiable, cohérente et adaptée à mon environnement système.
Intégration avec les gestionnaires de paquets
Section intitulée « Intégration avec les gestionnaires de paquets »L’un des grands avantages d’etckeeper est son intégration automatique avec les gestionnaires de paquets. À chaque installation, mise à jour ou suppression de paquet, un commit Git est généré pour enregistrer les modifications dans /etc.
Comment ça fonctionne
Section intitulée « Comment ça fonctionne »etckeeper utilise des scripts de hooks qui sont déclenchés automatiquement par les gestionnaires de paquets :
À chaque opération sur les paquets, un commit automatique est réalisé si des changements sont détectés.
Exemple pratique
Section intitulée « Exemple pratique »Quand j’installe un nouveau paquet avec apt :
sudo apt install nginxetckeeper va, en coulisses :
- Effectuer un commit avant l’installation pour enregistrer l’état actuel.
- Installer le paquet.
- Effectuer un commit après l’installation pour capturer toute modification apportée à /etc.
Je peux voir les changements avec une simple commande Git :
cd /etcsudo git log
commit acd94001bbdb8ed8c0e3196e8c760566d8b546e9 (HEAD -> master)Author: Stéphane ROBERT <toto@toto.com>Date: Sat Apr 26 12:33:37 2025 +0000
committing changes in /etc made by "apt install nginx"
Packages with configuration changes: +nginx-common 1.24.0-2ubuntu7.3 all
Package changes: +nginx 1.24.0-2ubuntu7.3 amd64 +nginx-common 1.24.0-2ubuntu7.3 allActivation ou désactivation des commits automatiques
Section intitulée « Activation ou désactivation des commits automatiques »Dans le fichier /etc/etckeeper/etckeeper.conf, je peux ajuster cette option :
COMMIT_AFTER_INSTALL="yes"Si je préfère gérer manuellement les commits, je peux changer ce paramètre en
"no".
Grâce à cette automatisation des commits de configuration, je garde un historique précis sans devoir y penser à chaque manipulation de mon système.
Automatisation des commits avec cron et systemd
Section intitulée « Automatisation des commits avec cron et systemd »Même si etckeeper réalise des commits lors des opérations de gestion de paquets, je trouve important d’ajouter une automatisation périodique pour capturer aussi les changements manuels sur /etc.
Sur les systèmes modernes, je préfère utiliser systemd pour plus de flexibilité.
J’active juste le timer etckeeper-autocommit qui va exécuter un commit automatique tous les jours.
sudo systemctl enable --now etckeeper.timerGestion des métadonnées et des permissions
Section intitulée « Gestion des métadonnées et des permissions »Quand je versionne /etc avec etckeeper, je dois aussi penser à préserver les métadonnées des fichiers, comme les permissions, les propriétaires et les groupes. Ces informations sont essentielles pour garantir le bon fonctionnement du système après une restauration.
Métadonnées prises en charge
Section intitulée « Métadonnées prises en charge »etckeeper s’occupe automatiquement de préserver les métadonnées essentielles, telles que :
- Les permissions (
chmod) - Les propriétaires (
chown) - Les groupes (
chgrp) - Les dates de modification (dans certaines configurations)
Pour cela, il génère des fichiers spéciaux contenant les métadonnées à chaque commit.
Ces fichiers sont stockés dans le dépôt Git sous forme de fichiers supplémentaires, comme :
.etckeeper.etckeeper-metaActivation de la gestion avancée
Section intitulée « Activation de la gestion avancée »Dans le fichier de configuration /etc/etckeeper/etckeeper.conf, je peux
vérifier cette option :
PRESERVE_METADATA="yes"Elle est activée par défaut sur la plupart des distributions. Si elle est désactivée, je risque de perdre des réglages critiques après une restauration.
Bonnes pratiques pour les métadonnées
Section intitulée « Bonnes pratiques pour les métadonnées »- Toujours commiter après une modification importante dans /etc pour éviter d’oublier les changements de permissions.
- Vérifier les fichiers de métadonnées en cas de migration ou de restauration d’un système sur une nouvelle machine.
- Restaurer avec précaution : si je fais un
git checkoutsur un fichier sensible, je dois m’assurer que ses permissions sont correctement rétablies.
Grâce à cette gestion des permissions et des propriétaires, l’usage d’etckeeper devient fiable même pour des environnements sensibles où la moindre erreur de droit d’accès pourrait compromettre la sécurité du système.
Sauvegarde et restauration des configurations
Section intitulée « Sauvegarde et restauration des configurations »L’un des principaux atouts d’etckeeper est de faciliter la sauvegarde et la restauration de la configuration système sans efforts complexes.
Sauvegarder le répertoire /etc
Section intitulée « Sauvegarder le répertoire /etc »Pour une sauvegarde complète, je m’assure de copier non seulement les fichiers de /etc, mais aussi l’historique Git associé. Je peux utiliser une commande simple comme :
sudo tar czf etc-backup.tar.gz /etcCela inclut tout le contenu de /etc, y compris le dossier caché .git qui
contient l’historique des changements.
Je peux ensuite stocker cette archive sur un serveur de sauvegarde externe ou dans une solution de stockage cloud.
Restaurer la configuration avec etckeeper
Section intitulée « Restaurer la configuration avec etckeeper »En cas de problème, je peux restaurer l’archive sauvegardée :
sudo tar xzf etc-backup.tar.gz -C /Puis je peux revenir à un état antérieur avec Git :
cd /etcsudo git log --onelinesudo git checkout <id_commit>Cela me permet de restaurer rapidement un fichier spécifique ou l’ensemble du répertoire /etc à une date donnée.
Exemple : restaurer un fichier spécifique
Section intitulée « Exemple : restaurer un fichier spécifique »Si, par exemple, j’ai cassé ma configuration nginx, je peux restaurer uniquement ce fichier :
cd /etcsudo git checkout HEAD^ -- nginx/nginx.confJe récupère ainsi la dernière version fonctionnelle sans affecter le reste du système.
Grâce à la sauvegarde des fichiers /etc avec etckeeper, je bénéficie d’une solution fiable pour sécuriser mes configurations critiques et réduire le temps de récupération en cas d’incident.
Restaurer des fichiers ou la totalité de /etc avec etckeeper
Section intitulée « Restaurer des fichiers ou la totalité de /etc avec etckeeper »Avec etckeeper, restaurer une ancienne version de /etc est simple grâce à Git.
Voir l’historique des changements
Section intitulée « Voir l’historique des changements »Listez les commits passés :
cd /etcsudo git log --onelineExemple :
e2d9c24 Ajout de la config SSL nginxa7d0f91 Commit après update des paquets1f3c6b2 Commit initialRestaurer tout /etc à un état précédent
Section intitulée « Restaurer tout /etc à un état précédent »Si vous voulez restaurer tout le répertoire /etc à une version antérieure :
sudo git checkout <ID_du_commit>Par exemple :
sudo git checkout a7d0f91Attention : cela remplace l’ensemble du contenu de /etc avec l’état du commit. Pensez à faire une sauvegarde avant en cas de doute !
Restaurer un fichier spécifique
Section intitulée « Restaurer un fichier spécifique »Si seule une partie doit être restaurée (ex: nginx.conf cassé) :
sudo git checkout <ID_du_commit> -- chemin/vers/le/fichierExemple :
sudo git checkout HEAD^ -- nginx/nginx.confCela récupère uniquement l’ancien fichier sans toucher au reste.
Annuler des changements non commités
Section intitulée « Annuler des changements non commités »Si vous avez fait des modifications locales non désirées :
sudo git checkout -- etc/[<dossier>/]<fichier>Cela annule les modifications non encore commités.
Bonnes pratiques pour l’utilisation d’etckeeper
Section intitulée « Bonnes pratiques pour l’utilisation d’etckeeper »Pour tirer le meilleur parti d’etckeeper et assurer une gestion efficace de la configuration système, je suis plusieurs bonnes pratiques simples mais essentielles.
Toujours documenter les commits
Section intitulée « Toujours documenter les commits »Même si etckeeper peut créer des messages de commit automatiques, je préfère écrire des messages clairs et précis lorsque je fais des modifications manuelles :
sudo etckeeper commit "Ajout de la configuration SSL pour nginx"Cela rend l’historique beaucoup plus lisible pour moi et pour mes collègues.
Ne pas versionner certains fichiers sensibles
Section intitulée « Ne pas versionner certains fichiers sensibles »Certains fichiers dans /etc peuvent contenir des informations confidentielles ou dynamiques, comme :
- Les clés privées
- Les mots de passe
- Les jetons d’API
Je peux les exclure en les ajoutant dans .etckeeper-ignore :
/etc/etckeeper-ignoreExemple :
/etc/ssh/ssh_host_*/etc/ssl/private/*Cela renforce la sécurité de mon dépôt tout en allégeant l’historique.
Sauvegarder également le dépôt Git
Section intitulée « Sauvegarder également le dépôt Git »Avoir Git sous /etc ne dispense pas de faire des sauvegardes
régulières du répertoire /etc/.git en plus de /etc. En cas de corruption
ou de panne disque, je pourrais ainsi restaurer non seulement les fichiers, mais
aussi leur historique.
Utiliser les branches pour les tests
Section intitulée « Utiliser les branches pour les tests »Quand je dois tester une nouvelle configuration sensible (comme une migration de serveur ou une nouvelle version de service), je peux créer une branche dédiée :
cd /etcsudo git checkout -b test-migrationAprès validation, je fusionne ou abandonne les changements sans toucher directement à ma configuration principale.
Vérifier régulièrement l’état du dépôt
Section intitulée « Vérifier régulièrement l’état du dépôt »Un rapide contrôle avec Git permet d’assurer que tout est sous contrôle :
cd /etcsudo git statusCela me permet de détecter tout changement non commité ou conflit potentiel avant qu’il ne devienne un problème.
Protéger l’accès au dépôt Git
Section intitulée « Protéger l’accès au dépôt Git »Le dépôt .git dans /etc contient potentiellement des informations
sensibles. Il est donc essentiel de restreindre son accès :
sudo chmod -R go-rwx /etc/.gitAinsi, seuls les administrateurs du système peuvent consulter ou modifier l’historique.
Ne jamais pousser /etc sur un dépôt public
Section intitulée « Ne jamais pousser /etc sur un dépôt public »Même si Git encourage à pousser les dépôts vers des serveurs distants, je dois éviter de rendre /etc accessible sur Internet. En cas de besoin, j’utilise un serveur privé ou une solution chiffrée.
Exemple de dépôt privé :
git remote add backup ssh://monserveurprivé:/backups/etc.gitgit push backup masterVérifier les informations sensibles dans les commits
Section intitulée « Vérifier les informations sensibles dans les commits »Avant chaque commit, je passe en revue les modifications pour m’assurer qu’aucune donnée confidentielle n’est enregistrée :
sudo git diffCela m’évite de compromettre des clés SSH, des mots de passe ou d’autres fichiers critiques.
Utiliser des clés SSH sécurisées pour les sauvegardes
Section intitulée « Utiliser des clés SSH sécurisées pour les sauvegardes »Si je synchronise mes sauvegardes via Git, j’utilise des clés SSH spécifiques avec des permissions restreintes pour renforcer la sécurité du processus.
Mettre en place des alertes sur les changements critiques
Section intitulée « Mettre en place des alertes sur les changements critiques »Je peux configurer un outil de surveillance comme auditd pour être averti en cas de modification non autorisée dans /etc, en complément d’etckeeper.
En prenant ces précautions de sécurité avec etckeeper, je m’assure que la sauvegarde des fichiers de configuration reste un atout et non une faille dans l’infrastructure système.
Conclusion et ressources supplémentaires
Section intitulée « Conclusion et ressources supplémentaires »En utilisant etckeeper, je transforme la gestion de /etc en une tâche simple, fiable et contrôlée. Versionner mes fichiers de configuration avec Git me permet de documenter chaque modification, de restaurer rapidement un état stable et de renforcer la sécurité de mon système Linux.
Je retiens que pour tirer le meilleur parti d’etckeeper, je dois :
- Configurer correctement l’outil dès l’installation.
- Activer les commits automatiques et programmer des sauvegardes régulières.
- Être vigilant sur la protection des données sensibles.
- Adopter des bonnes pratiques de gestion de dépôt.
Plus d’infos
Section intitulée « Plus d’infos »- La documentation officielle etckeeper
- Le guide sur la administration de systèmes Linux