On Mon, Dec 02, 2002 at 05:32:23PM +0100, Nicolas C. wrote:
> J'aimerai savoir pourquoi �a ne fonctionne pas avec les syst�mes de
> fichiers journalis�s et s'il existe un remplacement fiable � shred
> pour l'Ext3.

Dans ext2, un fichier est compos� d'une liste de secteurs
sur disque. Quand tu rallonges le fichier, le syst�me
allonge la liste. Quand tu r�-�cris par dessus le d�but du
fichier, le syst�me r�-utilise les m�me secteurs.

shred (je suppose... je connais pas shred, mais je
connaissais un truc �quivalent pour DOS) va donc r�ecrire
n'importe quoi par dessus tout le fichier avant de
l'effacer. Comme �a, les secteurs sont remplis de n'importe
quoi. (Dans le cas normal, la liste des secteurs est
d�truite et les secteurs sont marqu�s comme libres, mais les
donn�es sont toujours l�... d'o� probl�me de s�curit�,
encore que �a se discute: il faudra avoir acc�s en root �
/dev/hdax, et dans ce cas il y a des fa�on plus simples de
voler des donn�es confidentielles. Mais bon, le cas se
d�fend pour des supports amovibles).

Je ne suis pas s�r comment ext3 marche dans le d�tail, mais
de fa�on g�n�rale, les syst�mes de fichier journalis�s
tentent de conserver la coh�rence. C'est � dire: si tu
commence � r�ecrire le d�but d'un fichier, et il y a une
panne de courant, tu veux que ton fichier contienne soit
l'ancienne version, soit la nouvelle _termin�e_, mais pas un
m�lange des deux (ce qui arrive avec ext2 ou FAT).

Donc, le syst�me commence par �crire les nouvelles donn�es,
puis _ensuite_ change la liste des secteurs qui compose le
fichier. Bien �videment, il devient alors impossible de
r�ecrire sur le _m�me_ secteur du d�but de fichier... et le
principe de shred ne marche pas.

De fa�on (presque) graphique:
On a un fichier qui est constitu� d'une suite de secteurs:

  32 -> 56 -> 24 -> 78

Si tu r��crit le d�but du fichier, ext2 r�ecrit dans le
secteur 32. Mais ext3 alloue un nouveau secteur:

  32 -> 56 -> 24 -> 78
  41

puis �crit dans le secteur, puis met � jour la table du
fichier:

  32 /-> 56 -> 24 -> 78
  41/

Et finalement lib�re l'ancien:

  41 -> 56 -> 24 -> 78

Il suffirait que ext3 r�-�crive 32 pour que le probl�me ne
se pose pas...


/Y
[Attention: je ne sais _pas_ comment ext3 marche, c'est ce
que je suppose sachant comment ext2 et JFFS marchent. En
fait, �a m'�tonnerait que �a se passe exactement comme �a,
car les fichiers se fragmenteraient beaucoup. C'est l'id�e
qui compte...]

Répondre à