Après avoir obtenu le descripteur de fichier, la première chose que ShaKe fait est de tenter de prendre un verrou dessus (dans investigate (char *name, struct law *l), ligne 93 de judge.c : /* Put the lock */
if (l->locks && -1 == flock (a->fd, LOCK_EX | LOCK_NB))
{
error (0, errno, "%s: failed to acquire a lock", a->name);
goto freeall;
}).
Le problème ne peut donc se poser qu'avec les applications qui n'honorent pas les verrous. Le seul moyen de s'en prémunir serait d'activer le "Mandatory Lock", qui force les applications à respecter le verrous (documenté dans /usr/src/linux/Documentation/mandatory.txt ), mais de mon point de vue c'est un hack et je ne l'activerais que si c'est vraiment nécessaire.
Il y a trois autres sécurité pour éviter les problèmes de corruption :
La fonction capture (struct accused *a, struct law *l), à la ligne 177 de executive.c qui est appellée avant les opérations d'écriture masque les signaux (notement).
Après une opération de défragmentation, il vérifie rapidement que rien ne manque.
À tout moment, une copie du fichier en cours d'écriture est disponible. Si ShaKe échoue (par exemple à allouer la mémoire) il indique son emplacement puis se suicide.
[^] # Re: en cours d'utilisation
Posté par un_brice (site web personnel) . En réponse à la dépêche ShaKe, un défragmenteur pour GNU/Linux. Évalué à 5.
/* Put the lock */
if (l->locks && -1 == flock (a->fd, LOCK_EX | LOCK_NB))
{
error (0, errno, "%s: failed to acquire a lock", a->name);
goto freeall;
}).
Le problème ne peut donc se poser qu'avec les applications qui n'honorent pas les verrous. Le seul moyen de s'en prémunir serait d'activer le "Mandatory Lock", qui force les applications à respecter le verrous (documenté dans /usr/src/linux/Documentation/mandatory.txt ), mais de mon point de vue c'est un hack et je ne l'activerais que si c'est vraiment nécessaire.
Il y a trois autres sécurité pour éviter les problèmes de corruption :
La fonction capture (struct accused *a, struct law *l), à la ligne 177 de executive.c qui est appellée avant les opérations d'écriture masque les signaux (notement).
Après une opération de défragmentation, il vérifie rapidement que rien ne manque.
À tout moment, une copie du fichier en cours d'écriture est disponible. Si ShaKe échoue (par exemple à allouer la mémoire) il indique son emplacement puis se suicide.