Niveau :      
Résumé : lsattr ; chattr

Vos fichiers contiennent plus d'informations que vous le ne pensez. Il n'y a pas que les données du fichier, il y a ses méta données, le nom, les droits, les acl, les attributs et les attributs étendus.

Comme vous connaissez déja le nom (mv, rm ...), le contenu (cat, vi ...) et les droits (ls -l, chmod ...) nous allons nous intéresser aux attributs.

Par défaut les attributs d'un fichier ne sont pas positionnés. Pour lire ces attributs, il faut utiliser la commande lsattr.

$ lsattr fichier

Et pour les changer chattr (vous devez être root) :

$ chattr +i fichier

L'utilisation en est simple, option -R pour la récursivité et la liste des attributs précédée de '+' ou '-' selon que vous voulez en ajouter ou en supprimer. Un attribut a dans certains cas un équivalent en option de montage. Mais l'attribut s'applique uniquement aux fichiers concernés.

Chaque attribut fait un caractère. Le plus connu et le plus intéressant est celui de l'exemple 'i'. Il permet de rendre un fichier strictement non modifiable, même par root. A quoi cela sert-il si root peut faire chattr -i ? Tout simplement à contrecarrer les plans d'une commande qu'on ne maîtrise pas complètement. Si pour une quelconque raison vous avez compilé votre /bin/ps et que vous vouliez qu'aucun upgrade ne puisse jamais le remplacer par mégarde, donnez lui l'attribut 'i'.

Toujours plus

Si les autres attributs sont moins connus c'est aussi qu'ils ont moins souvent d'utilité. Mais certains ont quand même un petit intérêt.

L'attribut 'a' est utile pour les fichiers fonctionnant comme des fichiers de logs. Il permet de n'autoriser que l'ajout de données à la fin du fichier (comme les listes de courses). C'est surtout utile pour les fichiers partagés entre plusieurs utilisateurs si vous voulez éviter les mauvaises blagues de suppression de lignes ou de fichier tout en laissant les droits d'écriture aux utilisateurs.

L'attribut 'A' est intéressant sur toute une arborescence. C'est l'équivalent de l'option noatime des systèmes de fichier. Il permet de faire en sorte que la date du dernier accès ne soit pas mise à jour lors des accès. C'est utile sur les serveurs NFS très chargés pour gagner du temps processeur. C'est aussi utile sur les disques où l'écriture est très lente ou limitée (flash), ou pour les originaux qui mettent leur journal sur un disque externe.

Pour les fichiers que vous ne voulez absolument pas perdre, il y a 'S' (écriture synchronisée sur le disque) et 'j' écriture des données (et pas seulement des métadonnées) dans le fichier journal. Mais bon, vous pouvez aussi utiliser les options sync et journal=data de votre système de fichier.

Nous avons ensuite les attributs qui pourraient être utiles mais qui ne sont pas implémentées dans ext2 et ext3 : 's' et 'u'. 's' permet de sécuriser la suppression, les données sont réécrites (et pas seulement les méta données). 'u' au contraire permet de ne pas effacer totalement les données pour rendre le fichier récupérable.

Et enfin nous avons des attributs peu utiles ou non implémentés. Vous les trouverez dans man 1 chattr.