Page suivantePage précédenteTable des matières

2. Comment ne pas supprimer de fichiers

Il est vital de se rappeler que Linux n'est pas semblable à MS-DOS en matière de récupération de données. Pour MS-DOS (et son bâtard Windows 95), il est généralement très simple de récupérer un fichier supprimé : le « système d'exploitation » (il faut le dire vite) est même accompagné d'un utilitaire qui automatise la procédure. Ce n'est pas le cas de Linux.

Donc... règle numéro un (ou première directive, si vous préférez) :

FAITES DES SAUVEGARDES

peu importe comment. Pensez à toutes vos données. Peut-être, comme moi, conservez-vous plusieurs années d'archives de messages, contacts, documents sur votre ordinateur. Pensez au chamboulement dans votre vie si vous étiez victime d'une panne de disque catastrophique, ou -- pire encore ! -- si un cracker nettoyait votre disque sans vergogne. Ce n'est pas si improbable ; j'ai correspondu avec un bon nombre de gens placés dans une telle situation. J'exhorte les utilisateurs sensés de Linux de sortir acheter un périphérique de sauvegarde, de planifier leurs sauvegardes dans un emploi du temps digne de ce nom et de s'y conformer. En ce qui me concerne, je me sers d'un disque dédié sur une deuxième machine, et régulièrement je fais un mirroir de mon répertoire personnel par le réseau. Pour plus d'information sur la planification des sauvegardes, lisez Frisch (1995) (voir la section Bibliographie et remerciements).

En l'absence de sauvegardes, que faire (en fait, même en présence de sauvegardes : dans le cas de données importantes, la ceinture et les bretelles, ce n'est pas du luxe) ?

Essayez de donner aux fichiers importants les droits 440 (ou moins) : ne pas vous laisser les droits en écriture provoque une demande de confirmation explicite de rm avant la destruction (mais si je veux supprimer récursivement un répertoire avec rm -r, j'interromprai le programme dès la première ou deuxième demande de confirmation pour relancer la commande avec rm -rf).

Un bon truc, pour les fichiers importants, est de créer un lien physique vers eux dans un répertoire caché. J'ai entendu parler d'un administrateur système qui, périodiquement, supprimait accidentellement /etc/passwd (et par là-même détruisait à moitié le système). Un des remèdes fut de lancer en tant que root quelque chose comme :

# mkdir /.backup
# ln /etc/passwd /.backup

Il est alors assez difficile de supprimer complètement le contenu du fichier : si vous dites

# rm /etc/passwd

alors

# ln /.backup/passwd /etc

permettra de le récupérer. Naturellement, cela ne couvre pas le cas où vous avez écrasé le contenu du fichier par un autre fichier, donc de toutes façons gardez vos sauvegardes.

Dans un système de fichiers ext2, il et possible d'utiliser les attributs ext2 dans le but de protéger ses données. Ces attributs sont manipulés à l'aide de la commande chattr. Il y a un attribut « ajout seulement » (append-only) : il est possible d'ajouter des données à un fichier ayant cet attribut, mais pas de le supprimer, et le contenu du fichier ne peut pas être écrasé. Si un répertoire a cet attribut, tous les fichiers et répertoires qu'il contient peuvent être normalement modifiés, mais aucun fichier ne peut être supprimé. Cet attribut peut être placé en tapant

$ chattr +a FICHIER...

Il existe aussi un attribut « immuable » (immutable), qui ne peut être placé ou retiré qu'en tant que root. Un fichier ou répertoire ayant cet attribut ne peut être ni modifié, ni supprimé, ni renommé, ni se faire ajouter un lien (physique). Il peut être placé comme suit :

# chattr +i FICHIER...

Ext2fs fournit également l'attribut « récupérable » (undeletable, option +u de chattr). Si un fichier ayant cet attribut est supprimé, mais pas réellemnt réutilisé, il est déplacé vers un « endroit sûr » afin d'être supprimé plus tard. Hélas, cette fonctionnalité n'est pas encore implantée dans les noyaux courants ; et bien que, par la passé, il y ait eu un peu d'intérêt concernant une implantation éventuelle, elle n'est pas (à ma connaissance) disponible pour les noyaux actuels.

Certains défendent l'idée de faire de rm un alias ou une fonction du gestionnaire de commandes qui exécute en fait rm -i (qui demande confirmation pour tous les fichiers à supprimer). En effet, certaines versions de la distribution Red Hat le font par défaut pour tous les utilisateurs, y compris root. En ce qui me concerne, je ne supporte pas les logiciels incapables de tourner tous seuls, je ne le fais donc pas. Par ailleurs, un jour ou l'autre, vous ferez tourner le programme en mode mono-utilisateur, ou utiliserez un gestionnaire de commandes différent, ou simplement une autre machine, où votre fonction rm n'existera pas. Si vous vous attendez à une confirmation, il est assez facile d'oublier où vous êtes et spécifier un peu trop de fichiers à supprimer. De même, les divers scripts et programmes servant à remplacer rm sont, à mon humble avis, très dangereux.

Une solution un peu meilleure serait de commencer à utiliser un paquetage qui manipulerait une destruction « recyclable » en fournissant une commande qui ne s'appellerait pas rm. Pour plus de détails, voir Peek et al (1993) (voir la section Bibliographie et remerciements). Cette solution a cependant l'inconvénient d'encourager les utilisateurs à avoir une attitude nonchalante vis-à-vis de la destruction, au lieu de l'attitude circonspecte qui est souvent nécessaire sous Unix.


Page suivantePage précédenteTable des matières