Commandes chattr et lsattr sous Linux : un guide des attributs de fichier

Introduction

Sous Linux, certains attributs de fichiers et de répertoires ne peuvent être consultés ou modifiés qu'à l'aide de commandes spécifiques. Ces attributs vous permettent de restreindre les opérations sur les fichiers, par exemple en empêchant la suppression ou la modification, même par l'utilisateur root. Cette fonctionnalité est particulièrement utile pour sécuriser les fichiers et répertoires critiques.

Dans ce guide, nous aborderons deux commandes essentielles :

  • chattr: utilisée pour définir ou supprimer des attributs de fichier.
  • lsattr: utilisée pour afficher les attributs de fichier.

Ces commandes sont couramment utilisées sur les systèmes de fichiers ext2, ext3 et ext4 et ce sont des outils essentiels pour les administrateurs système.


Qu'est-ce que la commande chattr ?

La commande chattr vous permet de modifier les attributs de fichier sur un système de fichiers Linux. Elle utilise des modes symboliques pour ajouter, supprimer ou définir des attributs spécifiques. Ces attributs peuvent contrôler le comportement des fichiers, par exemple en les rendant immuables ou en ajout seul.

Caractéristiques principales de chattr:

  • Protéger les fichiers contre toute suppression ou modification accidentelle.
  • Restreindre les opérations sur les fichiers, même pour les utilisateurs root.
  • Permettre une gestion avancée des fichiers et une sécurité renforcée.

Documentation officielle de chattr

Pour plus de détails, consultez la documentation officielle de chattr :
Linux Man Pages – chattr


Qu'est-ce que la commande lsattr ?

La commande lsattr répertorie les attributs des fichiers et répertoires sur un système de fichiers ext2, ext3 ou ext4 . Elle est particulièrement utile pour le dépannage lorsque vous rencontrez des problèmes d'accès aux fichiers.

Caractéristiques principales de lsattr:

  • Afficher les attributs de fichier dans un format facile à lire.
  • Résoudre les problèmes d'accès et de modification causés par les attributs de fichier.

Documentation officielle de lsattr

Pour plus de détails, consultez la documentation officielle de lsattr :
Linux Man Pages – lsattr


Syntaxe des commandes

chattr Syntaxe de la commande

chattr [ -RVf ] [ -v version ] [ -p project ] [ + | - | = [attributes] ] files...

Explication :

  • -R: modifier récursivement les attributs des répertoires et de leur contenu.
  • -V: afficher la sortie détaillée et la version du programme.
  • -f: supprimer la plupart des messages d'erreur.
  • -v version: définir le numéro de version/génération du fichier.
  • -p project: définir le numéro de projet du fichier.
  • +: ajouter les attributs spécifiés.
  • -: supprimer les attributs spécifiés.
  • =: définir les attributs exactement comme spécifié.
  • attributes: une combinaison d'indicateurs d'attribut (par exemple, i, a, etc.).
  • files...: fichiers ou répertoires cibles.

Exemples :

  • Ajouter l'attribut immuable :chattr +i filename
  • Supprimer l'attribut ajout seul :chattr -a filename
  • Définir les attributs exactement (par exemple, immuable et ajout seul) :chattr =ia filename

lsattr Syntaxe de la commande

lsattr [ -RVadlpv ] [ files... ]

Explication :

  • -R: répertorier récursivement les attributs des répertoires et de leur contenu.
  • -V: afficher la version du programme.
  • -a: répertorier tous les fichiers, y compris les fichiers cachés (ceux commençant par .).
  • -d: répertorier les répertoires comme des fichiers ordinaires, plutôt que de répertorier leur contenu.
  • -l: afficher les options en utilisant des noms longs au lieu d'abréviations d'une seule lettre.
  • -p: répertorier le numéro de projet du fichier.
  • -v: répertorier le numéro de version/génération du fichier.
  • files...: fichiers ou répertoires cibles.

Exemples :

  • Afficher les attributs d'un fichier :lsattr filename
  • Afficher les attributs de tous les fichiers d'un répertoire :lsattr /path/to/directory

Attributs de fichier courants et leurs indicateurs

Le tableau ci-dessous résume les attributs de fichier les plus courants et leurs significations :

AttributIndicateurDescription
Ajout seulaLe fichier ne peut être ouvert qu'en mode ajout pour l'écriture.
ImmuableiLe fichier ne peut être ni modifié, ni supprimé, ni renommé.
Pas d'atimeALa date d'accès au fichier (atime n'est pas mise à jour afin de réduire les E/S disque.
Pas de sauvegardedLe fichier est exclu des sauvegardes effectuées avec le programme dump .
Journalisation des donnéesjLes données du fichier sont écrites dans le journal avant d'être écrites dans le fichier lui-même.
Mises à jour synchronesSLes mises à jour du fichier sont écrites de manière synchrone sur le disque.
Non supprimableuLorsque le fichier est supprimé, ses données sont conservées en vue d'une éventuelle récupération.

Pour la liste complète des attributs, consultez la page de manuel de chattr :
Linux Man Pages – chattr


Dépannage avec chattr et lsattr

Problème : impossible de modifier ou de supprimer un fichier

Si vous rencontrez une erreur comme celle-ci :

E212: Can't open file for writing

Suivez ces étapes :

  1. Vérifier les autorisations du fichier
    Vérifiez les autorisations du fichier avec :ls -l filename
  2. Vérifier les attributs du fichier
    Utilisez la commande lsattr pour vérifier la présence d'attributs susceptibles de restreindre les modifications :lsattr filename
  3. Supprimer les attributs restrictifs
    Si le fichier possède l'attribut i (immuable) ou a (ajout seul), supprimez-le avec la commande chattr :chattr -i filename chattr -a filename
  4. Vérifier les modifications
    Exécutez à nouveau la commande lsattr pour confirmer que les attributs ont bien été supprimés :lsattr filename

Exemple pratique : a Attribut

Scénario :

Vous ne parvenez pas à modifier ou à renommer le fichier /etc/ssh/known_hosts.

Étapes de résolution :

  1. Vérifiez les attributs du fichier :lsattr /etc/ssh/known_hosts
  2. Si l'attribut a est défini, supprimez-le :chattr -a /etc/ssh/known_hosts
  3. Vérifiez que l'attribut a bien été supprimé :lsattr /etc/ssh/known_hosts
  4. Vous devriez maintenant pouvoir enregistrer ou renommer le fichier.

Conclusion

La commande chattr et lsattr sont des outils inestimables pour gérer les attributs de fichier sous Linux. Elles offrent une couche de protection supplémentaire pour les fichiers et répertoires critiques, ce qui les rend essentielles pour les administrateurs système. Que vous sécurisiez des fichiers de configuration ou résolviez des problèmes d'accès aux fichiers, la maîtrise de ces commandes améliorera votre expertise Linux.

Laisser un commentaire