- Linux combine les permissions traditionnelles et les attributs étendus pour contrôler précisément le comportement des fichiers et des répertoires.
- Les attributs système sont gérés avec chattr et lsattr, permettant des fonctions telles que l'immuabilité, l'ajout uniquement ou la synchronisation disque forcée.
- Les attributs utilisateur étendus, gérés avec attr, setfattr et getfattr, ajoutent des métadonnées clé-valeur sans affecter les permissions classiques.
- Il est essentiel de préserver les attributs lors de la copie, du déplacement ou de la synchronisation de fichiers à l'aide d'options spécifiques dans cp, tar, rsync et autres utilitaires.

Si vous utilisez Linux quotidiennement, vous aurez tôt ou tard besoin de droits d'accès plus étendus que les simples permissions de lecture, d'écriture et d'exécution. Les attributs de fichiers et les permissions avancées font toute la différence entre un système bien protégé et un système où n'importe qui peut, même involontairement, causer des problèmes.
Dans cet article, nous examinerons de manière claire et concise les commandes essentielles pour la gestion des attributs de fichiers et de répertoires sous Linux : des permissions de base et leur représentation octale aux attributs système et utilisateur étendus, en passant par des utilitaires tels que ` chattr` , `lsattr` , `attr` , `setfattr` et `getfattr` . Vous découvrirez des exemples concrets, des commandes spécifiques et des conseils pratiques pour appliquer ces connaissances à votre ordinateur ou serveur.
Permissions et attributs de base des fichiers sous Linux
Dans tout système Linux, chaque fichier et répertoire possède des permissions et des attributs qui déterminent les actions possibles sur cette ressource pour son propriétaire, son groupe et les autres utilisateurs. Bien que ces notions soient souvent regroupées, il est important de bien distinguer les permissions classiques des attributs étendus.
Les permissions classiques déterminent si un fichier ou un répertoire peut être lu, écrit ou exécuté . Ces permissions sont appliquées à trois niveaux hiérarchiques : propriétaire (utilisateur), groupe et autres utilisateurs. En cas de conflit, le niveau le plus spécifique prévaut : d’abord le propriétaire, puis le groupe, et enfin les autres utilisateurs.
La commande `ls -l` affiche une chaîne de dix caractères. Le premier caractère indique le type d'objet (`d` pour un répertoire, `-` pour un fichier, etc.) et les neuf caractères suivants indiquent les permissions pour le propriétaire, le groupe et les autres utilisateurs. Ainsi, `drwxr-xr-x` signifie un répertoire avec les permissions `rwx(7)` pour le propriétaire , `rx(5)` pour le groupe et `rx(5)` pour tous les autres utilisateurs.
Ces permissions peuvent également être exprimées en notation octale, plus pratique pour les ajuster simultanément. Chaque permission correspond à une valeur : lecture = 4, écriture = 2 et exécution = 1. Par exemple, rwx = 4 + 2 + 1 = 7, rx = 4 + 0 + 1 = 5 et rw- = 4 + 2 + 0 = 6. Une permission de 755 signifie : 7 pour le propriétaire, 5 pour le groupe et 5 pour tous les autres utilisateurs.
Pour modifier ces permissions, on utilise la commande `chmod` , tandis que `chown` permet de changer le propriétaire et le groupe d'un fichier ou d'un dossier. Ces deux commandes sont essentielles en administration système, mais elles ne couvrent pas tous les comportements possibles des fichiers ; c'est là qu'interviennent les attributs étendus.
Attributs étendus : bien plus que des permissions
Outre les permissions standard, de nombreux systèmes de fichiers Linux (notamment ext2, ext3 et ext4 ) permettent d'utiliser des attributs étendus qui ajoutent des informations ou modifient le comportement des fichiers et des répertoires. Cette couche supplémentaire est essentielle pour des fonctionnalités telles que les fichiers immuables, la compression transparente, la gestion des sauvegardes et les métadonnées personnalisées.
En général, on peut diviser ces attributs en deux groupes principaux : les attributs étendus système , qui modifient le comportement interne du fichier, et les attributs étendus utilisateur , qui servent à stocker les paires clé-valeur associées au fichier sans affecter ses permissions classiques.
Il est important de comprendre que tous les attributs ne sont pas pris en charge par tous les systèmes de fichiers . Certains indicateurs n'existent ou ne sont pertinents que sur ext2/3/4, et d'autres peuvent être en lecture seule (par exemple, certains attributs liés au chiffrement), ce qui signifie qu'ils peuvent seulement être consultés, et non modifiés.
Autre point essentiel : les attributs étendus ne sont pas toujours conservés automatiquement lors de la copie ou de la synchronisation de fichiers. À moins d’utiliser les options appropriées dans des outils comme `cp` , `tar` ou `rsync` , vous risquez de perdre ces attributs sans vous en rendre compte lors du déplacement de données entre disques ou serveurs.
Enfin, n'oubliez pas que la plupart des opérations sensibles sur les attributs système (comme le fait de rendre un fichier immuable) nécessitent des privilèges d'administrateur . Cela signifie que vous devrez utiliser la commande sudo ou travailler directement en tant que superutilisateur (root) pour appliquer certaines modifications.
Attributs système étendus avec chattr et lsattr
Dans les systèmes de fichiers ext2, ext3 et ext4, un ensemble d'attributs spéciaux est géré par deux commandes fondamentales : lsattr (pour afficher les attributs) et chattr (pour les modifier). Ces attributs permettent, par exemple, de rendre un fichier accessible uniquement en ajout, immuable, ou de synchroniser immédiatement ses modifications sur le disque.
Pour consulter les attributs d'un fichier spécifique, exécutez simplement la commande `lsattr` suivie du nom du fichier. Par exemple : `lsattr prueba.txt` . Le résultat affiche une série de caractères où chaque lettre active indique un attribut spécifique (par exemple, ` i` pour immuable, `a` pour ajout uniquement, `e` pour étendues, etc.).
Parmi les attributs système les plus courants, vous trouverez plusieurs options particulièrement utiles. Chacune d'elles modifie subtilement ou radicalement le comportement du fichier et, dans certains cas, elles s'avèrent indispensables pour éviter des catastrophes ou améliorer les performances.
Certains de ces attributs ne peuvent être modifiés qu'avec des autorisations d'administrateur, et dans d'autres cas, ils ne peuvent même pas être touchés depuis chattr (comme c'est le cas de l' attribut e , qui indique l'utilisation d'étendues et est géré en interne par le système de fichiers).
syntaxe de la commande chattr
La commande chattr suit une structure très simple mais puissante : chattr FICHIER… . À partir de là, vous utiliserez un opérateur et une liste d’options pour ajouter, supprimer ou définir des attributs spécifiques.
Le bloc `<attribute>` peut prendre trois valeurs possibles, qui modifient complètement l'effet de la commande. La première est le symbole `+` , utilisé pour ajouter de nouveaux attributs tout en préservant ceux existants . C'est l'option typique pour activer un attribut supplémentaire dans un fichier qui en possède déjà d'autres.
L'opérateur – fonctionne à l'inverse : il supprime les attributs spécifiés tout en conservant les autres. C'est la méthode habituelle pour supprimer, par exemple, l'immuabilité d'un fichier afin qu'il puisse être modifié ou supprimé ultérieurement.
Enfin, l' opérateur = est beaucoup plus radical : il remplace l'ensemble des attributs actuels par ceux que vous spécifiez . Autrement dit, seuls les attributs placés après le signe égal restent actifs, effaçant les précédents d'un seul coup.
L'opérateur est suivi d'une liste d'une ou plusieurs options, exprimées par des lettres. Vous pouvez les combiner sans espaces ; par exemple, +iA permet d'ajouter simultanément l'immuabilité et de désactiver l'horodatage. Ces modifications s'appliquent généralement à un ou plusieurs fichiers, voire à des répertoires entiers et à leur contenu si elles sont combinées avec des options récursives.
Attributs système les plus fréquemment utilisés
Parmi tous les drapeaux disponibles pour chattr , certains sont plus fréquemment utilisés au quotidien. Comprendre leur fonctionnement vous évitera bien des tracas :
L' attribut `a` active le mode d'ajout uniquement . Lorsqu'un fichier est marqué avec cet attribut, il ne peut être ouvert qu'en mode ajout : des données peuvent être ajoutées à la fin, mais le contenu existant ne peut être ni écrasé ni tronqué. Ceci est très courant pour les fichiers journaux que l'on souhaite empêcher de supprimer ou de modifier.
L' attribut `A` indique au système de ne pas mettre à jour l'horodatage d'accès (`atime`) lors de l'ouverture du fichier. Cela réduit les écritures disque inutiles et peut améliorer les performances sur les systèmes effectuant des opérations de lecture fréquentes, au prix de la perte des informations du dernier accès.
L' attribut `d` indique que le fichier doit être ignoré dans certaines sauvegardes , notamment lors d'opérations avec des outils comme ` dump` . Si vous marquez un fichier avec cet attribut, le programme qui le prend en compte ne l'inclura pas dans ses sauvegardes.
L'application de l' attribut `D` à un répertoire force la synchronisation de son contenu sur le disque à chaque écriture . Cela sécurise davantage les modifications apportées aux métadonnées du répertoire, mais au prix d'une augmentation des E/S, similaire à celle induite par les opérations synchrones.
L' attribut `i` est sans doute le plus connu : il rend le fichier immuable . Dans cet état, le fichier ne peut être ni supprimé, ni modifié, ni tronqué, ni lié ; il est seulement possible de consulter ou d'afficher son contenu. Pour supprimer cette marque, vous devez disposer des privilèges d'administrateur et utiliser la commande `chattr -i` avant de pouvoir le modifier.
L' option « S » force l'écriture synchrone des modifications apportées à ce fichier sur le disque . Chaque modification est immédiatement enregistrée, ce qui réduit le risque de perte de données en cas de panne, même si cela a un impact sur les performances.
L' attribut ` e` indique que le fichier utilise des étendues pour mapper les blocs sur le disque, une méthode plus efficace pour gérer l'espace. Cet attribut est géré automatiquement par le système de fichiers et ne peut généralement pas être modifié avec `chattr` ; il apparaît simplement lors de l'interrogation des attributs avec `lsattr`.
Il existe d'autres options moins courantes, telles que celles liées à la compression transparente, à la suppression sécurisée ou à la récupération après suppression, mais leur disponibilité réelle dépend fortement du noyau et du système de fichiers spécifique. Il est donc toujours conseillé de consulter la page de manuel de chattr pour votre distribution afin d'obtenir la liste complète et à jour.
Exemples pratiques avec chattr et lsattr
Pour connaître les attributs d'un fichier, la commande de référence est lsattr . Par exemple, si vous exécutez lsattr listaYT , vous pourriez voir une ligne comme ————–e—– listaYT , ce qui signifie que seul l' attribut e est actif.
Pour rendre ce fichier immuable et empêcher toute suppression ou modification accidentelle, utilisez la commande `sudo chattr +i listaYT` . Après l'exécution de cette commande, toute tentative de suppression ou de modification échouera, même avec `rm` , sauf si vous supprimez l'attribut `-i` au préalable.
Pour vérifier que la modification a bien été prise en compte, vous pouvez exécuter à nouveau la commande `lsattr listaYT`. Vous verrez alors un résultat similaire à `--i---e--- listaYT` . Le ` i` indique que le fichier est immuable et le restera jusqu'à ce que vous le désactiviez.
Pour lever cette protection, exécutez simplement `sudo chattr -i listaYT` . Le fichier se comportera alors comme un fichier normal : vous pourrez le supprimer, le renommer ou le modifier sans restriction.
Vous pouvez également combiner plusieurs attributs en un seul appel. Par exemple, `sudo chattr +iA todo.txt` marque le fichier comme immuable et indique au système de ne pas modifier son `atime` lors de son accès. Là encore, `lsattr` vous affichera en un coup d'œil la combinaison des options actives.
Si vous souhaitez conserver uniquement un attribut spécifique et supprimer tous les autres qui pourraient être définis, vous pouvez utiliser l'opérateur d'égalité. Par exemple, `sudo chattr =e todo.txt` activera uniquement l' attribut `e` . Dans certains cas, vous verrez cet exemple écrit entre guillemets pour éviter les problèmes d'interprétation par l'interpréteur de commandes, comme ` sudo chattr "=e" todo.txt .`
Attributs utilisateur étendus : métadonnées personnalisées
Outre les attributs système, Linux permet d'associer des attributs utilisateur étendus aux fichiers et répertoires . Ces attributs fonctionnent comme de petites paires clé-valeur stockées au sein même du système de fichiers. Ils sont très utiles pour stocker des informations supplémentaires sans modifier le contenu ni le nom du fichier.
Ces attributs utilisateur n'ont aucune incidence sur les autorisations ni sur l'accès au fichier. Leur but est d'enrichir les informations associées , par exemple en ajoutant un champ « auteur », une description, des étiquettes ou toute autre métadonnée utile à votre flux de travail.
Pour utiliser les attributs utilisateur étendus, deux conditions essentielles doivent être remplies : premièrement, le paquet attr doit être installé sur votre système ; deuxièmement, le système de fichiers correspondant doit être monté avec l’ option user_xattr activée, sans quoi ces métadonnées ne seront pas disponibles. Si vous travaillez également sous Windows, vous pouvez consulter la documentation relative à la modification des attributs de fichiers sous Windows.
Le paquetage attr inclut plusieurs outils essentiels pour la gestion de ces attributs : la commande attr elle-même, ainsi que les utilitaires setfattr et getfattr . Tous permettent d’ajouter, de lister, d’interroger ou de supprimer des attributs utilisateur de manière très directe.
Lorsque vous utilisez `setfattr` ou `getfattr` , n'oubliez pas que les noms d'attributs doivent être préfixés par un espace de noms , généralement `user`. Par exemple, si vous souhaitez enregistrer l'auteur d'un fichier, vous pouvez utiliser ` user.author` , `user.desc` , ou toute autre clé pertinente dans votre contexte.
La commande attr et ses principales options
La commande `attr` offre une interface très simple pour gérer ces métadonnées. Elle propose plusieurs options permettant de lister, modifier, lire ou supprimer les attributs d'un fichier donné.
L' option `-ql` liste tous les attributs d'un fichier. Elle est particulièrement utile pour visualiser d'un coup d'œil les métadonnées personnalisées associées à un fichier ou un répertoire, sans avoir à mémoriser les noms des clés.
Pour ajouter ou modifier un attribut , utilisez l' option `-qs` , qui définit la valeur d'une clé donnée. Elle est souvent combinée avec `-V` pour préciser la valeur à enregistrer, comme dans l'exemple classique de l'ajout d'un auteur.
Pour récupérer la valeur d'un attribut spécifique , utilisez l' option -qg . Celle-ci vous permet de spécifier la clé qui vous intéresse, et la commande renvoie la valeur enregistrée sans modifier le fichier.
Enfin, l' option -qr permet de supprimer les attributs utilisateur du fichier. C'est une façon de nettoyer les métadonnées dont vous n'avez plus besoin ou que vous souhaitez remplacer intégralement sans laisser de traces des anciennes valeurs.
Un exemple typique consiste à ajouter un attribut nommé « auteur » à un fichier nommé file1.txt . Vous pouvez le faire avec une commande comme `attr -qs author -V "SeguiNet" file1.txt` . Ensuite, si vous exécutez `attr -ql file1.txt` , vous verrez la liste des attributs associés, y compris le champ « auteur » que vous venez de définir.
Conserver les attributs lors de la copie, du déplacement et de la synchronisation des fichiers
L'un des aspects les plus délicats de la gestion des attributs étendus est qu'ils ne sont pas toujours automatiquement conservés lors de la copie, du déplacement ou de l'archivage de fichiers entre différents chemins, disques ou systèmes de fichiers. Faute de vigilance, des métadonnées ou des indicateurs importants peuvent être perdus sans le savoir.
Par exemple, lorsque vous utilisez `cp` pour copier des fichiers, si vous n'ajoutez aucune option supplémentaire, les attributs étendus risquent fort de ne pas être conservés . Pour éviter cela, vous pouvez utiliser l' option `--preserve=mode,ownership,timestamps,xattr` , qui indique explicitement que vous souhaitez conserver les permissions, le propriétaire, les horodatages et les attributs étendus.
Dans le cas de `mv` , les attributs sont généralement conservés par défaut tant que la destination se trouve sur un système de fichiers prenant en charge les attributs étendus. Si vous déplacez un fichier au sein du même système de fichiers, il est simplement renommé ou repositionné sans perte d'indicateurs ni d'attributs étendus.
Les outils d'archivage proposent également des options pour la gestion de ces métadonnées. Avec tar , par exemple, l'option `--xattrs` permet , lors de la création et de l'extraction d'une archive tar, de garantir l'inclusion des attributs étendus dans le paquet et leur restauration après extraction.
Si vous utilisez bsdtar , l'option appropriée pour préserver les attributs lors de l'extraction est `-p` , qui conserve les permissions spéciales et les métadonnées autorisées par le système. Il est toujours conseillé de consulter la documentation de l'outil que vous utilisez.
Pour la synchronisation entre systèmes, rsync est un classique, mais par défaut, il ne copie pas les attributs étendus. Pour activer cette fonctionnalité, il faut ajouter l' option `--xattrs` , qui indique d'inclure ces métadonnées dans le processus de synchronisation, en même temps que les autres informations du fichier.
Commandes et permissions de gestion de fichiers utiles au quotidien
Bien que l'accent soit mis ici sur les attributs, il serait absurde d'en parler sans rappeler certaines des commandes de base de gestion des fichiers et des répertoires qui sont constamment utilisées dans les environnements Linux, notamment dans les rôles d'administration système et de DevOps.
Pour afficher le contenu d'un répertoire plus en détail, vous pouvez utiliser `ls -lah` , qui affiche les permissions, le propriétaire, la taille dans un format lisible, ainsi que les fichiers cachés. Pour vous déplacer entre les dossiers, la commande principale est `cd` , et pour connaître votre position exacte, vous utilisez `pwd`.
Lors de la création d'une arborescence de répertoires, la commande `mkdir` permet de créer de nouveaux dossiers, tandis que `rmdir` sert à supprimer les répertoires vides. Pour supprimer des répertoires contenant du contenu, on utilise généralement `rm -rf` , mais avec une extrême prudence car la suppression s'effectue sans confirmation.
Pour manipuler des fichiers individuels, `cp` permet de les copier, `mv` de les déplacer ou de les renommer, et `touch` de créer des fichiers vides ou de mettre à jour leur horodatage. Pour afficher le contenu, `cat` affiche le fichier entier sur la sortie standard, tandis que `head` , `tail` et `less` permettent d'afficher des parties, les premières ou dernières lignes, ou de naviguer entre les pages.
En matière de permissions et de propriété, `chmod` permet de modifier les masques de lecture, d'écriture et d'exécution (symboliques ou numériques), tandis que `chown utilisateur:groupe fichier` change le propriétaire et le groupe associés au fichier. De plus, `umask` définit le masque par défaut pour les nouveaux fichiers créés.
En matière d'archivage et de compression, tar et zip sont des classiques. Des commandes comme `tar -cvf archive.tar dossier/` ou `tar -czvf archive.tar.gz dossier/` permettent de créer des sauvegardes simples, tandis que `tar -xvf` et `tar -xzvf` permettent d'en extraire le contenu. Pour les archives ZIP, `zip -r` et `unzip` fonctionnent de la même manière.
Il est également important de savoir manipuler les liens symboliques avec `ln -s` , les examiner avec `ls -l` et découvrir leur destination avec `readlink -f` . Enfin, pour vérifier l'espace disque disponible, `df -h` et `du -sh` sont deux outils indispensables.
Exercices et exemples sur les permissions et les attributs
Si vous débutez ou souhaitez consolider votre compréhension des concepts, il est conseillé de vous entraîner avec de courts exercices sur les permissions et propriétés de fichiers classiques avant d'aborder les attributs avancés. L'objectif est de vous familiariser avec des commandes comme `ls -l` , `chmod` et `chown` dans des cas concrets.
Par exemple, vous pouvez commencer par vérifier les attributs et les permissions du répertoire /home en exécutant une commande aussi simple que ls -l /home . Vous verrez alors les permissions octales traduites en lettres pour chaque sous-répertoire utilisateur.
Un autre exercice courant consiste à obtenir la représentation octale des permissions du fichier /etc/hosts . Après avoir exécuté la commande `ls -l /etc/hosts` , vous pouvez interpréter la chaîne de permissions. Si vous voyez une chaîne comme `rw-r-r-` , vous saurez qu'elle équivaut à 644 (6 pour le propriétaire, 4 pour le groupe et 4 pour tous les autres utilisateurs).
Il est également intéressant d'analyser des cas comme celui d'un fichier avec les permissions 755. En traduisant cela, on constate que le propriétaire dispose des droits rwx (7), le groupe des droits rx (5), et tous les autres utilisateurs des droits rx (5). Pour le groupe, cela signifie qu'il peut lire et exécuter le fichier , mais pas l'écrire ; le propriétaire, quant à lui, peut tout faire.
Un exercice légèrement plus avancé consiste à créer un fichier dans /root (par exemple, star.txt ), à en changer le propriétaire avec la commande chown , puis à ajuster ses permissions afin qu'il soit lisible et exécutable par tous . Pour accéder à /root, vous devrez élever vos privilèges (par exemple, avec sudo -i ), puis utiliser chmod pour définir les permissions appropriées (par exemple, 755 ou 555, selon que vous souhaitiez autoriser ou non le propriétaire à écrire dans le fichier).
Ces exercices vous aideront à bien comprendre comment les concepts de propriétaire, de groupe et d'autres utilisateurs s'articulent et comment les permissions sont représentées numériquement. Une fois ces notions acquises, l'étude des attributs système et utilisateur plus avancés vous semblera beaucoup plus naturelle.
La connaissance et la maîtrise de tous ces outils — de lsattr et chattr à attr , setfattr et getfattr , sans oublier les commandes de base de gestion des fichiers et des permissions — vous permettent d'avoir un contrôle très précis sur le comportement de vos fichiers sous Linux, aussi bien sur votre ordinateur personnel que sur les serveurs critiques.
Écrivain passionné par le monde des octets et de la technologie en général. J'aime partager mes connaissances à travers l'écriture, et c'est ce que je vais faire dans ce blog, vous montrer toutes les choses les plus intéressantes sur les gadgets, les logiciels, le matériel, les tendances technologiques et plus encore. Mon objectif est de vous aider à naviguer dans le monde numérique de manière simple et divertissante.