Chattr

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Domaine Attributs étendus de fichiers (ext2/3/4)
Commande chattr / lsattr
Contexte Linux, systèmes de fichiers ext2/ext3/ext4 — attributs indépendants des permissions Unix classiques
Voir aussi ACL (permissions étendues, sujet voisin)

chattr modifie des attributs de fichiers propres aux systèmes de fichiers ext2/3/4, indépendants des permissions Unix classiques (rwx) et des ACL. Ces attributs agissent au niveau du système de fichiers lui-même : un fichier marqué immuable, par exemple, résiste à la suppression même si le propriétaire ou root dispose de tous les droits classiques. lsattr permet d'afficher les attributs actuellement positionnés.

Attribut immuable (+i / -i)

L'attribut i rend un fichier totalement figé : impossible de le supprimer, de le modifier, de le renommer ou de créer un lien vers lui, y compris pour root, tant que l'attribut n'a pas été retiré explicitement.

chattr +i /etc/resolv.conf   # rend le fichier immuable
rm /etc/resolv.conf          # échoue : Operation not permitted, même en root
chattr -i /etc/resolv.conf   # lève l'immutabilité, le fichier redevient modifiable

L'attribut s'applique aussi aux répertoires avec l'option -R (récursif), ce qui protège alors l'ensemble de l'arborescence contre la suppression ou le renommage.

chattr +i -R /etc/important-config/   # protège tout le répertoire
chattr -i -R /etc/important-config/   # annule la protection avant une intervention

Attribut append-only (+a)

L'attribut a autorise uniquement l'ajout de données en fin de fichier (mode append) : toute écriture ailleurs que la fin, ainsi que la suppression, est refusée, même par root. C'est particulièrement adapté aux fichiers de logs qu'on veut protéger d'une purge ou d'une falsification accidentelle, tout en laissant le service continuer à y écrire normalement.

chattr +a /var/log/audit/audit.log   # le service peut toujours écrire à la suite
echo "test" > /var/log/audit/audit.log   # échoue : seul l'ajout (>>) est permis
chattr -a /var/log/audit/audit.log   # retire la contrainte, par exemple pour une rotation manuelle

Journalisation par fichier (+j / -j)

L'attribut j force la journalisation des données (et pas seulement des métadonnées) pour un fichier donné, en plus de ce qui est déjà journalisé pour l'ensemble du système de fichiers.

chattr +j /var/important/data.db   # active la journalisation des données pour ce fichier
chattr -j /var/important/data.db   # désactive à nouveau

⚠️ Cet attribut n'a d'effet que sur un système de fichiers ext3 ou ext4 monté avec la journalisation active (option data=ordered ou data=journal) — sur ext2, ou un ext3/4 monté en data=writeback sans journal, chattr +j est accepté mais reste sans effet réel.

Consulter les attributs (lsattr)

lsattr /etc/resolv.conf        # liste les attributs du fichier
lsattr -d /etc/important-config/   # attributs du répertoire lui-même, pas de son contenu
lsattr -R /etc/important-config/   # récursif, utile après un chattr -R pour vérifier

Un fichier sans attribut particulier affiche une ligne de tirets (----------------e-- par exemple, le e signalant juste l'utilisation des extents, propre à ext4 et sans rapport avec chattr) ; un i ou un a apparaît à la place du tiret correspondant dès que l'attribut est actif.

Cas d'usage : protéger un fichier de configuration critique

L'attribut immuable est utile pour se prémunir d'une suppression ou d'une modification accidentelle d'un fichier sensible — script de démarrage, fichier de configuration réseau, binaire critique — y compris contre une commande lancée par erreur avec les droits root :

chattr +i /etc/fstab
lsattr /etc/fstab   # confirme : ----i---------e---

Toute tentative de modification échoue tant que l'attribut n'est pas levé, ce qui offre une protection simple contre les erreurs de manipulation — mais ce n'est pas une mesure de sécurité contre un attaquant disposant déjà d'un accès root complet, puisque chattr -i reste exécutable par root.

Voir aussi

  • ACL — permissions étendues (utilisateurs et groupes multiples), sujet voisin mais complémentaire