« Attributs étendus » : différence entre les versions

De Lea Linux
Aller à la navigation Aller à la recherche
(balises code)
 
(7 versions intermédiaires par 3 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
Les [[système de fichiers|systèmes de fichiers]] ''ext2'' et ''ext3'' (ainsi que ''reiserfs'' dans certaines conditions) offrent la possibilité de donner à des fichiers (fichiers réels ou répertoires) des '''attributs étendus''' qui s'ajoutent aux [[permissions|permissions classiques POSIX.1]], éventuellement complétées par les [[ACL|permissions étendues ACL]].
[[Catégorie:Administration système]]
 
= Modification des attributs étendus de ext2 et ext3 =
 
Les [http://www.lea-linux.org/documentations/index.php/Glossaire#syst.C3.A8me_de_fichier systèmes de fichiers] ''ext2'' et ''ext3'' (ainsi que ''reiserfs'' dans certaines conditions) offrent la possibilité de donner à des fichiers (fichiers réels ou répertoires) des '''attributs étendus''' (AÉ ou encore ''extended attributs'', EA) qui s'ajoutent aux [[permissions|permissions classiques POSIX.1]], éventuellement complétées par les [[ACL|permissions étendues ACL]].


<cadre type="alert">Seuls ces systèmes de fichiers offrant ces attributs, il n'est pas prudent ─ en terme de sécurité ─ de s'appuyer lourdement sur leur présence si l'on est amené à transférer fréquemment des données d'un système de fichiers ''ext'' à un autre. D'autre part, il convient de tester ces possibilités : toutes les versions du noyau n'en tiennent pas compte de la même manière.</cadre>
<cadre type="alert">Seuls ces systèmes de fichiers offrant ces attributs, il n'est pas prudent ─ en terme de sécurité ─ de s'appuyer lourdement sur leur présence si l'on est amené à transférer fréquemment des données d'un système de fichiers ''ext'' à un autre. D'autre part, il convient de tester ces possibilités : toutes les versions du noyau n'en tiennent pas compte de la même manière.</cadre>
Ligne 6 : Ligne 10 :
Il n'y a rien à faire pour des partitions en ''ext2'' ou ''ext3'', qui respectent nativement les attributs étendus.
Il n'y a rien à faire pour des partitions en ''ext2'' ou ''ext3'', qui respectent nativement les attributs étendus.


Chose assez peu connue, cependant, le système de fichiers ''reiserfs'' peut respecter les attributs étendus, à condition d'[[fstab|être monté]] avec l'option idoine <code>attrs</code>. Pour ce faire, les commandes suivantes sont appliquées :  
Chose assez peu connue, cependant, le système de fichiers ''reiserfs'' peut respecter les attributs étendus, à condition d'[[fstab|être monté]] avec l'option idoine <tt>attrs</tt>. Pour ce faire, les commandes suivantes sont appliquées :  
* sur une partition non encore montée : <code>mount -t reiserfs -o attrs /dev/partition /point/de/montage</code> ;  
* sur une partition non encore montée : <tt>mount -t reiserfs -o attrs /dev/partition /point/de/montage</tt> ;  
* sur une partition déjà montée : <code>mount -o attrs /point/de/montage</code> (remontage à la volée).
* sur une partition déjà montée : <tt>mount -o attrs /point/de/montage</tt> (remontage à la volée).


Pour que la prise en compte soit effective à chaque montage automatique (le cas échéant), il faut ajouter l'option dans ''[[fstab|/etc/fstab]]''. Par exemple :  
Pour que la prise en compte soit effective à chaque montage automatique (le cas échéant), il faut ajouter l'option dans ''[[fstab|/etc/fstab]]''. Par exemple :  
<code>
<tt>
/dev/hda1      /              reiserfs    defaults,acl,attrs 0      1
/dev/hda1      /              reiserfs    defaults,acl,attrs 0      1
</code>
</tt>


Enfin, on peut recompiler son noyau avec l'option <code>CONFIG_REISERFS_FS_XATTR = y</code> pour que le mode <code>attr</code> soit automatiquement appliqué lors du montage d'une partition en ''reiserfs''.
Enfin, on peut recompiler son noyau avec l'option <tt>CONFIG_REISERFS_FS_XATTR = y</tt> pour que le mode <tt>attr</tt> soit automatiquement appliqué lors du montage d'une partition en ''reiserfs''.


<cadre type="note">Noter que des fichiers d'une partition en ''reiserfs'' montée sans l'option <code>attrs</code> (ou la recompilation du noyau) peuvent recevoir des attributs étendus : ils seront bien enregistrés mais n'auront aucun effet. La commande de modification d'attributs, ''chattr'', ne renverra donc aucun message d'erreur sans pour autant que les attributs soient pris en compte. Ce détail peut avoir des répercussion pour la sécurité du système : on peut, à tort, croire protéger des fichiers.</cadre>
<cadre type="note">Noter que des fichiers d'une partition en ''reiserfs'' montée sans l'option <tt>attrs</tt> (ou la recompilation du noyau) peuvent recevoir des attributs étendus : ils seront bien enregistrés mais n'auront aucun effet. La commande de modification d'attributs, ''chattr'', ne renverra donc aucun message d'erreur sans pour autant que les attributs soient pris en compte. Ce détail peut avoir des répercussion pour la sécurité du système : on peut, à tort, croire protéger des fichiers.</cadre>


==Types d'attributs==
==Types d'attributs==
Ligne 24 : Ligne 28 :
:Protège le fichier contre la suppression de contenu : on ne peut que lui en ajouter.  
:Protège le fichier contre la suppression de contenu : on ne peut que lui en ajouter.  
;compressed (c), « compressé » ─ ''expérimental''
;compressed (c), « compressé » ─ ''expérimental''
:Le fichier est automatiquement compressé ─ si c'est utile, et avec un format de compression le plus efficace ─ quand il est stocké. La décompression lors de la lecture et la compression des données ajoutées au fichier par la suite se font à la volée, de manière transparente pour l'utilisateur (la commande <code>ls -l</code>, par exemple, montre la taille décompressée).  
:Le fichier est automatiquement compressé ─ si c'est utile, et avec un format de compression le plus efficace ─ quand il est stocké. La décompression lors de la lecture et la compression des données ajoutées au fichier par la suite se font à la volée, de manière transparente pour l'utilisateur (la commande <tt>ls -l</tt>, par exemple, montre la taille décompressée).  
:Cet attribut appliqué à un répertoire ne le compresse pas mais fait se compresser automatiquement tout nouveau fichier qu'on y crée.
:Cet attribut appliqué à un répertoire ne le compresse pas mais fait se compresser automatiquement tout nouveau fichier qu'on y crée.
;no dump (d), « pas de sauvegarde »
;no dump (d), « pas de sauvegarde »
:Un fichier ainsi marqué sera ignoré par la commande de sauvegarde ''dump'' (qui ne fonctionne que pour ''ext2'' et ''ext3''). Cet attribut est utile pour empêcher la sauvegarde par ''dump'' d'un fichier ou répertoire situés dans un système de fichiers monté avec l'option <code>dump</code> positionnée à <code>1</code> (cf ''[[fstab]]'').
:Un fichier ainsi marqué sera ignoré par la commande de sauvegarde ''dump'' (qui ne fonctionne que pour ''ext2'' et ''ext3''). Cet attribut est utile pour empêcher la sauvegarde par ''dump'' d'un fichier ou répertoire situés dans un système de fichiers monté avec l'option <tt>dump</tt> positionnée à <tt>1</tt> (cf ''[[fstab]]'').
;immutable (i), « immuable » ─ ''réservé à root''
;immutable (i), « immuable » ─ ''réservé à root''
:Protège le fichier contre toute modification (suppression, modification, déplacement, changements de permissions), même par root, et empêche qu'on crée un lien vers lui. Seule la modification des attributs étendus est permise à son propriétaire et seul root peut enlever l'attribut « immuable » d'un fichier.
:Protège le fichier contre toute modification (suppression, modification, déplacement, changements de permissions), même par root, et empêche qu'on crée un lien vers lui. Seule la modification des attributs étendus est permise à son propriétaire et seul root peut enlever l'attribut « immuable » d'un fichier.
:Cet attribut est sans doute l'un des plus intéressants.
:Cet attribut est sans doute l'un des plus intéressants.
;data journalling (j), « journalisation des données » ─ ''réservé à root''
;data journalling (j), « journalisation des données » ─ ''réservé à root''
:Cet attribut n'est utile qu'avec une partition en ''ext3'' montée avec les options de journalisation des données <code>data=ordered</code> (montage par défaut) ou <code>data=writeback</code> pour simuler une journalisation du type <code>data=journal</code>, où les données sont écrites dans le journal avant de l'être dans le fichier lui-même. Consulter <code>man mount 8</code> pour plus de détails sur les mécanismes de journalisation d'''ext3''.  
:Cet attribut n'est utile qu'avec une partition en ''ext3'' montée avec les options de journalisation des données <tt>data=ordered</tt> (montage par défaut) ou <tt>data=writeback</tt> pour simuler une journalisation du type <tt>data=journal</tt>, où les données sont écrites dans le journal avant de l'être dans le fichier lui-même. Consulter <tt>man mount 8</tt> pour plus de détails sur les mécanismes de journalisation d'''ext3''.  
:Sur une partition ''ext3'' en mode <code>data=journal</code>, cet attribut est ignoré, de même que sur les partitions en ''ext2'' et ''reiserfs'', le premier type n'étant pas journalisé, le second l'étant d'une manière incompatible.
:Sur une partition ''ext3'' en mode <tt>data=journal</tt>, cet attribut est ignoré, de même que sur les partitions en ''ext2'' et ''reiserfs'', le premier type n'étant pas journalisé, le second l'étant d'une manière incompatible.
;secure deletion (s), « effacement sécurisé »  ─ ''expérimental''
;secure deletion (s), « effacement sécurisé »  ─ ''expérimental''
:Un fichier portant cet attribut est non seulement « effacé » mais en plus les blocs qu'il occupait dans le système de fichiers sont recouverts de zéros pour éviter qu'on puisse récupérer les données malgré l'effacement.  
:Un fichier portant cet attribut est non seulement « effacé » mais en plus les blocs qu'il occupait dans le système de fichiers sont recouverts de zéros pour éviter qu'on puisse récupérer les données malgré l'effacement.  
Ligne 43 : Ligne 47 :
;no atime updates (A), « pas de mise à jour de la date de dernier accès »
;no atime updates (A), « pas de mise à jour de la date de dernier accès »
:À chaque fois qu'on accède à un fichier, la date du dernier accès est modifiée. Dans un système de fichiers dans lequel existent de nombreux fichiers auxquels on accède souvent (c'est le cas pour les serveurs de ''news''), ces modifications peuvent ralentir le système.  
:À chaque fois qu'on accède à un fichier, la date du dernier accès est modifiée. Dans un système de fichiers dans lequel existent de nombreux fichiers auxquels on accède souvent (c'est le cas pour les serveurs de ''news''), ces modifications peuvent ralentir le système.  
:Donner à un fichier l'attribut ''no atime updates'' permet d'éviter ce problème. Noter que la même option existe lorsque l'on monte une partition dans l'arborescence globale (<code>mount -o noatime</code>), option que l'on peut inscrire dans [[fstab|/etc/fstab]].
:Donner à un fichier l'attribut ''no atime updates'' permet d'éviter ce problème. Noter que la même option existe lorsque l'on monte une partition dans l'arborescence globale (<tt>mount -o noatime</tt>), option que l'on peut inscrire dans [[fstab|/etc/fstab]].
;synchronous directory updates (D), « mise à jour synchone des répertoires »
;synchronous directory updates (D), « mise à jour synchone des répertoires »
;synchronous updates (S), « mise à jour synchrone »
;synchronous updates (S), « mise à jour synchrone »
:Ces deux attributs ont un effet similaire. Le premier sert aux répertoires, le second aux fichiers. Les données des répertoires et fichiers concernés sont mises à jour dès qu'une modification a eu lieu (et non en différé, comme c'est le cas par défaut pour ''ext2'' et ''ext3''). C'est l'équivalent des options de montage <code>mount -o sync</code> et <code>mount -o dirsync</code> (qu'on peut aussi passer dans ''fstab'') mais pour une sous-partie de l'arborescence et non la partition entière.
:Ces deux attributs ont un effet similaire. Le premier sert aux répertoires, le second aux fichiers. Les données des répertoires et fichiers concernés sont mises à jour dès qu'une modification a eu lieu (et non en différé, comme c'est le cas par défaut pour ''ext2'' et ''ext3''). C'est l'équivalent des options de montage <tt>mount -o sync</tt> et <tt>mount -o dirsync</tt> (qu'on peut aussi passer dans ''fstab'') mais pour une sous-partie de l'arborescence et non la partition entière.
;top of directory hierarchy (T), « répertoire racine » ─ ''réservé à root''
;top of directory hierarchy (T), « répertoire racine » ─ ''réservé à root''
:Cet attribut indique au répartiteur de blocs Orlov (ou ''[http://lwn.net/Articles/14633/ Orlov block allocator]'', utilisé par le noyau Linux pour les systèmes de fichiers ''ext2'' et ''ext3'' depuis la version 2.5.46) que le répertoire concerné doit être considéré comme un répertoire racine de la hiérarchie des répertoires.  
:Cet attribut indique au répartiteur de blocs Orlov (ou ''[http://lwn.net/Articles/14633/ Orlov block allocator]'', utilisé par le noyau Linux pour les systèmes de fichiers ''ext2'' et ''ext3'' depuis la version 2.5.46) que le répertoire concerné doit être considéré comme un répertoire racine de la hiérarchie des répertoires.  
Ligne 58 : Ligne 62 :
Cette commande s'utilise quasiment comme un ''chmod'' simplifié : en effet, les attributs ne peuvent être indiqués que sous forme symbolique (dont les codes sont donnés ci-dessus) et non au moyen d'un éventuel nombre octal.
Cette commande s'utilise quasiment comme un ''chmod'' simplifié : en effet, les attributs ne peuvent être indiqués que sous forme symbolique (dont les codes sont donnés ci-dessus) et non au moyen d'un éventuel nombre octal.


Ainsi, pour donner un attibut, on utilise la commande suivie de + et du code ; par exemple, rendre un fichier « immuable » se fait avec la commande (en root) :
Ainsi, pour ajouter ou donner un attibut, on utilise la commande suivie de <tt>+</tt> et du code ; par exemple, rendre un fichier « immuable » se fait avec la commande (en root) :
<code>chattr +i fichier
<tt>chattr +i fichier
</code>
</tt>


Retirer un attribut requiert l'opérateur <code>-</code>. La commande pour enlever l'attribut « immuable » est donc :  
Retirer un attribut requiert l'opérateur <tt>-</tt>. La commande pour enlever l'attribut « immuable » est donc :  
<code>chattr -i fichier
<tt>chattr -i fichier
</code>
</tt>


Enfin, pour faire en sorte qu'un fichier n'ait que l'attribut « immuable » :
Enfin, pour faire en sorte qu'un fichier n'ait que le ou les attributs mentionnés :
<code>chattr =i fichier
<tt>chattr =i fichier
</code>
</tt>


La commande peut être utilisée de manière récursive au moyen de l'option <code>-R</code> : pour rendre toute une hiérarchie immuable, il suffit de :  
La commande peut être utilisée de manière récursive au moyen de l'option <tt>-R</tt> : pour rendre toute une hiérarchie immuable, il suffit de :  
<code>chattr -R + i répertoire/
<tt>chattr -R +i répertoire/
</code>
</tt>


===lsattr===
===lsattr===
Cette commande fonctionne comme ''ls'' et prend les options <code>-R</code> (listage récursif), <code>-a</code> (tout afficher) et <code>-d</code> (lister les répertoires comme des fichiers), entre autres ; ''lsattr'' peut afficher des attributs qu'on ne peut modifier avec ''chattr''
Cette commande fonctionne comme ''ls'' et prend les options <tt>-R</tt> (listage récursif), <tt>-a</tt> (tout afficher) et <tt>-d</tt> (lister les répertoires comme des fichiers), entre autres ; ''lsattr'' peut afficher des attributs qu'on ne peut modifier avec ''chattr''


L'affichage est simple : chaque attribut du fichier est représenté par son code, une absence d'attribut l'étant par un <code>-</code>, à la manière du codage des permissions pratiqué par ''ls -l'' (<code>-rw-r--r--</code>).
L'affichage est simple : chaque attribut du fichier est représenté par son code, une absence d'attribut l'étant par un <tt>-</tt>, à la manière du codage des permissions pratiqué par ''ls -l'' (<tt>-rw-r--r--</tt>).


Ainsi :  
Ainsi :  
<code>chattr +ASacDdijsTtu fichier
<tt>chattr +ASacDdijsTtu fichier
lsattr fichier
lsattr fichier
     suS-iadAc----j-tT fichier</code>
     suS-iadAc----j-tT fichier</tt>
L'attribut <code>D</code> n'a pas été appliqué, puisque le fichier n'est pas un répertoire.  
L'attribut <tt>D</tt> n'a pas été appliqué, puisque le fichier n'est pas un répertoire.  


Les autres valeurs que peut indiquer ''lsattr'' s'intercalent dans les espaces vacants : ''I'' (fichier dépendant d'un répertoire indexé par HTree), ''E'' (fichier dont la compression est erronée ; dépend directement de l'attribut ''<code>c</code>ompressed''), ''X'' (fichier compressé dont une partie des données brutes peut être consultée directement ; dépend de <code>c</code>) et ''Z'' (fichier compressé corrompu ; '<code>c</code>). Ce sont des valeurs non modifiables ajoutées automatiquement aux fichiers. Les trois dernières ne sont toujours pas implémentées.
Les autres valeurs que peut indiquer ''lsattr'' s'intercalent dans les espaces vacants : ''I'' (fichier dépendant d'un répertoire indexé par HTree), ''E'' (fichier dont la compression est erronée ; dépend directement de l'attribut ''<tt>c</tt>ompressed''), ''X'' (fichier compressé dont une partie des données brutes peut être consultée directement ; dépend de <tt>c</tt>) et ''Z'' (fichier compressé corrompu ; '<tt>c</tt>). Ce sont des valeurs non modifiables ajoutées automatiquement aux fichiers. Les trois dernières ne sont toujours pas implémentées.
 
Noter que ''ls'' n'indique pas la présence éventuelle d'attributs étendus et que ''find'' ne peut rechercher des fichiers selon ce critère.


===ls, cp, mv===
===ls, cp, mv===
Ligne 95 : Ligne 101 :
* le logiciel de sauvegarde est compatible avec les attributs.
* le logiciel de sauvegarde est compatible avec les attributs.


Dans le second cas, il convient de ne pas utiliser ''cpio'', ''tar'' ou ''rsync'', par exemple.
Dans le second cas, il convient de ne pas utiliser ''cpio'', ''tar'' ou ''rsync'', par exemple, mais une application comme ''star''.
 
 
<br/>
<br/>
'''<b>[[Admin-index|@ Retour à la rubrique Administration système]]</b>'''
<br/>




{{Copy|28.10.05|Vincent Ramos|FDL}}
{{Copy|27.10.05|Vincent Ramos|FDL}}

Dernière version du 21 mai 2012 à 21:13


Modification des attributs étendus de ext2 et ext3

Les systèmes de fichiers ext2 et ext3 (ainsi que reiserfs dans certaines conditions) offrent la possibilité de donner à des fichiers (fichiers réels ou répertoires) des attributs étendus (AÉ ou encore extended attributs, EA) qui s'ajoutent aux permissions classiques POSIX.1, éventuellement complétées par les permissions étendues ACL.

<cadre type="alert">Seuls ces systèmes de fichiers offrant ces attributs, il n'est pas prudent ─ en terme de sécurité ─ de s'appuyer lourdement sur leur présence si l'on est amené à transférer fréquemment des données d'un système de fichiers ext à un autre. D'autre part, il convient de tester ces possibilités : toutes les versions du noyau n'en tiennent pas compte de la même manière.</cadre>

Mise en place

Il n'y a rien à faire pour des partitions en ext2 ou ext3, qui respectent nativement les attributs étendus.

Chose assez peu connue, cependant, le système de fichiers reiserfs peut respecter les attributs étendus, à condition d'être monté avec l'option idoine attrs. Pour ce faire, les commandes suivantes sont appliquées :

  • sur une partition non encore montée : mount -t reiserfs -o attrs /dev/partition /point/de/montage ;
  • sur une partition déjà montée : mount -o attrs /point/de/montage (remontage à la volée).

Pour que la prise en compte soit effective à chaque montage automatique (le cas échéant), il faut ajouter l'option dans /etc/fstab. Par exemple : /dev/hda1 / reiserfs defaults,acl,attrs 0 1

Enfin, on peut recompiler son noyau avec l'option CONFIG_REISERFS_FS_XATTR = y pour que le mode attr soit automatiquement appliqué lors du montage d'une partition en reiserfs.

<cadre type="note">Noter que des fichiers d'une partition en reiserfs montée sans l'option attrs (ou la recompilation du noyau) peuvent recevoir des attributs étendus : ils seront bien enregistrés mais n'auront aucun effet. La commande de modification d'attributs, chattr, ne renverra donc aucun message d'erreur sans pour autant que les attributs soient pris en compte. Ce détail peut avoir des répercussion pour la sécurité du système : on peut, à tort, croire protéger des fichiers.</cadre>

Types d'attributs

Selon la norme POSIX.1, tout fichier possède les permissions en lecture, écriture et exécution. On peut leur adjoindre des attributs supplémentaires, qui s'imposent à tous les utilisateurs (dont root, qui peut cependant annuler ces attributs) quand ils modifient les actions qu'on peut avoir sur eux. Certains attributs sont encore expérimentaux (octobre 2005) et nécessitent de patcher le noyau pour qu'ils aient un effet réel.

append only (a), « ajouter seulement » ─ réservé à root
Protège le fichier contre la suppression de contenu : on ne peut que lui en ajouter.
compressed (c), « compressé » ─ expérimental
Le fichier est automatiquement compressé ─ si c'est utile, et avec un format de compression le plus efficace ─ quand il est stocké. La décompression lors de la lecture et la compression des données ajoutées au fichier par la suite se font à la volée, de manière transparente pour l'utilisateur (la commande ls -l, par exemple, montre la taille décompressée).
Cet attribut appliqué à un répertoire ne le compresse pas mais fait se compresser automatiquement tout nouveau fichier qu'on y crée.
no dump (d), « pas de sauvegarde »
Un fichier ainsi marqué sera ignoré par la commande de sauvegarde dump (qui ne fonctionne que pour ext2 et ext3). Cet attribut est utile pour empêcher la sauvegarde par dump d'un fichier ou répertoire situés dans un système de fichiers monté avec l'option dump positionnée à 1 (cf fstab).
immutable (i), « immuable » ─ réservé à root
Protège le fichier contre toute modification (suppression, modification, déplacement, changements de permissions), même par root, et empêche qu'on crée un lien vers lui. Seule la modification des attributs étendus est permise à son propriétaire et seul root peut enlever l'attribut « immuable » d'un fichier.
Cet attribut est sans doute l'un des plus intéressants.
data journalling (j), « journalisation des données » ─ réservé à root
Cet attribut n'est utile qu'avec une partition en ext3 montée avec les options de journalisation des données data=ordered (montage par défaut) ou data=writeback pour simuler une journalisation du type data=journal, où les données sont écrites dans le journal avant de l'être dans le fichier lui-même. Consulter man mount 8 pour plus de détails sur les mécanismes de journalisation d'ext3.
Sur une partition ext3 en mode data=journal, cet attribut est ignoré, de même que sur les partitions en ext2 et reiserfs, le premier type n'étant pas journalisé, le second l'étant d'une manière incompatible.
secure deletion (s), « effacement sécurisé » ─ expérimental
Un fichier portant cet attribut est non seulement « effacé » mais en plus les blocs qu'il occupait dans le système de fichiers sont recouverts de zéros pour éviter qu'on puisse récupérer les données malgré l'effacement.
Normalement, effacer un fichier consiste seulement à détruire toute référence vers l'espace occupé par les données de ce fichier dans la partition. Il n'est cependant pas question de détruire physiquement les données elles-mêmes, sauf si le fichier possède cet attribut, auquel cas non seulement il n'est plus accessible mais en plus tous ses bits sont réécrits.
no tail-merging (t)
undeletable (u), « ineffaçable » ─ expérimental
Lors d'un effacement, les références vers l'espace du système de fichiers qui contient les données sont détruites, mais pas les données. Sans ces références, cependant, l'espace anciennement réservé peut être utilisé par des fichiers nouvellement créés ou ayant été augmentés. Dans ce cas, il n'est plus possible de récupérer les données en question.
L'attribut « ineffaçable » permet de préserver les blocs qui contenaient les données de façon à ce qu'on puisse les récupérer si besoin est. L'espace-disque n'est donc pas libéré.
no atime updates (A), « pas de mise à jour de la date de dernier accès »
À chaque fois qu'on accède à un fichier, la date du dernier accès est modifiée. Dans un système de fichiers dans lequel existent de nombreux fichiers auxquels on accède souvent (c'est le cas pour les serveurs de news), ces modifications peuvent ralentir le système.
Donner à un fichier l'attribut no atime updates permet d'éviter ce problème. Noter que la même option existe lorsque l'on monte une partition dans l'arborescence globale (mount -o noatime), option que l'on peut inscrire dans /etc/fstab.
synchronous directory updates (D), « mise à jour synchone des répertoires »
synchronous updates (S), « mise à jour synchrone »
Ces deux attributs ont un effet similaire. Le premier sert aux répertoires, le second aux fichiers. Les données des répertoires et fichiers concernés sont mises à jour dès qu'une modification a eu lieu (et non en différé, comme c'est le cas par défaut pour ext2 et ext3). C'est l'équivalent des options de montage mount -o sync et mount -o dirsync (qu'on peut aussi passer dans fstab) mais pour une sous-partie de l'arborescence et non la partition entière.
top of directory hierarchy (T), « répertoire racine » ─ réservé à root
Cet attribut indique au répartiteur de blocs Orlov (ou Orlov block allocator, utilisé par le noyau Linux pour les systèmes de fichiers ext2 et ext3 depuis la version 2.5.46) que le répertoire concerné doit être considéré comme un répertoire racine de la hiérarchie des répertoires.
L'allocateur de blocs est un processus propre au système de fichier permettant de répartir les blocs de données des fichiers dans l'espace disponible tout en garantissant une qu'il ne se produira pas une trop grande fragmentation. Pour cela, on place généralement dans un même groupe de cylindres du disque dur les blocs de fichiers dépendant d'un même répertoire. Dans le cas contraire, les données risquent d'être éparpillées, voire fragmentées (les blocs d'un même fichier sont alors répartis sur plusieurs cylindres non contigus). On ne peut cependant prévoir à l'avance de quel espace aura besoin un répertoire racine. Il pourrait ne contenir que peu de fichiers ou, au contraire, une arborescence complète et chargée. Le répartiteur Orlov prend donc soin d'éloigner le plus possible les uns des autres les répertoires racines, pour qu'ils disposent d'un espace suffisant où croître.
Ajouter cet attribut à un répertoire permet au répartiteur de le traiter comme un répertoire racine, même s'il n'en est pas un, et de le placer loin des autres répertoires racines. Il est donc utile avec des sous-arborescences de fichiers complexes et lourdes qui risqueraient d'être fragmentées.

Commandes

ll existe deux commandes pour accéder aux attributs étendus : lsattr (list attributes, « lister les attributs ») chattr (change attributes, « changer les attributs »). Toutes deux sont incluses dans le paquetage e2fsprogs.

chattr

Cette commande s'utilise quasiment comme un chmod simplifié : en effet, les attributs ne peuvent être indiqués que sous forme symbolique (dont les codes sont donnés ci-dessus) et non au moyen d'un éventuel nombre octal.

Ainsi, pour ajouter ou donner un attibut, on utilise la commande suivie de + et du code ; par exemple, rendre un fichier « immuable » se fait avec la commande (en root) : chattr +i fichier

Retirer un attribut requiert l'opérateur -. La commande pour enlever l'attribut « immuable » est donc : chattr -i fichier

Enfin, pour faire en sorte qu'un fichier n'ait que le ou les attributs mentionnés : chattr =i fichier

La commande peut être utilisée de manière récursive au moyen de l'option -R : pour rendre toute une hiérarchie immuable, il suffit de : chattr -R +i répertoire/

lsattr

Cette commande fonctionne comme ls et prend les options -R (listage récursif), -a (tout afficher) et -d (lister les répertoires comme des fichiers), entre autres ; lsattr peut afficher des attributs qu'on ne peut modifier avec chattr

L'affichage est simple : chaque attribut du fichier est représenté par son code, une absence d'attribut l'étant par un -, à la manière du codage des permissions pratiqué par ls -l (-rw-r--r--).

Ainsi : chattr +ASacDdijsTtu fichier lsattr fichier

   suS-iadAc----j-tT fichier

L'attribut D n'a pas été appliqué, puisque le fichier n'est pas un répertoire.

Les autres valeurs que peut indiquer lsattr s'intercalent dans les espaces vacants : I (fichier dépendant d'un répertoire indexé par HTree), E (fichier dont la compression est erronée ; dépend directement de l'attribut compressed), X (fichier compressé dont une partie des données brutes peut être consultée directement ; dépend de c) et Z (fichier compressé corrompu ; 'c). Ce sont des valeurs non modifiables ajoutées automatiquement aux fichiers. Les trois dernières ne sont toujours pas implémentées.

Noter que ls n'indique pas la présence éventuelle d'attributs étendus et que find ne peut rechercher des fichiers selon ce critère.

ls, cp, mv

Les commandes classiques de listage, copie et déplacement ne gèrent pas les attributs étendus, soit qu'elles ne les affichent pas (ls), soit qu'elles les ignorent.

Sauvegarde des données

Sauvegarder des données dotées d'attributs étendus ne peut se faire correctement que si :

  • le système de fichiers de stockage gère lui-même les attributs ;
  • le logiciel de sauvegarde est compatible avec les attributs.

Dans le second cas, il convient de ne pas utiliser cpio, tar ou rsync, par exemple, mais une application comme star.




@ Retour à la rubrique Administration système


Copyright

© 27.10.05 Vincent Ramos

Tête de GNU Vous avez l'autorisation de copier, distribuer et/ou modifier ce document suivant les termes de la GNU Free Documentation License, Version 1.2 ou n'importe quelle version ultérieure publiée par la Free Software Foundation; sans section invariante, sans page de garde, sans entête et sans page finale.