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 :
| Attribut | Indicateur | Description |
|---|---|---|
| Ajout seul | a | Le fichier ne peut être ouvert qu'en mode ajout pour l'écriture. |
| Immuable | i | Le fichier ne peut être ni modifié, ni supprimé, ni renommé. |
| Pas d'atime | A | La date d'accès au fichier (atime n'est pas mise à jour afin de réduire les E/S disque. |
| Pas de sauvegarde | d | Le fichier est exclu des sauvegardes effectuées avec le programme dump . |
| Journalisation des données | j | Les données du fichier sont écrites dans le journal avant d'être écrites dans le fichier lui-même. |
| Mises à jour synchrones | S | Les mises à jour du fichier sont écrites de manière synchrone sur le disque. |
| Non supprimable | u | Lorsque 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 :
- Vérifier les autorisations du fichier
Vérifiez les autorisations du fichier avec :ls -l filename - Vérifier les attributs du fichier
Utilisez la commandelsattrpour vérifier la présence d'attributs susceptibles de restreindre les modifications :lsattr filename - Supprimer les attributs restrictifs
Si le fichier possède l'attributi(immuable) oua(ajout seul), supprimez-le avec la commandechattr:chattr -i filename chattr -a filename - Vérifier les modifications
Exécutez à nouveau la commandelsattrpour 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 :
- Vérifiez les attributs du fichier :
lsattr /etc/ssh/known_hosts - Si l'attribut
aest défini, supprimez-le :chattr -a /etc/ssh/known_hosts - Vérifiez que l'attribut a bien été supprimé :
lsattr /etc/ssh/known_hosts - 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.